[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
