[REEF-146] Changing .Net project structure for Reef tests, reef client and Reef 
all

  * Move project folders under cs
  * Rename projects to follow name convention
  * Update namespace for projects
  * Update csproj file for the references
  * Rename reef test folders and update namespace inside reef tests
  * Renamed Solution file
  * Moved Source/build.props to build.props

JIRA:
  [REEF-146] https://issues.apache.org/jira/browse/REEF-146

Pull Request
  This closes #71


Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/05766f9d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/05766f9d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/05766f9d

Branch: refs/heads/master
Commit: 05766f9d3615168784f15234d07ae0ce72bcb814
Parents: a7df272
Author: Julia Wang <[email protected]>
Authored: Fri Feb 6 14:51:41 2015 -0800
Committer: Markus Weimer <[email protected]>
Committed: Fri Feb 6 15:16:18 2015 -0800

----------------------------------------------------------------------
 .../Org.Apache.REEF.All.csproj                  | 122 ++++++++
 .../Properties/AssemblyInfo.cs                  |  55 ++++
 .../Org.Apache.REEF.Client/CLRBridgeClient.cs   | 147 ++++++++++
 .../Org.Apache.REEF.Client.csproj               | 134 +++++++++
 .../Properties/AssemblyInfo.cs                  |  55 ++++
 lang/cs/Org.Apache.REEF.Client/run.cmd          |  45 +++
 .../Org.Apache.REEF.Common.csproj               |   2 +-
 .../Org.Apache.REEF.Driver.csproj               |   2 +-
 .../Org.Apache.REEF.Evaluator.csproj            |   2 +-
 ...g.Apache.REEF.Examples.HelloCLRBridge.csproj |   2 +-
 ...e.REEF.Examples.RetainedEvalCLRBridge.csproj |   2 +-
 .../Org.Apache.REEF.Examples.Tasks.csproj       |   2 +-
 .../Org.Apache.REEF.Network.csproj              |   2 +-
 .../Org.Apache.REEF.Tang.Examples.csproj        |   2 +-
 .../Org.Apache.REEF.Tang.Tools.csproj           |   2 +-
 .../Org.Apache.REEF.Tang.csproj                 |   2 +-
 .../ConfigFiles/evaluator.conf                  | Bin 0 -> 2837 bytes
 .../Evaluator/EvaluatorConfigurationsTests.cs   |  42 +++
 .../Evaluator/EvaluatorTests.cs                 |  95 +++++++
 .../Functional/Bridge/TestBridgeClient.cs       |  99 +++++++
 .../Bridge/TestHelloBridgeHandlers.cs           | 100 +++++++
 .../Bridge/TestSimpleEventHandlers.cs           | 108 ++++++++
 .../Functional/Driver/DriverTestStartHandler.cs |  46 ++++
 .../Functional/Driver/TestDriver.cs             |  68 +++++
 .../Functional/Messaging/MessageDriver.cs       | 117 ++++++++
 .../Functional/Messaging/MessageTask.cs         | 104 +++++++
 .../Functional/Messaging/TestTaskMessage.cs     |  74 +++++
 .../Functional/ReefFunctionalTest.cs            | 200 ++++++++++++++
 .../Network/BlockingCollectionExtensionTests.cs |  74 +++++
 .../Network/NameServerTests.cs                  | 269 ++++++++++++++++++
 .../Network/NetworkServiceTests.cs              | 198 +++++++++++++
 .../Org.Apache.REEF.Tests.csproj                | 213 ++++++++++++++
 .../Properties/AssemblyInfo.cs                  |  55 ++++
 .../Utility/TestDriverConfigGenerator.cs        | 101 +++++++
 .../Utility/TestExceptions.cs                   |  49 ++++
 ...bridge-0.11.0-incubating-SNAPSHOT-shaded.jar | Bin 0 -> 13555222 bytes
 lang/cs/Org.Apache.REEF.Tests/bin/run.cmd       |  45 +++
 lang/cs/Org.Apache.REEF.Tests/packages.config   |  32 +++
 .../Org.Apache.Reef.Utilities.csproj            |   2 +-
 .../Org.Apache.REEF.Wake.csproj                 |   2 +-
 lang/cs/Org.Apache.REEF.sln                     | 195 +++++++++++++
 lang/cs/ReefDotNet.sln                          | 195 -------------
 .../CLRBridgeClient/CLRBridgeClient.cs          | 149 ----------
 .../CLRBridgeClient/CLRBridgeClient.csproj      | 130 ---------
 .../CLRBridgeClient/Properties/AssemblyInfo.cs  |  55 ----
 .../reef-applications/CLRBridgeClient/run.cmd   |  45 ---
 .../Tools/ReefAll/Properties/AssemblyInfo.cs    |  55 ----
 lang/cs/Source/Tools/ReefAll/ReefAll.csproj     | 122 --------
 lang/cs/Source/build.props                      |  35 ---
 .../Tests/ReefTests/ConfigFiles/evaluator.conf  | Bin 2837 -> 0 bytes
 .../EvaluatorConfigurationsTests.cs             |  42 ---
 .../ReefTests/Evaluator.Tests/EvaluatorTests.cs |  96 -------
 .../Functional.Tests/Bridge/TestBridgeClient.cs |  99 -------
 .../Bridge/TestHelloBridgeHandlers.cs           | 102 -------
 .../Bridge/TestSimpleEventHandlers.cs           | 110 --------
 .../Driver/DriverTestStartHandler.cs            |  46 ----
 .../Functional.Tests/Driver/TestDriver.cs       |  68 -----
 .../Functional.Tests/Messaging/MessageDriver.cs | 122 --------
 .../Functional.Tests/Messaging/MessageTask.cs   | 107 --------
 .../Messaging/TestTaskMessage.cs                |  75 -----
 .../Functional.Tests/ReefFunctionalTest.cs      | 200 --------------
 .../BlockingCollectionExtensionTests.cs         |  78 ------
 .../Tests/ReefTests/IO.Tests/NameServerTests.cs | 275 -------------------
 .../ReefTests/IO.Tests/NetworkServiceTests.cs   | 203 --------------
 .../Tests/ReefTests/Properties/AssemblyInfo.cs  |  55 ----
 lang/cs/Tests/ReefTests/ReefTests.csproj        | 213 --------------
 .../Utility.Test/TestDriverConfigGenerator.cs   | 101 -------
 .../ReefTests/Utility.Test/TestExceptions.cs    |  49 ----
 ...bridge-0.11.0-incubating-SNAPSHOT-shaded.jar | Bin 13555222 -> 0 bytes
 lang/cs/Tests/ReefTests/bin/run.cmd             |  45 ---
 lang/cs/Tests/ReefTests/packages.config         |  32 ---
 lang/cs/build.props                             |  35 +++
 72 files changed, 2889 insertions(+), 2916 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.All/Org.Apache.REEF.All.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.All/Org.Apache.REEF.All.csproj 
