http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/ReefFunctionalTest.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/ReefFunctionalTest.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/ReefFunctionalTest.cs
new file mode 100644
index 0000000..deef323
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/ReefFunctionalTest.cs
@@ -0,0 +1,200 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Timers;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Microsoft.WindowsAzure.Storage;
+using Microsoft.WindowsAzure.Storage.Blob;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.bridge;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Logging;
+using Timer = System.Timers.Timer;
+
+namespace Org.Apache.REEF.Tests.Functional
+{
+    public class ReefFunctionalTest
+    {
+        protected const string _stdout = "driver.stdout";
+        protected const string _stderr = "driver.stderr";
+        protected const string _cmdFile = "run.cmd";
+        protected const string _binFolder = "bin";
+        // TODO: we will need a proper way to hide this when we are OSS'ed
+        protected const string _blobStorageConnectionString =
+            
@"DefaultEndpointsProtocol=https;AccountName=reeftestlog;AccountKey=cuUmPRF9DiG56bciNc37O/SfHAoh1jFfJW6AsXAtWLPnjlOzXJGWgXhkyDFOGEHIMscqDU41ElUKnjcsJjWD9w==";
+
+        private bool _testSuccess = false;
+        private bool _onLocalRuntime = false;
+        private string _className = Constants.BridgeLaunchClass;
+        private string _clrFolder = ".";
+        private string _reefJar = Path.Combine(_binFolder, 
Constants.BridgeJarFileName);
+        private string _runCommand = Path.Combine(_binFolder, _cmdFile);
+
+        // TODO: once things stablize, we would like to toggle this to be 
false and only enable when needed for debugging test failures.
+        private bool _enableRealtimeLogUpload = true; 
+
+        protected string TestId { get; set; }
+
+        protected Timer TestTimer { get; set; }
+
+        protected Task TimerTask { get; set; }
+
+        protected bool TestSuccess 
+        {
+            get { return _testSuccess; }
+            set { _testSuccess = value; }
+        }
+
+        protected bool IsOnLocalRuntiime
+        {
+            get { return _onLocalRuntime; }
+            set { _onLocalRuntime = value; }
+        }
+
+        public void Init()
+        {
+            TestId = Guid.NewGuid().ToString("N").Substring(0, 8);
+            Console.WriteLine("Running test " + TestId + ". If failed AND log 
uploaded is enabled, log can be find in " + 
Path.Combine(DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), 
TestId));
+            if (_enableRealtimeLogUpload)
+            {
+                TimerTask = new Task(() =>
+                {
+                    TestTimer = new Timer()
+                    {
+                        Interval = 1000,
+                        Enabled = true,
+                        AutoReset = true
+                    };
+                    TestTimer.Elapsed += PeriodicUploadLog;
+                    TestTimer.Start();
+                });
+                TimerTask.Start(); 
+            }
+            
+            ValidationUtilities.ValidateEnvVariable("JAVA_HOME");
+
+            if (!Directory.Exists(_binFolder))
+            {
+                throw new InvalidOperationException(_binFolder + " not found 
in current directory, cannot init test");
+            }
+        }
+
+        protected void TestRun(HashSet<string> appDlls, IConfiguration 
driverBridgeConfig, bool runOnYarn = false, JavaLoggingSetting javaLogSettings 
= JavaLoggingSetting.INFO)
+        {
+            ClrClientHelper.Run(appDlls, driverBridgeConfig, new 
DriverSubmissionSettings() { RunOnYarn = runOnYarn, JavaLogLevel = 
javaLogSettings }, _reefJar, _runCommand, _clrFolder, _className);
+        }
+
+        protected void CleanUp()
+        {
+            Console.WriteLine("Cleaning up test.");
+
+            if (TimerTask != null)
+            {
+                TestTimer.Stop();
+                TimerTask.Dispose();
+                TimerTask = null;
+            }
+            
+            // Wait for file upload task to complete
+            Thread.Sleep(500);
+
+            string dir = Path.Combine(Directory.GetCurrentDirectory(), 
"REEF_LOCAL_RUNTIME");
+            try
+            {
+                if (Directory.Exists(dir))
+                {
+                    Directory.Delete(dir, true);
+                }
+            }
+            catch (IOException)
+            {
+                // do not fail if clean up is unsuccessful
+            }   
+        }
+
+        protected void ValidateSuccessForLocalRuntime(int 
numberOfEvaluatorsToClose)
+        {
+            const string successIndication = "EXIT: 
ActiveContextClr2Java::Close";
+            const string failedTaskIndication = 
"Java_com_microsoft_reef_javabridge_NativeInterop_ClrSystemFailedTaskHandlerOnNext";
+            const string failedEvaluatorIndication = 
"Java_com_microsoft_reef_javabridge_NativeInterop_ClrSystemFailedEvaluatorHandlerOnNext";
+            string[] lines = File.ReadAllLines(GetLogFile(_stdout));
+            string[] successIndicators = lines.Where(s => 
s.Contains(successIndication)).ToArray();
+            string[] failedTaskIndicators = lines.Where(s => 
s.Contains(failedTaskIndication)).ToArray();
+            string[] failedIndicators = lines.Where(s => 
s.Contains(failedEvaluatorIndication)).ToArray();
+            Assert.IsTrue(successIndicators.Count() == 
numberOfEvaluatorsToClose);
+            Assert.IsFalse(failedTaskIndicators.Any());
+            Assert.IsFalse(failedIndicators.Any());
+        }
+
+        protected void PeriodicUploadLog(object source, ElapsedEventArgs e)
+        {
+            try
+            {
+                UploadDriverLog();
+            }
+            catch (Exception)
+            {
+                // log not available yet, ignore it
+            }
+        }
+
+        protected string GetLogFile(string logFileName)
+        {
+            string driverContainerDirectory = 
Directory.GetDirectories(Path.Combine(Directory.GetCurrentDirectory(), 
"REEF_LOCAL_RUNTIME"), "driver", SearchOption.AllDirectories).SingleOrDefault();
+            if (string.IsNullOrWhiteSpace(driverContainerDirectory))
+            {
+                throw new InvalidOperationException("Cannot find driver 
container directory");
+            }
+            string logFile = Path.Combine(driverContainerDirectory, 
logFileName);
+            if (!File.Exists(logFile))
+            {
+                throw new InvalidOperationException("Driver stdout file not 
found");
+            }
+            return logFile;
+        }
+
+        private void UploadDriverLog()
+        {
+            string driverStdout = GetLogFile(_stdout);
+            string driverStderr = GetLogFile(_stderr);
+            CloudStorageAccount storageAccount = 
CloudStorageAccount.Parse(_blobStorageConnectionString);
+            CloudBlobClient blobClient = 
storageAccount.CreateCloudBlobClient();
+            CloudBlobContainer container = 
blobClient.GetContainerReference(DateTime.Now.ToString("yyyy-MM-dd", 
CultureInfo.InvariantCulture));   
+            container.CreateIfNotExists();
+
+            CloudBlockBlob blob = 
container.GetBlockBlobReference(Path.Combine(TestId, "driverStdOut"));
+            FileStream fs = new FileStream(driverStdout, FileMode.Open, 
FileAccess.Read, FileShare.ReadWrite);
+            blob.UploadFromStream(fs);
+            fs.Close();
+
+            blob = container.GetBlockBlobReference(Path.Combine(TestId, 
"driverStdErr"));
+            fs = new FileStream(driverStderr, FileMode.Open, FileAccess.Read, 
FileShare.ReadWrite);
+            blob.UploadFromStream(fs);
+            fs.Close();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Network/BlockingCollectionExtensionTests.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Network/BlockingCollectionExtensionTests.cs 
b/lang/cs/Org.Apache.REEF.Tests/Network/BlockingCollectionExtensionTests.cs
new file mode 100644
index 0000000..1737888
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Network/BlockingCollectionExtensionTests.cs
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Concurrent;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Network.Utilities;
+
+namespace Org.Apache.REEF.Tests.Network
+{
+    [TestClass]
+    public class BlockingCollectionExtensionTests
+    {
+        [TestMethod]
+        public void TestCollectionContainsElement()
+        {
+            string item = "abc";
+            BlockingCollection<string> collection = new 
BlockingCollection<string>();
+            collection.Add(item);
+
+            Assert.AreEqual(item, collection.Take(item));
+
+            // Check that item is no longer in collection
+            Assert.AreEqual(0, collection.Count);
+        }
+
+        [TestMethod]
+        public void TestCollectionContainsElement2()
+        {
+            string item = "abc";
+            BlockingCollection<string> collection = new 
BlockingCollection<string>();
+            collection.Add("cat");
+            collection.Add(item);
+            collection.Add("dog");
+
+            Assert.AreEqual(item, collection.Take(item));
+
+            // Remove remaining items, check that item is not there
+            Assert.AreNotEqual(item, collection.Take());
+            Assert.AreNotEqual(item, collection.Take());
+            Assert.AreEqual(0, collection.Count);
+        }
+
+        [TestMethod]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void TestCollectionDoesNotContainsElement()
+        {
+            string item1 = "abc";
+            string item2 = "def";
+
+            BlockingCollection<string> collection = new 
BlockingCollection<string>();
+            collection.Add(item2);
+
+            // Should throw InvalidOperationException since item1 is not in 
collection
+            collection.Take(item1);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Network/NameServerTests.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Network/NameServerTests.cs 
b/lang/cs/Org.Apache.REEF.Tests/Network/NameServerTests.cs
new file mode 100644
index 0000000..d6e64f8
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Network/NameServerTests.cs
@@ -0,0 +1,269 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Threading;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Common.io;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+
+namespace Org.Apache.REEF.Tests.Network
+{
+    [TestClass]
+    public class NameServerTests
+    {
+        [TestMethod]
+        public void TestNameServerNoRequests()
+        {
+           using (var server = new NameServer(0))
+           {
+           }
+        }
+
+        [TestMethod]
+        public void TestNameServerNoRequestsTwoClients()
+        {
+           using (var server = new NameServer(0))
+           {
+               var nameClient = new NameClient(server.LocalEndpoint);
+               var nameClient2 = new NameClient(server.LocalEndpoint);
+               nameClient2.Register("1", new IPEndPoint(IPAddress.Any, 8080));
+               nameClient.Lookup("1");
+           }
+        }
+
+        [TestMethod]
+        public void TestNameServerNoRequestsTwoClients2()
+        {
+           using (var server = new NameServer(0))
+           {
+               var nameClient = new NameClient(server.LocalEndpoint);
+               var nameClient2 = new NameClient(server.LocalEndpoint);
+               nameClient2.Register("1", new IPEndPoint(IPAddress.Any, 8080));
+               nameClient.Lookup("1");
+           }
+        }
+
+        [TestMethod]
+        public void TestNameServerMultipleRequestsTwoClients()
+        {
+           using (var server = new NameServer(0))
+           {
+               var nameClient = new NameClient(server.LocalEndpoint);
+               var nameClient2 = new NameClient(server.LocalEndpoint);
+               nameClient.Register("1", new IPEndPoint(IPAddress.Any, 8080));
+               nameClient2.Lookup("1");
+           }
+        }
+
+        [TestMethod]
+        public void TestRegister()
+        {
+            using (INameServer server = BuildNameServer())
+            {
+                using (INameClient client = 
BuildNameClient(server.LocalEndpoint))
+                {
+                    IPEndPoint endpoint1 = new 
IPEndPoint(IPAddress.Parse("100.0.0.1"), 100);
+                    IPEndPoint endpoint2 = new 
IPEndPoint(IPAddress.Parse("100.0.0.2"), 200);
+                    IPEndPoint endpoint3 = new 
IPEndPoint(IPAddress.Parse("100.0.0.3"), 300);
+
+                    // Check that no endpoints have been registered
+                    Assert.IsNull(client.Lookup("a"));
+                    Assert.IsNull(client.Lookup("b"));
+                    Assert.IsNull(client.Lookup("c"));
+                
+                    // Register endpoints
+                    client.Register("a", endpoint1);
+                    client.Register("b", endpoint2);
+                    client.Register("c", endpoint3);
+
+                    // Check that they can be looked up correctly
+                    Assert.AreEqual(endpoint1, client.Lookup("a"));
+                    Assert.AreEqual(endpoint2, client.Lookup("b"));
+                    Assert.AreEqual(endpoint3, client.Lookup("c"));
+                }
+            }
+        }
+
+        [TestMethod]
+        public void TestUnregister()
+        {
+            using (INameServer server = BuildNameServer())
+            {
+                using (INameClient client = 
BuildNameClient(server.LocalEndpoint))
+                {
+                    IPEndPoint endpoint1 = new 
IPEndPoint(IPAddress.Parse("100.0.0.1"), 100);
+                
+                    // Register endpoint
+                    client.Register("a", endpoint1);
+
+                    // Check that it can be looked up correctly
+                    Assert.AreEqual(endpoint1, client.Lookup("a"));
+
+                    // Unregister endpoints
+                    client.Unregister("a");
+                    Thread.Sleep(1000);
+
+                    // Make sure they were unregistered correctly
+                    Assert.IsNull(client.Lookup("a"));
+                }
+            }
+        }
+
+        [TestMethod]
+        public void TestLookup()
+        {
+            using (INameServer server = BuildNameServer())
+            {
+                using (INameClient client = 
BuildNameClient(server.LocalEndpoint))
+                {
+                    IPEndPoint endpoint1 = new 
IPEndPoint(IPAddress.Parse("100.0.0.1"), 100);
+                    IPEndPoint endpoint2 = new 
IPEndPoint(IPAddress.Parse("100.0.0.2"), 200);
+                
+                    // Register endpoint1
+                    client.Register("a", endpoint1);
+                    Assert.AreEqual(endpoint1, client.Lookup("a"));
+
+                    // Reregister identifer a
+                    client.Register("a", endpoint2);
+                    Assert.AreEqual(endpoint2, client.Lookup("a"));
+                }
+            }
+        }
+
+        [TestMethod]
+        public void TestLookupList()
+        {
+            using (INameServer server = BuildNameServer())
+            {
+                using (INameClient client = 
BuildNameClient(server.LocalEndpoint))
+                {
+                    IPEndPoint endpoint1 = new 
IPEndPoint(IPAddress.Parse("100.0.0.1"), 100);
+                    IPEndPoint endpoint2 = new 
IPEndPoint(IPAddress.Parse("100.0.0.2"), 200);
+                    IPEndPoint endpoint3 = new 
IPEndPoint(IPAddress.Parse("100.0.0.3"), 300);
+                
+                    // Register endpoints
+                    client.Register("a", endpoint1);
+                    client.Register("b", endpoint2);
+                    client.Register("c", endpoint3);
+
+                    // Look up both at the same time
+                    List<string> ids = new List<string> { "a", "b", "c", "d" };
+                    List<NameAssignment> assignments = client.Lookup(ids);
+
+                    // Check that a, b, and c are registered
+                    Assert.AreEqual("a", assignments[0].Identifier);
+                    Assert.AreEqual(endpoint1, assignments[0].Endpoint);
+                    Assert.AreEqual("b", assignments[1].Identifier);
+                    Assert.AreEqual(endpoint2, assignments[1].Endpoint);
+                    Assert.AreEqual("c", assignments[2].Identifier);
+                    Assert.AreEqual(endpoint3, assignments[2].Endpoint);
+
+                    // Check that d is not registered
+                    Assert.AreEqual(3, assignments.Count);
+                }
+            }
+        }
+
+        [TestMethod]
+        public void TestNameClientRestart()
+        {
+            int oldPort = 6666;
+            int newPort = 6662;
+            INameServer server = new NameServer(oldPort);
+
+            using (INameClient client = BuildNameClient(server.LocalEndpoint))
+            {
+                IPEndPoint endpoint = new 
IPEndPoint(IPAddress.Parse("100.0.0.1"), 100);
+            
+                client.Register("a", endpoint);
+                Assert.AreEqual(endpoint, client.Lookup("a"));
+
+                server.Dispose();
+
+                server = new NameServer(newPort);
+                client.Restart(server.LocalEndpoint);
+
+                client.Register("b", endpoint);
+                Assert.AreEqual(endpoint, client.Lookup("b"));
+
+                server.Dispose();
+            }
+        }
+
+        [TestMethod]
+        public void TestConstructorInjection()
+        {
+            int port = 6666;
+            using (INameServer server = new NameServer(port))
+            {
+                IConfiguration nameClientConfiguration = 
NamingConfiguration.ConfigurationModule
+                    .Set(NamingConfiguration.NameServerAddress, 
server.LocalEndpoint.Address.ToString())
+                    .Set(NamingConfiguration.NameServerPort, port + 
string.Empty)
+                    .Build();
+
+                ConstructorInjection c = TangFactory.GetTang()
+                    .NewInjector(nameClientConfiguration)
+                    .GetInstance<ConstructorInjection>();
+
+                Assert.IsNotNull(c);
+            }
+        }
+
+        private INameServer BuildNameServer()
+        {
+            var builder = TangFactory.GetTang()
+                                     .NewConfigurationBuilder()
+                                     
.BindNamedParameter<NamingConfigurationOptions.NameServerPort, int>(
+                                         
GenericType<NamingConfigurationOptions.NameServerPort>.Class, "0");
+
+            return 
TangFactory.GetTang().NewInjector(builder.Build()).GetInstance<INameServer>();
+        }
+
+        private INameClient BuildNameClient(IPEndPoint remoteEndpoint)
+        {
+            string nameServerAddr = remoteEndpoint.Address.ToString();
+            int nameServerPort = remoteEndpoint.Port;
+            IConfiguration nameClientConfiguration = 
NamingConfiguration.ConfigurationModule
+                .Set(NamingConfiguration.NameServerAddress, nameServerAddr)
+                .Set(NamingConfiguration.NameServerPort, nameServerPort + 
string.Empty)
+                .Build();
+
+            return 
TangFactory.GetTang().NewInjector(nameClientConfiguration).GetInstance<NameClient>();
+        }
+
+        private class ConstructorInjection
+        {
+            [Inject]
+            public ConstructorInjection(NameClient client)
+            {
+                if (client == null)
+                {
+                    throw new ArgumentNullException("client");
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs 
b/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs
new file mode 100644
index 0000000..9b94ee3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs
@@ -0,0 +1,198 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Concurrent;
+using System.Globalization;
+using System.Linq;
+using System.Net;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Common.io;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Network.NetworkService;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Wake;
+using Org.Apache.REEF.Wake.Remote;
+using Org.Apache.REEF.Wake.Remote.Impl;
+using Org.Apache.REEF.Wake.Util;
+
+namespace Org.Apache.REEF.Tests.Network
+{
+    [TestClass]
+    public class NetworkServiceTests
+    {
+        [TestMethod]
+        public void TestNetworkServiceOneWayCommunication()
+        {
+            int networkServicePort1 = NetworkUtils.GenerateRandomPort(6000, 
7000);
+            int networkServicePort2 = NetworkUtils.GenerateRandomPort(7001, 
8000);
+
+            BlockingCollection<string> queue = new 
BlockingCollection<string>();
+
+            using (INameServer nameServer = new NameServer(0))
+            {
+                IPEndPoint endpoint = nameServer.LocalEndpoint;
+                int nameServerPort = endpoint.Port;
+                string nameServerAddr = endpoint.Address.ToString();
+                using (INetworkService<string> networkService1 = 
BuildNetworkService(networkServicePort1, nameServerPort, nameServerAddr, null))
+                using (INetworkService<string> networkService2 = 
BuildNetworkService(networkServicePort2, nameServerPort, nameServerAddr, new 
MessageHandler(queue)))
+                {
+                    IIdentifier id1 = new StringIdentifier("service1");
+                    IIdentifier id2 = new StringIdentifier("service2");
+                    networkService1.Register(id1);
+                    networkService2.Register(id2);
+
+                    using (IConnection<string> connection = 
networkService1.NewConnection(id2))
+                    {
+                        connection.Open();
+                        connection.Write("abc");
+                        connection.Write("def");
+                        connection.Write("ghi");
+
+                        Assert.AreEqual("abc", queue.Take());
+                        Assert.AreEqual("def", queue.Take());
+                        Assert.AreEqual("ghi", queue.Take());
+                    }
+                }
+            }
+        }
+
+        [TestMethod]
+        public void TestNetworkServiceTwoWayCommunication()
+        {
+            int networkServicePort1 = NetworkUtils.GenerateRandomPort(6000, 
7000);
+            int networkServicePort2 = NetworkUtils.GenerateRandomPort(7001, 
8000);
+
+            BlockingCollection<string> queue1 = new 
BlockingCollection<string>();
+            BlockingCollection<string> queue2 = new 
BlockingCollection<string>();
+
+            using (INameServer nameServer = new NameServer(0))
+            {
+                IPEndPoint endpoint = nameServer.LocalEndpoint;
+                int nameServerPort = endpoint.Port;
+                string nameServerAddr = endpoint.Address.ToString();
+                using (INetworkService<string> networkService1 = 
BuildNetworkService(networkServicePort1, nameServerPort, nameServerAddr, new 
MessageHandler(queue1)))
+                using (INetworkService<string> networkService2 = 
BuildNetworkService(networkServicePort2, nameServerPort, nameServerAddr, new 
MessageHandler(queue2)))
+                {
+                    IIdentifier id1 = new StringIdentifier("service1");
+                    IIdentifier id2 = new StringIdentifier("service2");
+                    networkService1.Register(id1);
+                    networkService2.Register(id2);
+
+                    using (IConnection<string> connection1 = 
networkService1.NewConnection(id2))
+                    using (IConnection<string> connection2 = 
networkService2.NewConnection(id1))
+                    {
+                        connection1.Open();
+                        connection1.Write("abc");
+                        connection1.Write("def");
+                        connection1.Write("ghi");
+
+                        connection2.Open();
+                        connection2.Write("jkl");
+                        connection2.Write("mno");
+
+                        Assert.AreEqual("abc", queue2.Take());
+                        Assert.AreEqual("def", queue2.Take());
+                        Assert.AreEqual("ghi", queue2.Take());
+
+                        Assert.AreEqual("jkl", queue1.Take());
+                        Assert.AreEqual("mno", queue1.Take());
+                    }
+                }
+            }
+        }
+
+        private INetworkService<string> BuildNetworkService(
+            int networkServicePort,
+            int nameServicePort,
+            string nameServiceAddr,
+            IObserver<NsMessage<string>> handler)
+        {
+            // Test injection
+            if (handler == null)
+            {
+                var networkServiceConf = 
TangFactory.GetTang().NewConfigurationBuilder()
+                    
.BindNamedParameter<NetworkServiceOptions.NetworkServicePort, int>(
+                        
GenericType<NetworkServiceOptions.NetworkServicePort>.Class,
+                        
networkServicePort.ToString(CultureInfo.CurrentCulture))
+                    
.BindNamedParameter<NamingConfigurationOptions.NameServerPort, int>(
+                        
GenericType<NamingConfigurationOptions.NameServerPort>.Class,
+                        nameServicePort.ToString(CultureInfo.CurrentCulture))
+                    
.BindNamedParameter<NamingConfigurationOptions.NameServerAddress, string>(
+                        
GenericType<NamingConfigurationOptions.NameServerAddress>.Class,
+                        nameServiceAddr)
+                    .BindImplementation(GenericType<ICodec<string>>.Class, 
GenericType<StringCodec>.Class)
+                    
.BindImplementation(GenericType<IObserver<NsMessage<string>>>.Class, 
GenericType<NetworkMessageHandler>.Class)
+                    .Build();
+
+                return 
TangFactory.GetTang().NewInjector(networkServiceConf).GetInstance<NetworkService<string>>();
+            }
+
+            return new NetworkService<string>(networkServicePort, 
nameServiceAddr, nameServicePort, 
+                handler, new StringIdentifierFactory(), new StringCodec());
+        }
+
+        private class MessageHandler : IObserver<NsMessage<string>>
+        {
+            private BlockingCollection<string> _queue;
+
+            public MessageHandler(BlockingCollection<string> queue)
+            {
+                _queue = queue;
+            }
+
+            public void OnNext(NsMessage<string> value)
+            {
+                _queue.Add(value.Data.First());
+            }
+
+            public void OnError(Exception error)
+            {
+                throw new NotImplementedException();
+            }
+
+            public void OnCompleted()
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        private class NetworkMessageHandler : IObserver<NsMessage<string>>
+        {
+            [Inject]
+            public NetworkMessageHandler()
+            {
+            }
+
+            public void OnNext(NsMessage<string> value)
+            {
+            }
+
+            public void OnError(Exception error)
+            {
+            }
+
+            public void OnCompleted()
+            {
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj 
b/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
new file mode 100644
index 0000000..83fc29b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Org.Apache.REEF.Tests.csproj
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<Project ToolsVersion="12.0" DefaultTargets="Build" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import 
Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"
 
Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"
 />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{988F90CF-A48D-4938-A4D2-FA3B758FB5A7}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Org.Apache.REEF.Tests</RootNamespace>
+    <AssemblyName>Org.Apache.REEF.Tests</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    
<OutputPath>..\bin\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    
<OutputPath>..\bin\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 
'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    
<OutputPath>..\bin\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    
<OutputPath>..\bin\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Data.Edm, Version=5.6.3.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      
<HintPath>..\packages\Microsoft.Data.Edm.5.6.3\lib\net40\Microsoft.Data.Edm.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Data.OData, Version=5.6.3.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      
<HintPath>..\packages\Microsoft.Data.OData.5.6.3\lib\net40\Microsoft.Data.OData.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Data.Services.Client, Version=5.6.3.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.3\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Hadoop.Avro">
+      
<HintPath>..\packages\Microsoft.Hadoop.Avro.1.4.0.0\lib\net40\Microsoft.Hadoop.Avro.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, 
Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, 
processorArchitecture=MSIL" />
+    <Reference Include="Microsoft.WindowsAzure.Configuration">
+      
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.WindowsAzure.Storage">
+      
<HintPath>..\packages\WindowsAzure.Storage.4.3.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
+    </Reference>
+    <Reference Include="Newtonsoft.Json">
+      
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="protobuf-net">
+      
<HintPath>..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Reactive.Core">
+      
<HintPath>..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reactive.Interfaces">
+      
<HintPath>..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Spatial, Version=5.6.3.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      
<HintPath>..\packages\System.Spatial.5.6.3\lib\net40\System.Spatial.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Evaluator\EvaluatorConfigurationsTests.cs" />
+    <Compile Include="Evaluator\EvaluatorTests.cs" />
+    <Compile Include="Functional\Bridge\TestBridgeClient.cs" />
+    <Compile Include="Functional\Bridge\TestHelloBridgeHandlers.cs" />
+    <Compile Include="Functional\Bridge\TestSimpleEventHandlers.cs" />
+    <Compile Include="Functional\Driver\DriverTestStartHandler.cs" />
+    <Compile Include="Functional\Driver\TestDriver.cs" />
+    <Compile Include="Functional\Messaging\MessageDriver.cs" />
+    <Compile Include="Functional\Messaging\MessageTask.cs" />
+    <Compile Include="Functional\Messaging\TestTaskMessage.cs" />
+    <Compile Include="Functional\ReefFunctionalTest.cs" />
+    <Compile Include="Network\BlockingCollectionExtensionTests.cs" />
+    <Compile Include="Network\NameServerTests.cs" />
+    <Compile Include="Network\NetworkServiceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utility\TestDriverConfigGenerator.cs" />
+    <Compile Include="Utility\TestExceptions.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="bin\run.cmd">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Include="ConfigFiles\evaluator.conf">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Client\Org.Apache.REEF.Client.csproj">
+      <Project>{5094c35b-4fdb-4322-ac05-45d684501cbf}</Project>
+      <Name>Org.Apache.REEF.Client</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Common\Org.Apache.REEF.Common.csproj">
+      <Project>{545a0582-4105-44ce-b99c-b1379514a630}</Project>
+      <Name>Org.Apache.REEF.Common</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.csproj">
+      <Project>{a6baa2a7-f52f-4329-884e-1bcf711d6805}</Project>
+      <Name>Org.Apache.REEF.Driver</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Evaluator\Org.Apache.REEF.Evaluator.csproj">
+      <Project>{1b983182-9c30-464c-948d-f87eb93a8240}</Project>
+      <Name>Org.Apache.REEF.Evaluator</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Examples.HelloCLRBridge\Org.Apache.REEF.Examples.HelloCLRBridge.csproj">
+      <Project>{a78dd8e8-31d0-4506-8738-daa9da86d55b}</Project>
+      <Name>Org.Apache.REEF.Examples.HelloCLRBridge</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Examples.RetainedEvalCLRBridge\Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj">
+      <Project>{05ec65cf-848d-49ab-9e67-57c14ea63044}</Project>
+      <Name>Org.Apache.REEF.Examples.RetainedEvalCLRBridge</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Examples.Tasks\Org.Apache.REEF.Examples.Tasks.csproj">
+      <Project>{75503f90-7b82-4762-9997-94b5c68f15db}</Project>
+      <Name>Org.Apache.REEF.Examples.Tasks</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Network\Org.Apache.REEF.Network.csproj">
+      <Project>{883ce800-6a6a-4e0a-b7fe-c054f4f2c1dc}</Project>
+      <Name>Org.Apache.REEF.Network</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.csproj">
+      <Project>{97dbb573-3994-417a-9f69-ffa25f00d2a6}</Project>
+      <Name>Org.Apache.REEF.Tang</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj">
+      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
+      <Name>Org.Apache.REEF.Utilities</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="..\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
+      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
+      <Name>Org.Apache.REEF.Wake</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="bin\reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="bin\Debug\" />
+    <Folder Include="bin\Release\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" 
Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
+  <!-- To modify your build process, add your task inside one of the targets 
below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Properties/AssemblyInfo.cs 
b/lang/cs/Org.Apache.REEF.Tests/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ab783f0
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Org.Apache.REEF.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Org.Apache.REEF.Tests")]
+[assembly: AssemblyCopyright("Copyright ©  2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed 
to COM
+[assembly: Guid("19ebceb4-3b1f-466b-9127-aa14e636d723")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision 
Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Utility/TestDriverConfigGenerator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Utility/TestDriverConfigGenerator.cs 
b/lang/cs/Org.Apache.REEF.Tests/Utility/TestDriverConfigGenerator.cs
new file mode 100644
index 0000000..f3eac66
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Utility/TestDriverConfigGenerator.cs
@@ -0,0 +1,101 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Driver;
+
+namespace Org.Apache.REEF.Tests.Utility
+{
+    [TestClass]
+    public class TestDriverConfigGenerator
+    {
+        [TestMethod]
+        public void TestGeneratingFullDriverConfigFile()
+        {
+            DriverConfigurationSettings driverSubmissionSettings = new 
DriverConfigurationSettings()
+            {
+                DriverMemory = 1024,
+                DriverIdentifier = "juliaDriverId",
+                SubmissionDirectory = "reefClrBridgeTmp/job_" + 
Guid.NewGuid().ToString("N").Substring(0, 8),
+                IncludingHttpServer = true,
+                IncludingNameServer = true,
+                //ClrFolder = 
"C:\\Reef\\ReefApache\\incubator-reef\\reef-bridge-project\\reef-bridge\\dotnetHello",
+                ClrFolder = ".",
+                JarFileFolder = ".\\bin\\"
+            };
+
+            
DriverConfigGenerator.DriverConfigurationBuilder(driverSubmissionSettings);
+        }
+
+        [TestMethod]
+        public void TestGeneratingDriverConfigFileWithoutHttp()
+        {
+            DriverConfigurationSettings driverSubmissionSettings = new 
DriverConfigurationSettings()
+            {
+                DriverMemory = 1024,
+                DriverIdentifier = "juliaDriverId",
+                SubmissionDirectory = "reefClrBridgeTmp/job_" + 
Guid.NewGuid().ToString("N").Substring(0, 8),
+                IncludingHttpServer = false,
+                IncludingNameServer = true,
+//                ClrFolder = 
"C:\\Reef\\ReefApache\\incubator-reef\\reef-bridge-project\\reef-bridge\\dotnetHello",
+                ClrFolder = ".",
+                JarFileFolder = ".\\bin\\"
+            };
+
+            
DriverConfigGenerator.DriverConfigurationBuilder(driverSubmissionSettings);
+        }
+
+        [TestMethod]
+        public void TestGeneratingDriverConfigFileWithoutNameServer()
+        {
+            DriverConfigurationSettings driverSubmissionSettings = new 
DriverConfigurationSettings()
+            {
+                DriverMemory = 1024,
+                DriverIdentifier = "juliaDriverId",
+                SubmissionDirectory = "reefClrBridgeTmp/job_" + 
Guid.NewGuid().ToString("N").Substring(0, 8),
+                IncludingHttpServer = true,
+                IncludingNameServer = false,
+                //ClrFolder = 
"C:\\Reef\\ReefApache\\incubator-reef\\reef-bridge-project\\reef-bridge\\dotnetHello",
+                ClrFolder = ".",
+                JarFileFolder = ".\\bin\\"
+            };
+
+            
DriverConfigGenerator.DriverConfigurationBuilder(driverSubmissionSettings);
+        }
+
+        [TestMethod]
+        public void TestGeneratingDriverConfigFileDriverOnly()
+        {
+            DriverConfigurationSettings driverSubmissionSettings = new 
DriverConfigurationSettings()
+            {
+                DriverMemory = 1024,
+                DriverIdentifier = "juliaDriverId",
+                SubmissionDirectory = "reefClrBridgeTmp/job_" + 
Guid.NewGuid().ToString("N").Substring(0, 8),
+                IncludingHttpServer = false,
+                IncludingNameServer = false,
+                //ClrFolder = 
"C:\\Reef\\ReefApache\\incubator-reef\\reef-bridge-project\\reef-bridge\\dotnetHello",
+                ClrFolder = ".",
+                JarFileFolder = ".\\bin\\"
+            };
+
+            
DriverConfigGenerator.DriverConfigurationBuilder(driverSubmissionSettings);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Utility/TestExceptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Utility/TestExceptions.cs 
b/lang/cs/Org.Apache.REEF.Tests/Utility/TestExceptions.cs
new file mode 100644
index 0000000..db22873
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Utility/TestExceptions.cs
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Utility
+{
+    [TestClass]
+    public class TestExceptions
+    {
+        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(TestExceptions));
+
+        [TestMethod]
+        public void TestThrowCaught()
+        {
+            string msg = null;
+            try
+            {
+                Exceptions.Throw(new ApplicationException("test"), LOGGER);
+                msg = "not supposed to reach here";
+                Assert.Fail(msg);
+            }
+            catch (ApplicationException e)
+            {
+                Exceptions.Caught(e, Level.Info, LOGGER);
+            }
+            Assert.IsNull(msg);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/bin/reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/bin/reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
 
b/lang/cs/Org.Apache.REEF.Tests/bin/reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
new file mode 100644
index 0000000..437d140
Binary files /dev/null and 
b/lang/cs/Org.Apache.REEF.Tests/bin/reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
 differ

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/bin/run.cmd
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/bin/run.cmd 
b/lang/cs/Org.Apache.REEF.Tests/bin/run.cmd
new file mode 100644
index 0000000..ddff8a7
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/bin/run.cmd
@@ -0,0 +1,45 @@
+@REM
+@REM Copyright (C) 2013 Microsoft Corporation
+@REM
+@REM Licensed under the Apache License, Version 2.0 (the "License");
+@REM you may not use this file except in compliance with the License.
+@REM You may obtain a copy of the License at
+@REM
+@REM         http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing, software
+@REM distributed under the License is distributed on an "AS IS" BASIS,
+@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@REM See the License for the specific language governing permissions and
+@REM limitations under the License.
+@REM
+
+@echo off
+::
+:: Copyright (C) 2013 Microsoft Corporation
+::
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+::         http:\\www.apache.org\licenses\LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+::
+
+
+:: RUNTIME
+set SHADED_JAR=bin\reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
+
+set 
LOGGING_CONFIG=-Djava.util.logging.config.class=org.apache.reef.util.logging.Config
+
+set 
CLASSPATH=%HADOOP_HOME%\share\hadoop\hdfs\lib\*;%HADOOP_HOME%\share\hadoop\hdfs\*;%HADOOP_HOME%\share\hadoop\common\*;%HADOOP_HOME%\share\hadoop\common\lib\*;%HADOOP_HOME%\share\hadoop\mapreduce\lib\*;%HADOOP_HOME%\share\hadoop\mapreduce\*;%HADOOP_HOME%\share\hadoop\yarn\*;%HADOOP_HOME%\share\hadoop\yarn\lib\*
+
+set CMD=%JAVA_HOME%\bin\java.exe -cp 
%HADOOP_HOME%\etc\hadoop;%SHADED_JAR%;%CLASSPATH% %*
+::%LOGGING_CONFIG%
+echo %CMD%
+%CMD%

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/packages.config
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/packages.config 
b/lang/cs/Org.Apache.REEF.Tests/packages.config
new file mode 100644
index 0000000..ef4860c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/packages.config
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<packages>
+  <package id="Microsoft.Data.Edm" version="5.6.3" targetFramework="net45" />
+  <package id="Microsoft.Data.OData" version="5.6.3" targetFramework="net45" />
+  <package id="Microsoft.Data.Services.Client" version="5.6.3" 
targetFramework="net45" />
+  <package id="Microsoft.Hadoop.Avro" version="1.4.0.0" 
targetFramework="net45" />
+  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" 
targetFramework="net45" />
+  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
+  <package id="protobuf-net" version="2.0.0.668" targetFramework="net45" />
+  <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
+  <package id="System.Spatial" version="5.6.3" targetFramework="net45" />
+  <package id="WindowsAzure.Storage" version="4.3.0" targetFramework="net45" />
+</packages>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Utilities/Org.Apache.Reef.Utilities.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Utilities/Org.Apache.Reef.Utilities.csproj 
b/lang/cs/Org.Apache.REEF.Utilities/Org.Apache.Reef.Utilities.csproj
index 27899de..43003f8 100644
--- a/lang/cs/Org.Apache.REEF.Utilities/Org.Apache.Reef.Utilities.csproj
+++ b/lang/cs/Org.Apache.REEF.Utilities/Org.Apache.Reef.Utilities.csproj
@@ -30,7 +30,7 @@ under the License.
     <RestorePackages>true</RestorePackages>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\Source\build.props" />
+  <Import Project="$(SolutionDir)\build.props" />
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
     <PlatformTarget>AnyCPU</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.csproj 
b/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.csproj
index f383707..0657a1c 100644
--- a/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.csproj
+++ b/lang/cs/Org.Apache.REEF.Wake/Org.Apache.REEF.Wake.csproj
@@ -30,7 +30,7 @@ under the License.
     <RestorePackages>true</RestorePackages>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\Source\build.props" />
+  <Import Project="$(SolutionDir)\build.props" />
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
     <PlatformTarget>AnyCPU</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.sln
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.sln b/lang/cs/Org.Apache.REEF.sln
new file mode 100644
index 0000000..8ab396d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.sln
@@ -0,0 +1,195 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", 
"{2B7EE9D5-CA54-4204-B89D-B48A7FC6E3CD}"
+       ProjectSection(SolutionItems) = preProject
+               .nuget\NuGet.Config = .nuget\NuGet.Config
+               .nuget\NuGet.exe = .nuget\NuGet.exe
+               .nuget\NuGet.targets = .nuget\NuGet.targets
+       EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Tang", 
"Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.csproj", 
"{97DBB573-3994-417A-9F69-FFA25F00D2A6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Tang.Examples", 
"Org.Apache.REEF.Tang.Examples\Org.Apache.REEF.Tang.Examples.csproj", 
"{711B7F32-196E-4C21-9DBD-AD59C4A7CF77}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Tang.Tests", 
"Org.Apache.REEF.Tang.Tests\Org.Apache.REEF.Tang.Tests.csproj", 
"{D5EB94D0-3ABA-4853-9050-E36B196E17D2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Tang.Tools", 
"Org.Apache.REEF.Tang.Tools\Org.Apache.REEF.Tang.Tools.csproj", 
"{34A9CD98-0D15-4CA0-AEA5-E53593A31047}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Utilities", 
"Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj", 
"{79E7F89A-1DFB-45E1-8D43-D71A954AEB98}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Wake", 
"Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj", 
"{CDFB3464-4041-42B1-9271-83AF24CD5008}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Wake.Tests", 
"Org.Apache.REEF.Wake.Tests\Org.Apache.REEF.Wake.Tests.csproj", 
"{214C64C6-04E5-4867-B69A-E3502EA50871}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Common", 
"Org.Apache.REEF.Common\Org.Apache.REEF.Common.csproj", 
"{545A0582-4105-44CE-B99C-B1379514A630}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Driver", 
"Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.csproj", 
"{A6BAA2A7-F52F-4329-884E-1BCF711D6805}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Evaluator", 
"Org.Apache.REEF.Evaluator\Org.Apache.REEF.Evaluator.csproj", 
"{1B983182-9C30-464C-948D-F87EB93A8240}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Network", 
"Org.Apache.REEF.Network\Org.Apache.REEF.Network.csproj", 
"{883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Examples.RetainedEvalCLRBridge", 
"Org.Apache.REEF.Examples.RetainedEvalCLRBridge\Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj",
 "{05EC65CF-848D-49AB-9E67-57C14EA63044}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Examples.HelloCLRBridge", 
"Org.Apache.REEF.Examples.HelloCLRBridge\Org.Apache.REEF.Examples.HelloCLRBridge.csproj",
 "{A78DD8E8-31D0-4506-8738-DAA9DA86D55B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"Org.Apache.REEF.Examples.Tasks", 
"Org.Apache.REEF.Examples.Tasks\Org.Apache.REEF.Examples.Tasks.csproj", 
"{75503F90-7B82-4762-9997-94B5C68F15DB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Client", 
"Org.Apache.REEF.Client\Org.Apache.REEF.Client.csproj", 
"{5094C35B-4FDB-4322-AC05-45D684501CBF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.Tests", 
"Org.Apache.REEF.Tests\Org.Apache.REEF.Tests.csproj", 
"{988F90CF-A48D-4938-A4D2-FA3B758FB5A7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.Apache.REEF.All", 
"Org.Apache.REEF.All\Org.Apache.REEF.All.csproj", 
"{4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|x64 = Debug|x64
+               Release|Any CPU = Release|Any CPU
+               Release|x64 = Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Debug|x64.ActiveCfg = 
Debug|x64
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Debug|x64.Build.0 = 
Debug|x64
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Release|x64.ActiveCfg = 
Release|x64
+               {97DBB573-3994-417A-9F69-FFA25F00D2A6}.Release|x64.Build.0 = 
Release|x64
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Debug|x64.ActiveCfg = 
Debug|x64
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Debug|x64.Build.0 = 
Debug|x64
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Release|x64.ActiveCfg = 
Release|x64
+               {711B7F32-196E-4C21-9DBD-AD59C4A7CF77}.Release|x64.Build.0 = 
Release|x64
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Debug|x64.ActiveCfg = 
Debug|x64
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Debug|x64.Build.0 = 
Debug|x64
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Release|x64.ActiveCfg = 
Release|x64
+               {D5EB94D0-3ABA-4853-9050-E36B196E17D2}.Release|x64.Build.0 = 
Release|x64
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Debug|x64.ActiveCfg = 
Debug|x64
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Debug|x64.Build.0 = 
Debug|x64
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Release|x64.ActiveCfg = 
Release|x64
+               {34A9CD98-0D15-4CA0-AEA5-E53593A31047}.Release|x64.Build.0 = 
Release|x64
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Debug|x64.ActiveCfg = 
Debug|x64
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Debug|x64.Build.0 = 
Debug|x64
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Release|x64.ActiveCfg = 
Release|x64
+               {79E7F89A-1DFB-45E1-8D43-D71A954AEB98}.Release|x64.Build.0 = 
Release|x64
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Debug|x64.ActiveCfg = 
Debug|x64
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Debug|x64.Build.0 = 
Debug|x64
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Release|x64.ActiveCfg = 
Release|x64
+               {CDFB3464-4041-42B1-9271-83AF24CD5008}.Release|x64.Build.0 = 
Release|x64
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Debug|x64.ActiveCfg = 
Debug|x64
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Debug|x64.Build.0 = 
Debug|x64
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Release|x64.ActiveCfg = 
Release|x64
+               {214C64C6-04E5-4867-B69A-E3502EA50871}.Release|x64.Build.0 = 
Release|x64
+               {545A0582-4105-44CE-B99C-B1379514A630}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {545A0582-4105-44CE-B99C-B1379514A630}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {545A0582-4105-44CE-B99C-B1379514A630}.Debug|x64.ActiveCfg = 
Debug|x64
+               {545A0582-4105-44CE-B99C-B1379514A630}.Debug|x64.Build.0 = 
Debug|x64
+               {545A0582-4105-44CE-B99C-B1379514A630}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {545A0582-4105-44CE-B99C-B1379514A630}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {545A0582-4105-44CE-B99C-B1379514A630}.Release|x64.ActiveCfg = 
Release|x64
+               {545A0582-4105-44CE-B99C-B1379514A630}.Release|x64.Build.0 = 
Release|x64
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Debug|x64.ActiveCfg = 
Debug|x64
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Debug|x64.Build.0 = 
Debug|x64
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Release|x64.ActiveCfg = 
Release|x64
+               {A6BAA2A7-F52F-4329-884E-1BCF711D6805}.Release|x64.Build.0 = 
Release|x64
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Debug|x64.ActiveCfg = 
Debug|x64
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Debug|x64.Build.0 = 
Debug|x64
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Release|x64.ActiveCfg = 
Release|x64
+               {1B983182-9C30-464C-948D-F87EB93A8240}.Release|x64.Build.0 = 
Release|x64
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Debug|x64.ActiveCfg = 
Debug|x64
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Debug|x64.Build.0 = 
Debug|x64
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Release|x64.ActiveCfg = 
Release|x64
+               {883CE800-6A6A-4E0A-B7FE-C054F4F2C1DC}.Release|x64.Build.0 = 
Release|x64
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Debug|x64.ActiveCfg = 
Debug|x64
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Debug|x64.Build.0 = 
Debug|x64
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Release|x64.ActiveCfg = 
Release|x64
+               {05EC65CF-848D-49AB-9E67-57C14EA63044}.Release|x64.Build.0 = 
Release|x64
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Debug|x64.ActiveCfg = 
Debug|x64
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Debug|x64.Build.0 = 
Debug|x64
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Release|x64.ActiveCfg = 
Release|x64
+               {A78DD8E8-31D0-4506-8738-DAA9DA86D55B}.Release|x64.Build.0 = 
Release|x64
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Debug|x64.ActiveCfg = 
Debug|x64
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Debug|x64.Build.0 = 
Debug|x64
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Release|x64.ActiveCfg = 
Release|x64
+               {75503F90-7B82-4762-9997-94B5C68F15DB}.Release|x64.Build.0 = 
Release|x64
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Debug|x64.ActiveCfg = 
Debug|x64
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Debug|x64.Build.0 = 
Debug|x64
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Release|x64.ActiveCfg = 
Release|x64
+               {5094C35B-4FDB-4322-AC05-45D684501CBF}.Release|x64.Build.0 = 
Release|x64
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Debug|x64.ActiveCfg = 
Debug|x64
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Debug|x64.Build.0 = 
Debug|x64
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Release|x64.ActiveCfg = 
Release|x64
+               {988F90CF-A48D-4938-A4D2-FA3B758FB5A7}.Release|x64.Build.0 = 
Release|x64
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Debug|x64.ActiveCfg = 
Debug|x64
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Debug|x64.Build.0 = 
Debug|x64
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Release|x64.ActiveCfg = 
Release|x64
+               {4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}.Release|x64.Build.0 = 
Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal

Reply via email to