b/lang/cs/Org.Apache.REEF.All/Org.Apache.REEF.All.csproj
new file mode 100644
index 0000000..14cc7d0
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.All/Org.Apache.REEF.All.csproj
@@ -0,0 +1,122 @@
+<?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>{4C137C79-3A28-47D2-BFB9-A3CAB1EEDACE}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Org.Apache.REEF.All</RootNamespace>
+    <AssemblyName>Org.Apache.REEF.All</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <RestorePackages>true</RestorePackages>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
+  </PropertyGroup>
+  <Import Project="$(SolutionDir)\build.props" />
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    
<OutputPath>$(BinDir)\$(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>$(BinDir)\$(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>$(BinDir)\$(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>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <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="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference 
Include="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
+      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
+      <Name>Org.Apache.REEF.Wake</Name>
+    </ProjectReference>
+    <ProjectReference 
Include="$(SolutionDir)\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="$(SolutionDir)\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj">
+      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
+      <Name>Org.Apache.REEF.Utilities</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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.All/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.All/Properties/AssemblyInfo.cs 
b/lang/cs/Org.Apache.REEF.All/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..66bfd68
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.All/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.All")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Org.Apache.REEF.All")]
+[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("def59cbf-1539-414c-a518-486d1553077c")]
+
+// 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.Client/CLRBridgeClient.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/CLRBridgeClient.cs 
b/lang/cs/Org.Apache.REEF.Client/CLRBridgeClient.cs
new file mode 100644
index 0000000..9dbd970
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Client/CLRBridgeClient.cs
@@ -0,0 +1,147 @@
+/**
+ * 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 Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.bridge;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Examples.HelloCLRBridge.Handlers;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+
+namespace Org.Apache.REEF.Client
+{
+    public class CLRBridgeClient
+    {
+        public const string ReefHome = "REEF_HOME";
+        public const string DefaultClrFolder = 
@"lang\java\reef-bridge-project\reef-bridge\dotnetHello";
+        public const string DefaultReefJar = 
@"lang\java\reef-bridge-project\reef-bridge\target\" + 
Constants.BridgeJarFileName;
+        public const string DefaultRunCommand = "run.cmd";
+
+        private static string _clrFolder = null;
+        private static string _reefJar = null;
+        private static string _className = Constants.BridgeLaunchClass;
+        private static string _runCommand = DefaultRunCommand;
+        private static string _submitControlForAllocatedEvaluator = 
"submitContextAndTask"; // submitContext, submitContextAndTask, 
submitContextAndServiceAndTask
+
+        public static HashSet<string> AppDll
+        {
+            get
+            {
+                HashSet<string> appDlls = new HashSet<string>();
+                appDlls.Add(typeof(HelloStartHandler).Assembly.GetName().Name);
+                appDlls.Add(typeof(HelloTask).Assembly.GetName().Name);
+                appDlls.Add(typeof(INameServer).Assembly.GetName().Name);
+                return appDlls;
+            }
+        }
+
+        public static IConfiguration ClrConfigurations
+        {
+            get
+            {
+                return DriverBridgeConfiguration.ConfigurationModule
+                .Set(DriverBridgeConfiguration.OnDriverStarted, 
GenericType<HelloStartHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<HelloAllocatedEvaluatorHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<AnotherHelloAllocatedEvaluatorHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnContextActive, 
GenericType<HelloActiveContextHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskMessage, 
GenericType<HelloTaskMessageHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorFailed, 
GenericType<HelloFailedEvaluatorHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskFailed, 
GenericType<HelloFailedTaskHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskRunning, 
GenericType<HelloRunningTaskHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorRequested, 
GenericType<HelloEvaluatorRequestorHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnHttpEvent, 
GenericType<HelloHttpHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorCompleted, 
GenericType<HelloCompletedEvaluatorHandler>.Class)
+                .Set(DriverBridgeConfiguration.CustomTraceListeners, 
GenericType<DefaultCustomTraceListener>.Class)
+                .Set(DriverBridgeConfiguration.CustomTraceLevel, 
Level.Info.ToString())
+                .Set(DriverBridgeConfiguration.CommandLineArguments, 
_submitControlForAllocatedEvaluator) // this is for testing purpose only
+                .Set(DriverBridgeConfiguration.OnDriverRestarted, 
GenericType<HelloRestartHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnDriverReconnect, 
GenericType<DefaultLocalHttpDriverConnection>.Class)
+                .Set(DriverBridgeConfiguration.OnDirverRestartContextActive, 
GenericType<HelloDriverRestartActiveContextHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnDriverRestartTaskRunning, 
GenericType<HelloDriverRestartRunningTaskHandler>.Class)
+                .Build();
+            }
+        }
+
+        public static void Main(string[] args)
+        {
+            Console.WriteLine("start running client: " + DateTime.Now);
+            bool runOnYarn = false;
+            if (args != null)
+            {
+                if (args.Length > 0)
+                {
+                    runOnYarn = bool.Parse(args[0]);
+                }
+
+                if (args.Length > 1)
+                {
+                    _className = args[1];
+                }
+                if (args.Length > 2)
+                {
+                    _clrFolder = args[2];
+                }
+                if (args.Length > 3)
+                {
+                    _reefJar = args[3];
+                }
+                if (args.Length > 4)
+                {
+                    _runCommand = args[4];
+                }
+            }
+
+            if (string.IsNullOrWhiteSpace(_reefJar))
+            {
+                _reefJar = 
Path.Combine(Environment.GetEnvironmentVariable(ReefHome), DefaultReefJar);
+            }
+
+            if (string.IsNullOrWhiteSpace(_clrFolder))
+            {
+                _clrFolder = 
Path.Combine(Environment.GetEnvironmentVariable(ReefHome), DefaultClrFolder);
+            }
+
+            // Configurable driver submission settings:
+            // DriverMemory, default to 512
+            // DriverIdentifer, default to "ReefClrBridge" 
+            // Submit, default to True. Setting it to false and Java client 
will construct the driver.config and write to to FS without submitting the job
+            // ClientWaitTime, default to -1 which means client will wait till 
Driver is done
+            // SubmissionDirectory, default to a tmp folder on (H)DFS 
according to the YARN assigned application id, if user sets it, it must be 
guaranteed to be unique across multiple jobs
+            // RunOnYarn, default to false to run on local runtime.
+            // UpdateJarBeforeSubmission, default to true. Setting it to false 
can reduce startup time, but only if the jar file already contains all 
application dlls.
+            // JavaLogLevel, default to INFO. 
+            DriverSubmissionSettings driverSubmissionSettings = new 
DriverSubmissionSettings()
+                                                                    {
+                                                                        
RunOnYarn = runOnYarn,
+                                                                        
SubmissionDirectory = "reefClrBridgeTmp/job_" + 
Guid.NewGuid().ToString("N").Substring(0, 8)
+                                                                    };
+
+            Console.WriteLine("start calling Run: " + DateTime.Now);
+            ClrClientHelper.Run(AppDll, ClrConfigurations, 
driverSubmissionSettings, _reefJar, _runCommand, _clrFolder, _className);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj 
b/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
new file mode 100644
index 0000000..b173562
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
@@ -0,0 +1,134 @@
+<?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>{5094C35B-4FDB-4322-AC05-45D684501CBF}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Org.Apache.REEF.Client</RootNamespace>
+    <AssemblyName>Org.Apache.REEF.Client</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <RestorePackages>true</RestorePackages>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
+  </PropertyGroup>
+  <Import Project="$(SolutionDir)\build.props" />
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    
<OutputPath>$(BinDir)\$(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>$(BinDir)\$(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>$(BinDir)\$(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>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <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="CLRBridgeClient.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="run.cmd" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference 
Include="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\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="$(SolutionDir)\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
+      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
+      <Name>Org.Apache.REEF.Wake</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>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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.Client/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Properties/AssemblyInfo.cs 
b/lang/cs/Org.Apache.REEF.Client/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ca5e1fb
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Client/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.Client")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Org.Apache.REEF.Client")]
+[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("8717944c-5e99-4f95-a916-5ca3c3f8e697")]
+
+// 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.Client/run.cmd
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/run.cmd 
b/lang/cs/Org.Apache.REEF.Client/run.cmd
new file mode 100644
index 0000000..3dca837
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Client/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=%REEF_HOME%\lang\java\reef-bridge-project\reef-bridge\target\reef-bridge-0.11.0-incubating-SNAPSHOT-shaded.jar
+
+set 
LOGGING_CONFIG=-Djava.util.logging.config.class=org.apache.reef.util.logging.CLRLoggingConfig
+
+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% %*
+::%LOGGING_CONFIG%
+echo %CMD%
+%CMD%

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj 
b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
index d707d48..572af49 100644
--- a/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.csproj
+++ b/lang/cs/Org.Apache.REEF.Common/Org.Apache.REEF.Common.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.Driver/Org.Apache.REEF.Driver.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj 
b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
index ef874e8..8512128 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
+++ b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
@@ -30,7 +30,7 @@ under the License.
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\..\..\..</SolutionDir>
     <RestorePackages>true</RestorePackages>
   </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.Evaluator/Org.Apache.REEF.Evaluator.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Evaluator/Org.Apache.REEF.Evaluator.csproj 
b/lang/cs/Org.Apache.REEF.Evaluator/Org.Apache.REEF.Evaluator.csproj
index f5fc9de..cf26169 100644
--- a/lang/cs/Org.Apache.REEF.Evaluator/Org.Apache.REEF.Evaluator.csproj
+++ b/lang/cs/Org.Apache.REEF.Evaluator/Org.Apache.REEF.Evaluator.csproj
@@ -31,7 +31,7 @@ under the License.
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\</SolutionDir>
     <RestorePackages>true</RestorePackages>
   </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.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
 
b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
index ea4fbf8..a9a0471 100644
--- 
a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
+++ 
b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.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.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
 
b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
index 3043ba7..a7645b9 100644
--- 
a/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
+++ 
b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.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.Examples.Tasks/Org.Apache.REEF.Examples.Tasks.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Examples.Tasks/Org.Apache.REEF.Examples.Tasks.csproj 
b/lang/cs/Org.Apache.REEF.Examples.Tasks/Org.Apache.REEF.Examples.Tasks.csproj
index 1d0f8d2..333e2b7 100644
--- 
a/lang/cs/Org.Apache.REEF.Examples.Tasks/Org.Apache.REEF.Examples.Tasks.csproj
+++ 
b/lang/cs/Org.Apache.REEF.Examples.Tasks/Org.Apache.REEF.Examples.Tasks.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.Network/Org.Apache.REEF.Network.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.csproj 
b/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.csproj
index 6824277..6797c1d 100644
--- a/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.csproj
+++ b/lang/cs/Org.Apache.REEF.Network/Org.Apache.REEF.Network.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.Tang.Examples/Org.Apache.REEF.Tang.Examples.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.csproj 
b/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.csproj
index 33c9b03..1a95e55 100644
--- a/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.csproj
+++ b/lang/cs/Org.Apache.REEF.Tang.Examples/Org.Apache.REEF.Tang.Examples.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.Tang.Tools/Org.Apache.REEF.Tang.Tools.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.csproj 
b/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.csproj
index 84d6e09..7e15775 100644
--- a/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.csproj
+++ b/lang/cs/Org.Apache.REEF.Tang.Tools/Org.Apache.REEF.Tang.Tools.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.Tang/Org.Apache.REEF.Tang.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj 
b/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
index b73bb03..ce59e7c 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
+++ b/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.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.Tests/ConfigFiles/evaluator.conf
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/ConfigFiles/evaluator.conf 
b/lang/cs/Org.Apache.REEF.Tests/ConfigFiles/evaluator.conf
new file mode 100644
index 0000000..67256f5
Binary files /dev/null and 
b/lang/cs/Org.Apache.REEF.Tests/ConfigFiles/evaluator.conf differ

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorConfigurationsTests.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorConfigurationsTests.cs 
b/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorConfigurationsTests.cs
new file mode 100644
index 0000000..c6ed210
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorConfigurationsTests.cs
@@ -0,0 +1,42 @@
+/**
+ * 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 Org.Apache.REEF.Common;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Org.Apache.REEF.Tests.Evaluator
+{
+    [TestClass]
+    public class EvaluatorConfigurationsTests
+    {
+        [TestMethod, Priority(0), TestCategory("Unit")]
+        [DeploymentItem(@"ConfigFiles")]
+        public void TestEvaluatorConfigurations()
+        {
+            EvaluatorConfigurations evaluatorConfigurations = new 
EvaluatorConfigurations("evaluator.conf");
+
+            
Assert.IsTrue(evaluatorConfigurations.EvaluatorId.Equals("Node-1-1414443998204"));
+
+            
Assert.IsTrue(evaluatorConfigurations.ApplicationId.Equals("REEF_LOCAL_RUNTIME"));
+
+            string rootContextConfigString = 
evaluatorConfigurations.RootContextConfiguration;
+            Assert.IsFalse(string.IsNullOrWhiteSpace(rootContextConfigString));
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorTests.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorTests.cs 
b/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorTests.cs
new file mode 100644
index 0000000..c315d4b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Evaluator/EvaluatorTests.cs
@@ -0,0 +1,95 @@
+/**
+ * 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 Org.Apache.REEF.Common.Avro;
+using Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using System.IO;
+using Org.Apache.REEF.Examples.Tasks.ShellTask;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+
+namespace Org.Apache.REEF.Tests.Evaluator
+{
+    [TestClass]
+    public class EvaluatorTests
+    {
+        [TestMethod, Priority(0), TestCategory("Functional")]
+        [Description("Parse Evaluator configuration from Java, inject and 
execute Shell task with DIR command based on the configuration")]
+        [DeploymentItem(@"ConfigFiles")]
+        public void CanInjectAndExecuteTask()
+        {
+            //To enforce that shell task dll be copied to output directory.
+            ShellTask tmpTask = new ShellTask("invalid");
+            Assert.IsNotNull(tmpTask);
+
+            string tmp = Directory.GetCurrentDirectory();
+            Assert.IsNotNull(tmp);
+
+            AvroConfigurationSerializer serializer = new 
AvroConfigurationSerializer();
+            AvroConfiguration avroConfiguration = 
serializer.AvroDeseriaizeFromFile("evaluator.conf");
+            Assert.IsNotNull(avroConfiguration);
+
+            ICsConfigurationBuilder cb = 
TangFactory.GetTang().NewConfigurationBuilder();
+            cb.AddConfiguration(TaskConfiguration.ConfigurationModule
+                .Set(TaskConfiguration.Identifier, "Test_CLRContext_task")
+                .Set(TaskConfiguration.Task, GenericType<ShellTask>.Class)
+                .Build());
+            cb.BindNamedParameter<ShellTask.Command, 
string>(GenericType<ShellTask.Command>.Class, "dir");
+
+            IConfiguration taskConfiguration = cb.Build();
+
+            string taskConfig = serializer.ToString(taskConfiguration);
+
+            ITask task = null;
+            TaskConfiguration config = new TaskConfiguration(taskConfig);
+            Assert.IsNotNull(config);
+            try
+            {
+                IInjector injector = 
TangFactory.GetTang().NewInjector(config.TangConfig);
+                task = (ITask)injector.GetInstance(typeof(ITask));
+            }
+            catch (Exception e)
+            {
+                throw new InvalidOperationException("unable to inject task 
with configuration: " + taskConfig, e);
+            }
+
+            byte[] bytes = task.Call(null);
+            string result = System.Text.Encoding.Default.GetString(bytes);
+
+            //a dir command is executed in the container directory, which 
includes the file "evaluator.conf"
+            Assert.IsTrue(result.Contains("evaluator.conf"));
+        }
+
+        [TestMethod, Priority(0), TestCategory("Unit")]
+        [Description("Test driver information extacted from Http server")]
+        public void CanExtractDriverInformaiton()
+        {
+            const string InfoString = 
"{\"remoteId\":\"socket://10.121.136.231:14272\",\"startTime\":\"2014 08 28 
10:50:32\",\"services\":[{\"serviceName\":\"NameServer\",\"serviceInfo\":\"10.121.136.231:16663\"}]}";
+            AvroDriverInfo info = 
AvroJsonSerializer<AvroDriverInfo>.FromString(InfoString);
+            
Assert.IsTrue(info.remoteId.Equals("socket://10.121.136.231:14272"));
+            Assert.IsTrue(info.startTime.Equals("2014 08 28 10:50:32"));
+            Assert.IsTrue(new DriverInformation(info.remoteId, info.startTime, 
info.services).NameServerId.Equals("10.121.136.231:16663"));
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
new file mode 100644
index 0000000..58922fe
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
@@ -0,0 +1,99 @@
+/**
+ * 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.Diagnostics;
+using System.IO;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Bridge
+{
+    [TestClass]
+    public class TestBridgeClient : ReefFunctionalTest
+    {
+        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(TestBridgeClient));
+
+        [TestInitialize()]
+        public void TestSetup()
+        {
+            CleanUp();
+            Init();
+        }
+
+        [TestCleanup]
+        public void TestCleanup()
+        {
+            Console.WriteLine("Post test check and clean up");
+            CleanUp();
+        }
+
+        [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Run CLR Bridge on local runtime")]
+        [DeploymentItem(@".")]
+        [Ignore] // This is diabled by default on builds
+        public void CanRunClrBridgeOnYarn()
+        {
+            RunClrBridgeClient(runOnYarn: true);
+        }
+
+        [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Run CLR Bridge on local runtime")]
+        [DeploymentItem(@".")]
+        [Timeout(180 * 1000)]
+        public void CanRunClrBridgeOnLocalRuntime()
+        {
+            IsOnLocalRuntiime = true;
+            RunClrBridgeClient(runOnYarn: false);
+            ValidateSuccessForLocalRuntime(2);
+        }
+
+        private void RunClrBridgeClient(bool runOnYarn)
+        {
+            const string clrBridgeClient = "Org.Apache.REEF.Client.exe";
+            List<string> arguments = new List<string>();
+            arguments.Add(runOnYarn.ToString());
+            arguments.Add(Constants.BridgeLaunchClass);
+            arguments.Add(".");
+            arguments.Add(Path.Combine(_binFolder, 
Constants.BridgeJarFileName));
+            arguments.Add(Path.Combine(_binFolder, _cmdFile));
+
+            ProcessStartInfo startInfo = new ProcessStartInfo()
+            {
+                FileName = clrBridgeClient,
+                Arguments = string.Join(" ", arguments),
+                RedirectStandardOutput = true,
+                UseShellExecute = false,
+                CreateNoWindow = false
+            }; 
+            
+            LOGGER.Log(Level.Info, "executing\r\n" + startInfo.FileName + 
"\r\n" + startInfo.Arguments);
+            using (Process process = Process.Start(startInfo))
+            {
+                process.WaitForExit();
+                if (process.ExitCode != 0)
+                {
+                    throw new InvalidOperationException("CLR client exited 
with error code " + process.ExitCode);
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestHelloBridgeHandlers.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestHelloBridgeHandlers.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestHelloBridgeHandlers.cs
new file mode 100644
index 0000000..3e7c035
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestHelloBridgeHandlers.cs
@@ -0,0 +1,100 @@
+/**
+ * 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.IO;
+using System.Linq;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Examples.HelloCLRBridge.Handlers;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Bridge
+{
+    [TestClass]
+    public class TestHelloBridgeHandlers : ReefFunctionalTest
+    {
+        [TestInitialize()]
+        public void TestSetup()
+        {
+            CleanUp();
+            Init();
+        }
+
+        [TestCleanup]
+        public void TestCleanup()
+        {
+            Console.WriteLine("Post test check and clean up");
+            CleanUp();
+        }
+
+        [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Test Hello Handler on local runtime")]
+        [DeploymentItem(@".")]
+        [Timeout(180 * 1000)]
+        public void RunHelloHandlerOnLocalRuntime()
+        {
+            IsOnLocalRuntiime = true;
+            TestRun(AssembliesToCopy(), DriverConfiguration());
+            ValidateSuccessForLocalRuntime(2);
+            ValidateEvaluatorSetting();
+        }
+
+        public IConfiguration DriverConfiguration()
+        {
+            return DriverBridgeConfiguration.ConfigurationModule
+                 .Set(DriverBridgeConfiguration.OnDriverStarted, 
GenericType<HelloStartHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<HelloAllocatedEvaluatorHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<AnotherHelloAllocatedEvaluatorHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnContextActive, 
GenericType<HelloActiveContextHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnTaskMessage, 
GenericType<HelloTaskMessageHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnEvaluatorFailed, 
GenericType<HelloFailedEvaluatorHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnTaskFailed, 
GenericType<HelloFailedTaskHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnTaskRunning, 
GenericType<HelloRunningTaskHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnEvaluatorRequested, 
GenericType<HelloEvaluatorRequestorHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnHttpEvent, 
GenericType<HelloHttpHandler>.Class)
+                 .Set(DriverBridgeConfiguration.OnEvaluatorCompleted, 
GenericType<HelloCompletedEvaluatorHandler>.Class)
+                 .Set(DriverBridgeConfiguration.CustomTraceListeners, 
GenericType<DefaultCustomTraceListener>.Class)
+                 .Set(DriverBridgeConfiguration.CustomTraceLevel, 
Level.Info.ToString())
+                 .Set(DriverBridgeConfiguration.CommandLineArguments, 
"submitContextAndTask")
+                 .Build();
+        }
+
+        public HashSet<string> AssembliesToCopy()
+        {
+            HashSet<string> appDlls = new HashSet<string>();
+            appDlls.Add(typeof(HelloStartHandler).Assembly.GetName().Name);
+            appDlls.Add(typeof(HelloTask).Assembly.GetName().Name);
+            return appDlls;
+        }
+
+        private void ValidateEvaluatorSetting()
+        {
+            const string successIndication = "Evaluator is assigned with 512 
MB of memory and 2 cores.";
+            string[] lines = File.ReadAllLines(GetLogFile(_stdout));
+            string[] successIndicators = lines.Where(s => 
s.Contains(successIndication)).ToArray();
+            Assert.IsTrue(successIndicators.Count() >= 1);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleEventHandlers.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleEventHandlers.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleEventHandlers.cs
new file mode 100644
index 0000000..71091e7
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestSimpleEventHandlers.cs
@@ -0,0 +1,108 @@
+/**
+ * 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.IO;
+using System.Linq;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Examples.HelloCLRBridge.Handlers;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Bridge
+{
+    [TestClass]
+    public class TestSimpleEventHandlers : ReefFunctionalTest
+    {
+        [TestInitialize()]
+        public void TestSetup()
+        {
+            CleanUp();
+            Init();
+        }
+
+        [TestCleanup]
+        public void TestCleanup()
+        {
+            Console.WriteLine("Post test check and clean up");
+            CleanUp();
+        }
+
+        //[TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Test Hello Handler on local runtime")]
+        [DeploymentItem(@".")]
+        [Timeout(180 * 1000)]
+        public void RunSimpleEventHandlerOnLocalRuntime()
+        {
+            IsOnLocalRuntiime = true;
+            TestRun(AssembliesToCopy(), DriverConfiguration());
+            ValidateSuccessForLocalRuntime(2);
+            ValidateEvaluatorSetting();
+        }
+
+        public IConfiguration DriverConfiguration()
+        {
+            return DriverBridgeConfiguration.ConfigurationModule
+                .Set(DriverBridgeConfiguration.OnDriverStarted, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<AnotherHelloAllocatedEvaluatorHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnContextActive, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskMessage, 
GenericType<HelloTaskMessageHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorFailed, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskCompleted, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskFailed, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnTaskRunning, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorRequested, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnHttpEvent, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.OnEvaluatorCompleted, 
GenericType<HelloSimpleEventHandlers>.Class)
+                .Set(DriverBridgeConfiguration.CustomTraceListeners, 
GenericType<DefaultCustomTraceListener>.Class)
+                .Set(DriverBridgeConfiguration.CustomTraceLevel, 
Level.Info.ToString())
+                .Set(DriverBridgeConfiguration.CommandLineArguments, 
"submitContextAndTask") 
+                .Set(DriverBridgeConfiguration.OnDriverRestarted, 
GenericType<HelloRestartHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnDriverReconnect, 
GenericType<DefaultLocalHttpDriverConnection>.Class)
+                .Set(DriverBridgeConfiguration.OnDirverRestartContextActive, 
GenericType<HelloDriverRestartActiveContextHandler>.Class)
+                .Set(DriverBridgeConfiguration.OnDriverRestartTaskRunning, 
GenericType<HelloDriverRestartRunningTaskHandler>.Class)
+                .Build();
+        }
+
+        public HashSet<string> AssembliesToCopy()
+        {
+            HashSet<string> appDlls = new HashSet<string>();
+            
appDlls.Add(typeof(HelloSimpleEventHandlers).Assembly.GetName().Name);
+            appDlls.Add(typeof(HelloTask).Assembly.GetName().Name);
+            appDlls.Add(typeof(INameServer).Assembly.GetName().Name);
+            return appDlls;
+        }
+
+        private void ValidateEvaluatorSetting()
+        {
+            const string successIndication = "Evaluator is assigned with 512 
MB of memory and 2 cores.";
+            string[] lines = File.ReadAllLines(GetLogFile(_stdout));
+            string[] successIndicators = lines.Where(s => 
s.Contains(successIndication)).ToArray();
+            Assert.IsTrue(successIndicators.Count() >= 1);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/DriverTestStartHandler.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/DriverTestStartHandler.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/DriverTestStartHandler.cs
new file mode 100644
index 0000000..b3f64dd
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/DriverTestStartHandler.cs
@@ -0,0 +1,46 @@
+/**
+ * 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 Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.bridge;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Wake.Time;
+
+namespace Org.Apache.REEF.Tests.Functional.Driver
+{
+    public class DriverTestStartHandler : IStartHandler
+    {
+        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(DriverTestStartHandler));
+
+        private IClock _clock;
+        private HttpServerPort _httpServerPort;
+
+        [Inject]
+        public DriverTestStartHandler(IClock clock, HttpServerPort 
httpServerPort)
+        {
+            _clock = clock;
+            _httpServerPort = httpServerPort;
+            Identifier = "DriverTestStartHandler";
+            LOGGER.Log(Level.Info, "Http Server port number: " + 
httpServerPort.PortNumber);
+        }
+
+        public string Identifier { get; set; }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/TestDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/TestDriver.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/TestDriver.cs
new file mode 100644
index 0000000..18aa59b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Driver/TestDriver.cs
@@ -0,0 +1,68 @@
+/**
+ * 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.Collections.Generic;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Driver
+{
+    [TestClass]
+    public class TestDriver : ReefFunctionalTest
+    {
+        [TestInitialize()]
+        public void TestSetup()
+        {
+            CleanUp();
+        }
+
+        [TestCleanup]
+        public void TestCleanup()
+        {
+            CleanUp();
+        }
+
+        /// <summary>
+        /// This is to test DriverTestStartHandler. No evaluator and tasks are 
involked.
+        /// </summary>
+        [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Test DriverTestStartHandler. No evaluator and tasks are 
involked")]
+        [DeploymentItem(@".")]
+        [Timeout(180 * 1000)]
+        public void TestDriverStart()
+        {
+            IConfiguration driverConfig = 
DriverBridgeConfiguration.ConfigurationModule
+             .Set(DriverBridgeConfiguration.OnDriverStarted, 
GenericType<DriverTestStartHandler>.Class)
+             .Set(DriverBridgeConfiguration.CustomTraceListeners, 
GenericType<DefaultCustomTraceListener>.Class)
+             .Set(DriverBridgeConfiguration.CustomTraceLevel, 
Level.Info.ToString())
+             .Build();
+
+            HashSet<string> appDlls = new HashSet<string>();
+            
appDlls.Add(typeof(DriverTestStartHandler).Assembly.GetName().Name);
+
+            TestRun(appDlls, driverConfig);
+
+            ValidateSuccessForLocalRuntime(0);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
new file mode 100644
index 0000000..24141fb
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
@@ -0,0 +1,117 @@
+/**
+ * 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 Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Messaging
+{
+    public class MessageDriver : IStartHandler, 
IObserver<IAllocatedEvaluator>, IObserver<IEvaluatorRequestor>, 
IObserver<ITaskMessage>, IObserver<IRunningTask>
+    {
+        public const int NumerOfEvaluator = 1;
+
+        public const string Message = "MESSAGE::DRIVER";
+
+        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MessageDriver));
+
+        [Inject]
+        public MessageDriver()
+        {
+            CreateClassHierarchy();
+            Identifier = "TaskMessagingStartHandler";
+        }
+
+        public string Identifier { get; set; }
+
+        public void OnNext(IAllocatedEvaluator eval)
+        {
+            string taskId = "Task_" + eval.Id;
+
+            IConfiguration contextConfiguration = 
ContextConfiguration.ConfigurationModule
+                .Set(ContextConfiguration.Identifier, taskId)
+                .Build();
+
+            IConfiguration taskConfiguration = 
TaskConfiguration.ConfigurationModule
+                .Set(TaskConfiguration.Identifier, taskId)
+                .Set(TaskConfiguration.Task, GenericType<MessageTask>.Class)
+                .Set(TaskConfiguration.OnMessage, 
GenericType<MessageTask.MessagingDriverMessageHandler>.Class)
+                .Set(TaskConfiguration.OnSendMessage, 
GenericType<MessageTask>.Class)
+                .Build();
+
+            eval.SubmitContextAndTask(contextConfiguration, taskConfiguration);
+        }
+
+        public void OnNext(IEvaluatorRequestor evalutorRequestor)
+        {
+            EvaluatorRequest request = new EvaluatorRequest(NumerOfEvaluator, 
512, 2, "WonderlandRack", "TaskMessagingEvaluator");
+            evalutorRequestor.Submit(request);
+        }
+
+        public void OnNext(ITaskMessage taskMessage)
+        {
+            string msgReceived = 
ByteUtilities.ByteArrarysToString(taskMessage.Message);
+
+            LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, 
"CLR TaskMessagingTaskMessageHandler received following message from Task: {0}, 
Message: {1}.", taskMessage.TaskId, msgReceived));
+
+            if (!msgReceived.StartsWith(MessageTask.MessageSend, true, 
CultureInfo.CurrentCulture))
+            {
+                Exceptions.Throw(new Exception("Unexpected message: " + 
msgReceived), "Unexpected task message received: " + msgReceived, LOGGER);
+            }
+        }
+
+        public void OnNext(IRunningTask runningTask)
+        {
+            LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, 
"TaskMessegingRunningTaskHandler: {0} is to send message {1}.", runningTask.Id, 
Message));
+            runningTask.Send(ByteUtilities.StringToByteArrays(Message));
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        private void CreateClassHierarchy()
+        {
+            HashSet<string> clrDlls = new HashSet<string>();
+            clrDlls.Add(typeof(IDriver).Assembly.GetName().Name);
+            clrDlls.Add(typeof(ITask).Assembly.GetName().Name);
+            clrDlls.Add(typeof(MessageTask).Assembly.GetName().Name);
+
+            ClrHandlerHelper.GenerateClassHierarchy(clrDlls);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageTask.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageTask.cs
new file mode 100644
index 0000000..0c55983
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageTask.cs
@@ -0,0 +1,104 @@
+/**
+ * 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.Globalization;
+using System.Threading;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Tasks.Events;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Messaging
+{
+    public class MessageTask : ITask, ITaskMessageSource
+    {
+        public const string MessageSend = "MESSAGE:TASK";
+
+        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MessageTask));
+
+        [Inject]
+        public MessageTask()
+        {
+        }
+
+        public HelloService Service { get; set; }
+
+        public Optional<TaskMessage> Message
+        {
+            get
+            {
+                TaskMessage defaultTaskMessage = TaskMessage.From(
+                    "messagingSourceId",
+                    ByteUtilities.StringToByteArrays(MessageSend + " generated 
at " + DateTime.Now.ToString(CultureInfo.InvariantCulture)));
+                return Optional<TaskMessage>.Of(defaultTaskMessage);
+            }
+
+            set
+            {
+            }
+        }
+
+        public byte[] Call(byte[] memento)
+        {
+            Console.WriteLine("Hello, CLR TaskMsg!");
+            Thread.Sleep(5 * 1000);
+            return null;
+        }
+
+        public void Dispose()
+        {
+            LOGGER.Log(Level.Info, "TaskMsg disposed.");
+        }
+
+        private void DriverMessage(string message)
+        {
+            LOGGER.Log(Level.Info, "Receieved DriverMessage in TaskMsg: " + 
message);
+            if (!message.Equals(MessageDriver.Message))
+            {
+                Exceptions.Throw(new Exception("Unexpected driver message: " + 
message), "Unexpected driver message received: " + message, LOGGER);
+            }
+        }
+
+        public class MessagingDriverMessageHandler : IDriverMessageHandler
+        {
+            private MessageTask _parentTask;
+
+            [Inject]
+            public MessagingDriverMessageHandler(MessageTask task)
+            {
+                _parentTask = task;
+            }
+
+            public void Handle(IDriverMessage value)
+            {
+                string message = string.Empty;
+                LOGGER.Log(Level.Verbose, "Receieved a message from driver, 
handling it with MessagingDriverMessageHandler");
+                if (value.Message.IsPresent())
+                {
+                    message = 
ByteUtilities.ByteArrarysToString(value.Message.Value);
+                }
+                _parentTask.DriverMessage(message);
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/05766f9d/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/TestTaskMessage.cs
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/TestTaskMessage.cs 
b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/TestTaskMessage.cs
new file mode 100644
index 0000000..7a0b59a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/TestTaskMessage.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.Collections.Generic;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Tests.Functional.Messaging
+{
+    [TestClass]
+    public class TestTaskMessage : ReefFunctionalTest
+    {
+        [TestInitialize()]
+        public void TestSetup()
+        {
+            CleanUp();
+            Init();
+        }
+
+        [TestCleanup]
+        public void TestCleanup()
+        {
+            CleanUp();
+        }
+
+        /// <summary>
+        /// This test is to test both task message and driver message. The 
messages are sent 
+        /// from one side and received in the corresponding handlers and 
verified in the test 
+        /// </summary>
+        [TestMethod, Priority(1), TestCategory("FunctionalGated")]
+        [Description("Test task message and driver message")]
+        [DeploymentItem(@".")]
+        [Timeout(180 * 1000)]
+        public void TestSendTaskMessage()
+        {
+            IConfiguration driverConfig = 
DriverBridgeConfiguration.ConfigurationModule
+             .Set(DriverBridgeConfiguration.OnDriverStarted, 
GenericType<MessageDriver>.Class)
+             .Set(DriverBridgeConfiguration.OnEvaluatorAllocated, 
GenericType<MessageDriver>.Class)
+             .Set(DriverBridgeConfiguration.OnTaskMessage, 
GenericType<MessageDriver>.Class)
+             .Set(DriverBridgeConfiguration.OnTaskRunning, 
GenericType<MessageDriver>.Class)
+             .Set(DriverBridgeConfiguration.OnEvaluatorRequested, 
GenericType<MessageDriver>.Class)
+             .Set(DriverBridgeConfiguration.CustomTraceListeners, 
GenericType<DefaultCustomTraceListener>.Class)
+             .Set(DriverBridgeConfiguration.CustomTraceLevel, 
Level.Info.ToString())
+             .Build();
+
+            HashSet<string> appDlls = new HashSet<string>();
+            appDlls.Add(typeof(MessageDriver).Assembly.GetName().Name);
+            appDlls.Add(typeof(MessageTask).Assembly.GetName().Name);
+
+            TestRun(appDlls, driverConfig);
+            ValidateSuccessForLocalRuntime(MessageDriver.NumerOfEvaluator);
+        }
+    }
+}
\ No newline at end of file

Reply via email to