version 0.1.5 release
This commit is contained in:
parent
93be3e4b66
commit
5c260ffe0b
|
|
@ -19,3 +19,5 @@ x64/
|
||||||
build/
|
build/
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Oo]bj/
|
[Oo]bj/
|
||||||
|
/Calypso/packages
|
||||||
|
/DryadLinqTests/packages
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
|
@ -45,75 +45,81 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Services.Client" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
|
@ -147,10 +153,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -90,10 +90,10 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
return fileServer.Uri.AbsoluteUri;
|
return fileServer.Uri.AbsoluteUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IProcess NewProcess(IProcessWatcher watcher, string commandLine)
|
public IProcess NewProcess(IProcessWatcher watcher, string commandLine, string commandLineArguments)
|
||||||
{
|
{
|
||||||
ISchedulerProcess process = scheduler.NewProcess();
|
ISchedulerProcess process = scheduler.NewProcess();
|
||||||
return new Process(process, watcher, commandLine, logger);
|
return new Process(process, watcher, commandLine, commandLineArguments, logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ScheduleProcess(IProcess ip, List<Affinity> affinities)
|
public void ScheduleProcess(IProcess ip, List<Affinity> affinities)
|
||||||
|
|
|
||||||
|
|
@ -368,8 +368,9 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
/// the application on the process' lifecycle</param>
|
/// the application on the process' lifecycle</param>
|
||||||
/// <param name="commandLine">the command line to use to start the process on the remote
|
/// <param name="commandLine">the command line to use to start the process on the remote
|
||||||
/// computer</param>
|
/// computer</param>
|
||||||
|
/// <param name="commandLineArguments">arguments to provide to the remote process</param>
|
||||||
/// <returns>a handle to the new process</returns>
|
/// <returns>a handle to the new process</returns>
|
||||||
IProcess NewProcess(IProcessWatcher watcher, string commandLine);
|
IProcess NewProcess(IProcessWatcher watcher, string commandLine, string commandLineArguments);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// request that a Process object, return from NewProcess, be scheduled according
|
/// request that a Process object, return from NewProcess, be scheduled according
|
||||||
|
|
|
||||||
|
|
@ -56,11 +56,6 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private State state;
|
private State state;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// string used to start the remote process
|
|
||||||
/// </summary>
|
|
||||||
private string commandLine;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// this is the handle that the scheduler supplies that is used to refer
|
/// this is the handle that the scheduler supplies that is used to refer
|
||||||
/// to the process
|
/// to the process
|
||||||
|
|
@ -114,11 +109,12 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// construct a new object to represent the lifecycle of a process being scheduled
|
/// construct a new object to represent the lifecycle of a process being scheduled
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Process(ISchedulerProcess p, IProcessWatcher w, string cmd, ILogger l)
|
public Process(ISchedulerProcess p, IProcessWatcher w, string cmd, string cmdLineArgs, ILogger l)
|
||||||
{
|
{
|
||||||
schedulerProcess = p;
|
schedulerProcess = p;
|
||||||
state = State.Initializing;
|
state = State.Initializing;
|
||||||
commandLine = cmd;
|
CommandLine = cmd;
|
||||||
|
CommandLineArguments = cmdLineArgs;
|
||||||
watcher = w;
|
watcher = w;
|
||||||
cancelTask = new TaskCompletionSource<bool>();
|
cancelTask = new TaskCompletionSource<bool>();
|
||||||
directory = null;
|
directory = null;
|
||||||
|
|
@ -137,7 +133,12 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the string used to start the remote process
|
/// the string used to start the remote process
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string CommandLine { get { return commandLine; } }
|
public string CommandLine { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// arguments provided when starting the remote process
|
||||||
|
/// </summary>
|
||||||
|
public string CommandLineArguments { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the local directory of the process at the daemon's host computer
|
/// the local directory of the process at the daemon's host computer
|
||||||
|
|
@ -199,8 +200,12 @@ namespace Microsoft.Research.Dryad.ClusterInterface
|
||||||
|
|
||||||
ToMatched(computer, DateTime.Now.ToFileTimeUtc());
|
ToMatched(computer, DateTime.Now.ToFileTimeUtc());
|
||||||
|
|
||||||
|
StringBuilder payload = new StringBuilder();
|
||||||
|
payload.AppendLine(CommandLine);
|
||||||
|
payload.AppendLine(CommandLineArguments);
|
||||||
|
|
||||||
Task<string> bail = interrupt.ContinueWith((t) => "");
|
Task<string> bail = interrupt.ContinueWith((t) => "");
|
||||||
Task<string> upload = PostRequest(computer, directory + "?op=create", Encoding.UTF8.GetBytes(commandLine));
|
Task<string> upload = PostRequest(computer, directory + "?op=create", Encoding.UTF8.GetBytes(payload.ToString()));
|
||||||
Task<string> completed = await Task.WhenAny(bail, upload);
|
Task<string> completed = await Task.WhenAny(bail, upload);
|
||||||
|
|
||||||
if (completed == bail)
|
if (completed == bail)
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Microsoft Corporation")]
|
[assembly: AssemblyCompany("Microsoft Corporation")]
|
||||||
[assembly: AssemblyProduct("DryadHttpClusterInterface")]
|
[assembly: AssemblyProduct("Dryad")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
@ -51,5 +51,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -78,8 +78,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalScheduler", "LocalSche
|
||||||
{A85853FB-AAAB-4F1F-AAAB-D051E8F0B2E6} = {A85853FB-AAAB-4F1F-AAAB-D051E8F0B2E6}
|
{A85853FB-AAAB-4F1F-AAAB-D051E8F0B2E6} = {A85853FB-AAAB-4F1F-AAAB-D051E8F0B2E6}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DryadLinqTests", "DryadLinqTests\DryadLinqTests.csproj", "{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
|
|
@ -146,10 +144,6 @@ Global
|
||||||
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Debug|x64.Build.0 = Debug|x64
|
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Debug|x64.Build.0 = Debug|x64
|
||||||
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Release|x64.ActiveCfg = Release|x64
|
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Release|x64.ActiveCfg = Release|x64
|
||||||
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Release|x64.Build.0 = Release|x64
|
{FA798DE2-A442-4D2B-B31A-FA9274308290}.Release|x64.Build.0 = Release|x64
|
||||||
{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}.Release|x64.Build.0 = Release|x64
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
|
@ -65,68 +65,68 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.166.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core">
|
<Reference Include="System.Core">
|
||||||
|
|
@ -138,13 +138,13 @@
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Services.Client" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
|
@ -212,10 +212,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyProduct("DryadLinqGraphManager")]
|
[assembly: AssemblyProduct("Dryad")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
|
@ -51,5 +51,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,20 @@
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.0.7" newVersion="1.1.0.7" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Hadoop.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.0.7" newVersion="1.1.0.7" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -5,6 +5,14 @@
|
||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
||||||
|
|
@ -18,12 +26,20 @@
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Hadoop.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight.Framework" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,38 @@ using Microsoft.Research.Peloponnese.Storage;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace DryadLinqTests
|
namespace DryadLinqTests
|
||||||
{
|
{
|
||||||
public class ApplyAndForkTests
|
public class ApplyAndForkTests
|
||||||
{
|
{
|
||||||
|
public static void Run(DryadLinqContext context, string matchPattern)
|
||||||
|
{
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
TestLog.Message(" ApplyAndForkTests ");
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
|
||||||
|
var tests = new Dictionary<string, Action>()
|
||||||
|
{
|
||||||
|
{"NonHomomorphicUnaryApply", () => NonHomomorphicUnaryApply(context) },
|
||||||
|
{"HomomorphicUnaryApply", () => HomomorphicUnaryApply(context) },
|
||||||
|
{"NonHomomorphicBinaryApply", () => NonHomomorphicBinaryApply(context) },
|
||||||
|
{"LeftHomomorphicBinaryApply", () => LeftHomomorphicBinaryApply(context) },
|
||||||
|
{"FullHomomorphicBinaryApply_DifferentDataSets", () => FullHomomorphicBinaryApply_DifferentDataSets(context) },
|
||||||
|
{"FullHomomorphicBinaryApply_IdenticalDataSets", () => FullHomomorphicBinaryApply_IdenticalDataSets(context) },
|
||||||
|
{"Aggregate_WithCombiner", () => Aggregate_WithCombiner(context) },
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(test.Key, matchPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
|
||||||
|
{
|
||||||
|
test.Value.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static IEnumerable<int> NonHomomorphic_Unary_Func(IEnumerable<int> input)
|
public static IEnumerable<int> NonHomomorphic_Unary_Func(IEnumerable<int> input)
|
||||||
{
|
{
|
||||||
return input;
|
return input;
|
||||||
|
|
@ -57,172 +84,323 @@ namespace DryadLinqTests
|
||||||
throw new Exception("a node received empty right-data");
|
throw new Exception("a node received empty right-data");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool NonHomomorphicUnaryApply(DryadLinqContext context)
|
||||||
public static bool NonHomomorphicUnaryApply()
|
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "NonHomomorphicUnaryApply";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/NonHomomorphicUnaryApply.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
string outFile = "unittest/output/NonHomomorphicUnaryApply";
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
var q1 = pt1.ApplyPerPartition(x => NonHomomorphic_Unary_Func(x));
|
var q1 = pt1.ApplyPerPartition(x => NonHomomorphic_Unary_Func(x));
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.ApplyPerPartition(x => NonHomomorphic_Unary_Func(x));
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool HomomorphicUnaryApply()
|
public static bool HomomorphicUnaryApply(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "HomomorphicUnaryApply";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/HomomorphicUnaryApply.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/HomomorphicUnaryApply";
|
||||||
|
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
IQueryable<int> q1 = pt1.ApplyPerPartition(x => Homomorphic_Unary_Func(x));
|
||||||
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
var q1 = pt1.ApplyPerPartition(x => Homomorphic_Unary_Func(x));
|
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.ApplyPerPartition(x => Homomorphic_Unary_Func(x));
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool NonHomomorphicBinaryApply()
|
public static bool NonHomomorphicBinaryApply(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "NonHomomorphicBinaryApply";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/NonHomomorphicBinaryApply.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/NonHomomorphicBinaryApply";
|
||||||
|
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
IQueryable<int> q1 = pt1.Apply(pt1, (x, y) => NonHomomorphic_Binary_Func(x, y));
|
||||||
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
var q1 = pt1.Apply(pt1, (x, y) => NonHomomorphic_Binary_Func(x, y));
|
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.Apply(pt1, (x, y) => NonHomomorphic_Binary_Func(x, y));
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool LeftHomomorphicBinaryApply()
|
public static bool LeftHomomorphicBinaryApply(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "LeftHomomorphicBinaryApply";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/LeftHomomorphicBinaryApply.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/LeftHomomorphicBinaryApply";
|
||||||
|
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt1, (x, y) => LeftHomomorphic_Binary_Func(x, y), true);
|
||||||
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
var q1 = pt1.ApplyPerPartition(pt1, (x, y) => LeftHomomorphic_Binary_Func(x, y), true);
|
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt1, (x, y) => LeftHomomorphic_Binary_Func(x, y), true);
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool FullHomomorphicBinaryApply_DifferentDataSets()
|
public static bool FullHomomorphicBinaryApply_DifferentDataSets(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "FullHomomorphicBinaryApply_DifferentDataSets";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/FullHomomorphicBinaryApply_DifferentDataSets.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/FullHomomorphicBinaryApply_DifferentDataSets";
|
||||||
|
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt2 = simple.Select(x => x.First());
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt2, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
||||||
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
var q1 = pt1.ApplyPerPartition(pt2, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt2, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool FullHomomorphicBinaryApply_IdenticalDataSets()
|
public static bool FullHomomorphicBinaryApply_IdenticalDataSets(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "FullHomomorphicBinaryApply_IdenticalDataSets";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string outFile = "unittest/output/FullHomomorphicBinaryApply_2.out";
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/FullHomomorphicBinaryApply_2";
|
||||||
|
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt1, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
||||||
var q1 = pt1.ApplyPerPartition(pt1, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
var jobInfo = q1.ToStore<int>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
var jobInfo = q1.ToStore<int>(outFile).Submit();
|
|
||||||
jobInfo.Wait();
|
jobInfo.Wait();
|
||||||
|
|
||||||
passed &= Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
passed &= Validate.outFileExists(outFile);
|
||||||
|
result[0] = q1;
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
|
||||||
|
// local
|
||||||
{
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> q1 = pt1.ApplyPerPartition(pt1, (x, y) => FullHomomorphic_Binary_Func(x, y), false);
|
||||||
|
result[1] = q1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -243,27 +421,29 @@ namespace DryadLinqTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool Aggregate_WithCombiner()
|
public static bool Aggregate_WithCombiner(DryadLinqContext context)
|
||||||
{
|
{
|
||||||
var context = new DryadLinqContext(Config.cluster);
|
string testName = "Aggregate_WithCombiner";
|
||||||
context.LocalExecution = false;
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
bool passed = true;
|
bool passed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
// cluster
|
||||||
"unittest/inputdata/SimpleFile.txt"));
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
IQueryable<IEnumerable<int>> simple = input.Apply(x => DataGenerator.CreateSimpleFileSets());
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
IQueryable<int> pt1 = simple.Select(x => x.First());
|
|
||||||
|
|
||||||
string q1 = pt1.Aggregate("", (str, x) => IntToStringCSVAggregator(str, x));
|
string q1 = pt1.Aggregate("", (str, x) => IntToStringCSVAggregator(str, x));
|
||||||
|
|
||||||
passed &= (q1.Length == 27); // string should have numbers 1..12 separated by commas
|
passed &= (q1.Length == 27); // string should have numbers 1..12 separated by commas
|
||||||
}
|
}
|
||||||
catch (DryadLinqException)
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
{
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
passed &= false;
|
passed &= false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.0.0" />
|
||||||
|
<bindingRedirect oldVersion="2.3.5.0" newVersion="4.3.0.0" />
|
||||||
|
<bindingRedirect oldVersion="2.0.0.0" newVersion="4.3.0.0" />
|
||||||
|
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Hadoop.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight.Framework" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.1.8" newVersion="1.1.1.8" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
|
|
@ -0,0 +1,219 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
|
<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>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>d0153361-1b5d-4715-8ee3-aa824f89cbc3</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<RootNamespace>DryadLinqFSharpTests</RootNamespace>
|
||||||
|
<AssemblyName>DryadLinqFSharpTests</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
|
<Name>DryadLinqFSharpTests</Name>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<Tailcalls>false</Tailcalls>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DocumentationFile>bin\Debug\DryadLinqFSharpTests.XML</DocumentationFile>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<Tailcalls>true</Tailcalls>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DocumentationFile>bin\Release\DryadLinqFSharpTests.XML</DocumentationFile>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.Data.Edm">
|
||||||
|
<HintPath>..\packages\Microsoft.Data.Edm.5.6.1\lib\net40\Microsoft.Data.Edm.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Data.OData">
|
||||||
|
<HintPath>..\packages\Microsoft.Data.OData.5.6.1\lib\net40\Microsoft.Data.OData.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Data.Services.Client">
|
||||||
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Hadoop.Client">
|
||||||
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Msagl">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Msagl.Drawing">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.Drawing.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Msagl.GraphViewerGdi">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.GraphViewerGdi.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.DryadLinq">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.Dryad.0.1.4-beta001\lib\net45\Microsoft.Research.DryadLinq.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.Peloponnese.Utils">
|
||||||
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Threading.Tasks">
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Threading.Tasks.Extensions">
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop">
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Common">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Configuration">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework">
|
||||||
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core">
|
||||||
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage">
|
||||||
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Storage">
|
||||||
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="mscorlib" />
|
||||||
|
<Reference Include="FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Data.Linq" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Net.Http.Extensions">
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http.Primitives">
|
||||||
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.ServiceModel" />
|
||||||
|
<Reference Include="System.ServiceModel.Discovery" />
|
||||||
|
<Reference Include="System.Spatial">
|
||||||
|
<HintPath>..\packages\System.Spatial.5.6.1\lib\net40\System.Spatial.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<Compile Include="Program.fs" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">11</MinimumVisualStudioVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<Tailcalls>false</Tailcalls>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<DocumentationFile>bin\Debug\DryadLinqFSharpTests.XML</DocumentationFile>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<Tailcalls>true</Tailcalls>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<DocumentationFile>bin\Release\DryadLinqFSharpTests.XML</DocumentationFile>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets" Condition=" Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets')" />
|
||||||
|
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
|
||||||
|
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
|
||||||
|
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
|
<Import Project="..\packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets" Condition="Exists('..\packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.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>
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
// Learn more about F# at http://fsharp.net
|
||||||
|
// See the 'F# Tutorial' project for more help.
|
||||||
|
|
||||||
|
open System
|
||||||
|
open System.Collections.Generic
|
||||||
|
open System.Linq
|
||||||
|
open System.IO
|
||||||
|
open Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
|
let context = new DryadLinqContext(1)
|
||||||
|
let inputUri = @"partfile:///d:/DryadLinqTemp/PartFiles/foo.pt"
|
||||||
|
let input = context.FromStore<LineRecord>(inputUri)
|
||||||
|
|
||||||
|
type Pair = { word : string; count : int }
|
||||||
|
|
||||||
|
let Histogram (source : IQueryable<LineRecord>) (k : int) =
|
||||||
|
let words = source.SelectMany(fun (x : LineRecord) -> x.Line.Split(' ') |> Seq.ofArray)
|
||||||
|
let groups = words.GroupBy(fun x -> x)
|
||||||
|
let counts = groups.Select(fun (x : IGrouping<string, string>) -> { word = x.Key; count = x.Count() })
|
||||||
|
let ordered = counts.OrderByDescending(fun x -> x.count)
|
||||||
|
ordered.Take(k)
|
||||||
|
|
||||||
|
let Histogram1 (source : IQueryable<LineRecord>) (k : int) =
|
||||||
|
query {
|
||||||
|
for ws in source do
|
||||||
|
for w in ws.Line.Split(' ') do
|
||||||
|
groupBy w into g
|
||||||
|
select { word = g.Key; count = g.Count() } into winfo
|
||||||
|
sortByDescending winfo.count
|
||||||
|
take k
|
||||||
|
}
|
||||||
|
|
||||||
|
let Histogram2 =
|
||||||
|
query {
|
||||||
|
for ws in input do
|
||||||
|
for w in ws.Line.Split(' ') do
|
||||||
|
groupBy w into g
|
||||||
|
select { word = g.Key; count = g.Count() } into winfo
|
||||||
|
sortByDescending winfo.count
|
||||||
|
take 10
|
||||||
|
}
|
||||||
|
|
||||||
|
for x in Histogram1 input 10 do System.Console.WriteLine(x.word + " : " + x.count.ToString())
|
||||||
|
|
||||||
|
//let foo = Histogram input 10
|
||||||
|
//foo.ToStore("partfile:///d:/DryadLinqTemp/PartFiles/xxx.pt").SubmitAndWait()
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Research.Dryad" version="0.1.4-beta001" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Research.DryadLINQ.MSAGL" version="3.0.0.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
|
</packages>
|
||||||
|
|
@ -1,34 +1,36 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{3F74DAD4-5758-4BCF-BEEB-F1898C5BDCCE}</ProjectGuid>
|
<ProjectGuid>{4EA15885-003F-4B4D-A7DB-C172C2F23161}</ProjectGuid>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>DryadLinqTests</RootNamespace>
|
<RootNamespace>DryadLinqTests</RootNamespace>
|
||||||
<AssemblyName>DryadLinqTests</AssemblyName>
|
<AssemblyName>DryadLinqTests</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
</PropertyGroup>
|
||||||
<Install>true</Install>
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
<UpdateEnabled>false</UpdateEnabled>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<UpdateMode>Foreground</UpdateMode>
|
<DebugType>full</DebugType>
|
||||||
<UpdateInterval>7</UpdateInterval>
|
<Optimize>false</Optimize>
|
||||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
<UpdatePeriodically>false</UpdatePeriodically>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<UpdateRequired>false</UpdateRequired>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<MapFileExtensions>true</MapFileExtensions>
|
<WarningLevel>4</WarningLevel>
|
||||||
<ApplicationRevision>0</ApplicationRevision>
|
</PropertyGroup>
|
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<DebugType>pdbonly</DebugType>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<Optimize>true</Optimize>
|
||||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
<RestorePackages>true</RestorePackages>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
|
@ -53,91 +55,110 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Edm.5.6.1\lib\net40\Microsoft.Data.Edm.dll</HintPath>
|
<HintPath>packages\Microsoft.Data.Edm.5.6.1\lib\net40\Microsoft.Data.Edm.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Data.OData, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Data.OData, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.OData.5.6.1\lib\net40\Microsoft.Data.OData.dll</HintPath>
|
<HintPath>packages\Microsoft.Data.OData.5.6.1\lib\net40\Microsoft.Data.OData.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Data.Services.Client, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Data.Services.Client, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Msagl">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.dll</HintPath>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Msagl.Drawing">
|
||||||
|
<HintPath>packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.Drawing.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Msagl.GraphViewerGdi">
|
||||||
|
<HintPath>packages\Microsoft.Research.DryadLINQ.MSAGL.3.0.0.1\lib\Microsoft.Msagl.GraphViewerGdi.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.DryadLinq, Version=0.1.3.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>packages\Microsoft.Research.Dryad.0.1.4-beta001\lib\net45\Microsoft.Research.DryadLinq.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge">
|
||||||
|
<HintPath>packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Research.Peloponnese.Utils">
|
||||||
|
<HintPath>packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Linq" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.ServiceModel" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\System.Spatial.5.6.1\lib\net40\System.Spatial.dll</HintPath>
|
<HintPath>packages\System.Spatial.5.6.1\lib\net40\System.Spatial.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
|
@ -150,53 +171,38 @@
|
||||||
<Compile Include="ApplyAndForkTests.cs" />
|
<Compile Include="ApplyAndForkTests.cs" />
|
||||||
<Compile Include="BasicAPITests.cs" />
|
<Compile Include="BasicAPITests.cs" />
|
||||||
<Compile Include="GroupByReduceTests.cs" />
|
<Compile Include="GroupByReduceTests.cs" />
|
||||||
|
<Compile Include="MiscBugFixTests.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="RangePartitionAPICoverageTests.cs" />
|
<Compile Include="RangePartitionAPICoverageTests.cs" />
|
||||||
|
<Compile Include="SerializationTests.cs" />
|
||||||
|
<Compile Include="SerializationTestTypes.cs" />
|
||||||
|
<Compile Include="SimpleTests.cs" />
|
||||||
|
<Compile Include="TestLog.cs" />
|
||||||
|
<Compile Include="TypesInQueryTests.cs" />
|
||||||
<Compile Include="Utils.cs" />
|
<Compile Include="Utils.cs" />
|
||||||
<Compile Include="Validate.cs" />
|
<Compile Include="WordCount.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\LinqToDryad\LinqToDryad.csproj">
|
|
||||||
<Project>{d33c34cc-6db2-417c-88b7-299830711774}</Project>
|
|
||||||
<Name>LinqToDryad</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
|
||||||
<Install>true</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
|
<Import Project="packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
|
||||||
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
|
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
|
<Error Condition="!Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
|
||||||
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
<Error Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
||||||
</Target>
|
</Target>
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
|
<Error Condition="!Exists('packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
|
<Import Project="packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets" Condition="Exists('packages\Microsoft.Research.Dryad.0.1.4-beta001\build\Microsoft.Research.Dryad.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 2012
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DryadLinqTests", "DryadLinqTests.csproj", "{4EA15885-003F-4B4D-A7DB-C172C2F23161}"
|
||||||
|
EndProject
|
||||||
|
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DryadLinqFSharpTests", "DryadLinqFSharpTests\DryadLinqFSharpTests.fsproj", "{D0153361-1B5D-4715-8EE3-AA824F89CBC3}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|Mixed Platforms = Release|Mixed Platforms
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{4EA15885-003F-4B4D-A7DB-C172C2F23161}.Release|x64.Build.0 = Release|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|Mixed Platforms.ActiveCfg = Release|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|Mixed Platforms.Build.0 = Release|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{D0153361-1B5D-4715-8EE3-AA824F89CBC3}.Release|x64.Build.0 = Release|x64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,948 @@
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public static class MiscBugFixTests
|
||||||
|
{
|
||||||
|
public static void Run(DryadLinqContext context, string matchPattern)
|
||||||
|
{
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
TestLog.Message(" MiscBugFixTests ");
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
|
||||||
|
var tests = new Dictionary<string, Action>()
|
||||||
|
{
|
||||||
|
{"Bug11447_GroupByWithComparer", () => Bug11447_GroupByWithComparer(context) },
|
||||||
|
{"Bug12584_HashPartitionOutputCount", () => Bug12584_HashPartitionOutputCount(context) },
|
||||||
|
{"Bug13108_DisableSequenceEquals", () => Bug13108_DisableSequenceEquals(context) },
|
||||||
|
{"Bug13529_and_Bug13593_IndexedOperatorCompilation", () => Bug13529_and_Bug13593_IndexedOperatorCompilation(context) },
|
||||||
|
{"Bug13130_ReverseOperator", () => Bug13130_ReverseOperator(context) },
|
||||||
|
{"Bug13736_IndexedTakeWhile", () => Bug13736_IndexedTakeWhile(context) },
|
||||||
|
{"Bug13534_HashPartitionNegIndexIsError", () => Bug13534_HashPartitionNegIndexIsError(context) },
|
||||||
|
{"Bug13474_and_Bug13483_FromDscOnBadFileSet", () => Bug13474_and_Bug13483_FromDscOnBadFileSet(context) },
|
||||||
|
{"Bug13637_EmptyFilesInFilesets", () => Bug13637_EmptyFilesInFilesets(context) },
|
||||||
|
{"Bug13637_LocalDebugProducingZeroRecords", () => Bug13637_LocalDebugProducingZeroRecords(context) },
|
||||||
|
{"Bug13245_FromDsc_Submit_throws", () => Bug13245_FromDsc_Submit_throws(context) },
|
||||||
|
{"Bug13245_QueryUsingNonHpcLinqOperator", () => Bug13245_QueryUsingNonHpcLinqOperator(context) },
|
||||||
|
{"Bug13302_ConfigEnvironmentCleanup", () => Bug13302_ConfigEnvironmentCleanup(context) },
|
||||||
|
{"Bug13970_MismatchedDataTypes", () => Bug13970_MismatchedDataTypes(context) },
|
||||||
|
{"Bug14010_AlreadyDisposedContext", () => Bug14010_AlreadyDisposedContext(context) },
|
||||||
|
{"Bug14256_LeaseOnTempDscFileset", () => Bug14256_LeaseOnTempDscFileset(context) },
|
||||||
|
{"Bug14189_OrderPreservation", () => Bug14189_OrderPreservation(context) },
|
||||||
|
{"Bug14190_MergeJoin_DecreasingOrder", () => Bug14190_MergeJoin_DecreasingOrder(context) },
|
||||||
|
{"Bug14192_MultiApplySubExpressionReuse", () => Bug14192_MultiApplySubExpressionReuse(context) },
|
||||||
|
{"Bug14870_LongIndexTakeWhile", () => Bug14870_LongIndexTakeWhile(context) },
|
||||||
|
{"Bug15159_NotOperatorForNullableBool", () => Bug15159_NotOperatorForNullableBool(context) },
|
||||||
|
{"Bug15371_NoDataMembersForSerialization", () => Bug15371_NoDataMembersForSerialization(context) },
|
||||||
|
{"Bug15570_GetHashCodeAndEqualsForNullableFieldsOfAnonymousTypes", () => Bug15570_GetHashCodeAndEqualsForNullableFieldsOfAnonymousTypes(context) },
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(test.Key, matchPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
|
||||||
|
{
|
||||||
|
test.Value.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug11447_GroupByWithComparer(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug11447_GroupByWithComparer";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var a = pt1.GroupBy(x => x, EqualityComparer<int>.Default).SelectMany(x => x).ToList();
|
||||||
|
result[0] = a;
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var a = pt1.GroupBy(x => x, EqualityComparer<int>.Default).SelectMany(x => x).ToList();
|
||||||
|
result[1] = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug12584_HashPartitionOutputCount(DryadLinqContext context) // ToDo
|
||||||
|
{
|
||||||
|
string testName = "Bug12584_HashPartitionOutputCount";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/Bug12584_HashPartitionOutputCount";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var info = pt1.HashPartition(x => x).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
|
info.Wait();
|
||||||
|
|
||||||
|
//// partition verification are only valid for cluster execution..
|
||||||
|
|
||||||
|
//// check that nOutputPartitions == nInputPartitions.
|
||||||
|
//// Note: this is today's behavior, but we don't strictly guarantee this and the rules may change.
|
||||||
|
//var inFS = context.DscService.GetFileSet(DataGenerators.SIMPLE_FILESET_NAME);
|
||||||
|
//var inPCount = inFS.GetFiles().Count();
|
||||||
|
//var outFS = context.DscService.GetFileSet("DevUnitTest/Bug12584_out");
|
||||||
|
//var outPCount = outFS.GetFiles().Count();
|
||||||
|
//passed &= TestUtils.Assert(outPCount == inPCount, "Output nPartitions should be equal to input nPartitions.");
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13108_DisableSequenceEquals(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13108_DisableSequenceEquals";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
bool result = pt1.Select(x => x).SequenceEqual(pt2.Select(x => x));
|
||||||
|
passed &= false; // NotSupportedException should have been thrown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13529_and_Bug13593_IndexedOperatorCompilation(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13529_and_Bug13593_IndexedOperatorCompilation";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
result[0] = pt1.Select((x, i) => x)
|
||||||
|
.LongSelect((x, i) => x)
|
||||||
|
.LongSelectMany((x, i) => new[] { x })
|
||||||
|
.SelectMany((x, i) => new[] { x })
|
||||||
|
.Where((x, i) => true)
|
||||||
|
.LongWhere((x, i) => true)
|
||||||
|
.TakeWhile((x, i) => true)
|
||||||
|
.LongTakeWhile((x, i) => true)
|
||||||
|
.SkipWhile((x, i) => false)
|
||||||
|
.LongSkipWhile((x, i) => false)
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
result[1] = pt1.Select((x, i) => x)
|
||||||
|
.LongSelect((x, i) => x)
|
||||||
|
.LongSelectMany((x, i) => new[] { x })
|
||||||
|
.SelectMany((x, i) => new[] { x })
|
||||||
|
.Where((x, i) => true)
|
||||||
|
.LongWhere((x, i) => true)
|
||||||
|
.TakeWhile((x, i) => true)
|
||||||
|
.LongTakeWhile((x, i) => true)
|
||||||
|
.SkipWhile((x, i) => false)
|
||||||
|
.LongSkipWhile((x, i) => false)
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13130_ReverseOperator(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13130_ReverseOperator";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
//data set #1
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
result[0] = pt1.Reverse().ToArray();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
result[1] = pt1.Reverse().ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//data set #2 ToDo
|
||||||
|
//data set #3 ToDo
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13736_IndexedTakeWhile(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13736_IndexedTakeWhile";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
// dataset #1
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var pt2 = pt1.TakeWhile((x, i) => i < 6).ToArray();
|
||||||
|
result[0] = pt1.AsEnumerable().TakeWhile((x, i) => i < 6).ToArray();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var pt2 = pt1.TakeWhile((x, i) => i < 6).ToArray();
|
||||||
|
result[1] = pt1.AsEnumerable().TakeWhile((x, i) => i < 6).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// dataset #2
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var pt2 = pt1.TakeWhile((x, i) => i < 125).ToArray();
|
||||||
|
result[0] = pt1.AsEnumerable().TakeWhile((x, i) => i < 125).ToArray();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetGroupByReduceDataSet(context);
|
||||||
|
var pt2 = pt1.TakeWhile((x, i) => i < 125).ToArray();
|
||||||
|
result[0] = pt1.AsEnumerable().TakeWhile((x, i) => i < 125).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13534_HashPartitionNegIndexIsError(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13534_HashPartitionNegIndexIsError";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
pt1.HashPartition(x => x, 0); // exception should be thrown
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
pt1.HashPartition(x => x, -1); // exception should be thrown
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13474_and_Bug13483_FromDscOnBadFileSet(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
// ToDo
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public static bool Bug13637_EmptyFilesInFilesets(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
// ToDo
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13637_LocalDebugProducingZeroRecords(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13637_LocalDebugProducingZeroRecords";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/Bug13637_LocalDebugProducingZeroRecords";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<int> pt2 = pt1.Where(x => false).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var queryInfo2 = pt2.Submit();
|
||||||
|
queryInfo2.Wait();
|
||||||
|
int[] data2 = pt2.ToArray();
|
||||||
|
passed &= (data2.Length == 0);
|
||||||
|
|
||||||
|
// query producing no records -> anonymous output
|
||||||
|
IQueryable<int> pt3 = pt1.Where(x => false);
|
||||||
|
var queryInfo3 = pt3.Submit();
|
||||||
|
queryInfo3.Wait();
|
||||||
|
|
||||||
|
int[] data3 = pt3.ToArray();
|
||||||
|
passed &= (data3.Length == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13245_FromDsc_Submit_throws(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13245_FromDsc_Submit_throws";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var info = pt1.Submit();
|
||||||
|
passed &= false; // should throw ArgEx as the input isn't well formed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (ArgumentException)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IQueryable<int> Blah(this IQueryable<int> source)
|
||||||
|
{
|
||||||
|
return Enumerable.Range(1, 1).AsQueryable();
|
||||||
|
}
|
||||||
|
public static bool Bug13245_QueryUsingNonHpcLinqOperator(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13245_QueryUsingNonHpcLinqOperator";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var info = pt1.Blah().Submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<int> CheckEnvVar(IEnumerable<int> en)
|
||||||
|
{
|
||||||
|
if (Environment.GetEnvironmentVariable("DummyEnvVar") == null)
|
||||||
|
throw new Exception("the expected environment variable is not defined");
|
||||||
|
return en;
|
||||||
|
}
|
||||||
|
public static bool Bug13302_ConfigEnvironmentCleanup(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13302_ConfigEnvironmentCleanup";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var info = pt1.Apply((en) => CheckEnvVar(en)).Submit();
|
||||||
|
info.Wait();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug13970_MismatchedDataTypes(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug13970_MismatchedDataTypes";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetGroupByReduceDataSet(context);
|
||||||
|
double? output = pt1.AverageAsQuery().Single();
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= true; // expected
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14010_AlreadyDisposedContext(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug14010_AlreadyDisposedContext";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
context.LocalDebug = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DryadLinqContext ctx = new DryadLinqContext(Config.cluster);
|
||||||
|
ctx.Dispose();
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(ctx);
|
||||||
|
int output = pt1.Select(x => x).First();
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DryadLinqContext ctx = new DryadLinqContext(Config.cluster);
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(ctx);
|
||||||
|
ctx.Dispose();
|
||||||
|
int output = pt1.Select(x => x).First();
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DryadLinqContext ctx = new DryadLinqContext(Config.cluster);
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(ctx);
|
||||||
|
ctx.Dispose();
|
||||||
|
IQueryable<int> query = pt1.Select(x => x).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, "abc"), true);
|
||||||
|
var info = DryadLinqQueryable.Submit(query);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
passed &= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14256_LeaseOnTempDscFileset(DryadLinqContext context) // TODO
|
||||||
|
{
|
||||||
|
string testName = "Bug14256_LeaseOnTempDscFileset";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14189_OrderPreservation(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug14189_OrderPreservation";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IGrouping<int, int>[] clusterSorted, localSorted;
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
var output = pt1.OrderBy(x => x % 4)
|
||||||
|
.Select(x => x).Select(x => x).Where(x => true) // this pipeline was not preserving order correctly.
|
||||||
|
.GroupBy(x => x % 4)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (output.Count() == output.Select(x => x.Key).Distinct().Count()); // "each group should have a distinct key");
|
||||||
|
// sort back on the key for deterministic output.
|
||||||
|
clusterSorted = output.OrderBy(x => x.Key).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
var output = pt1.OrderBy(x => x % 4)
|
||||||
|
.Select(x => x).Select(x => x).Where(x => true) // this pipeline was not preserving order correctly.
|
||||||
|
.GroupBy(x => x % 4)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (output.Count() == output.Select(x => x.Key).Distinct().Count()); // "each group should have a distinct key");
|
||||||
|
// sort back on the key for deterministic output.
|
||||||
|
localSorted = output.OrderBy(x => x.Key).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check that each group of output has the same elements as the LINQ groups.
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
var a = clusterSorted[i].OrderBy(x => x);
|
||||||
|
var b = localSorted[i].OrderBy(x => x);
|
||||||
|
|
||||||
|
passed &= a.SequenceEqual(b); //the output should match linq. Error for group: + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14190_MergeJoin_DecreasingOrder(DryadLinqContext context) // TODO
|
||||||
|
{
|
||||||
|
string testName = "Bug14190_MergeJoin_DecreasingOrder";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/Bug14190_MergeJoin_DecreasingOrder";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14192_MultiApplySubExpressionReuse(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug14192_MultiApplySubExpressionReuse";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/Bug14192_MultiApplySubExpressionReuse";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var data = pt1.Select(x => x);
|
||||||
|
|
||||||
|
var info = pt1.Apply(new[] { pt1, pt1 }, (sources) => new int[] { 1, 2, 3 }).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
|
info.Wait();
|
||||||
|
|
||||||
|
// ToDo
|
||||||
|
//string queryPlan = TestUtils.GetRecentQueryXmlAsText();
|
||||||
|
//int nVerticesInPlan = TestUtils.GetVertexStageCount(queryPlan);
|
||||||
|
|
||||||
|
//passed &= (nVerticesInPlan == 7); // "Only seven vertices should appear (before bug, there were 10 of which the last three were extraneous.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug14870_LongIndexTakeWhile(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug14870_LongIndexTakeWhile";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
|
||||||
|
// ToDo - move to data generator
|
||||||
|
int[][] data = new[] {
|
||||||
|
new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, new int[] { }, new int[] { } };
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.LongTakeWhile((x, i) => i < 8).ToArray();
|
||||||
|
passed &= (output.Length == 8); // "Only eight items should be returned."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug15159_NotOperatorForNullableBool(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug15159_NotOperatorForNullableBool";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<bool?>[] result = new IEnumerable<bool?>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select<int, bool?>(x => x == 1 ? (bool?)null : true).Select(x => !x);
|
||||||
|
result[0] = output.ToArray();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select<int, bool?>(x => x == 1 ? (bool?)null : true).Select(x => !x);
|
||||||
|
result[1] = output.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class NoDataMembersClass
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public static bool Bug15371_NoDataMembersForSerialization(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug15371_NoDataMembersForSerialization";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/Bug15371_NoDataMembersForSerialization";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
IQueryable<NoDataMembersClass> output = pt1.Select(x => new NoDataMembersClass());
|
||||||
|
var jobInfo = output.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true).Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
var result = context.FromStore<NoDataMembersClass>(AzureUtils.ToAzureUri(Config.accountName, Config.storageKey, Config.containerName, outFile)).ToArray();
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (DryadLinqException Ex)
|
||||||
|
{
|
||||||
|
passed &= (Ex.ErrorCode == ReflectionHelper.GetDryadLinqErrorCode("TypeMustHaveDataMembers") ||
|
||||||
|
Ex.InnerException != null && ((DryadLinqException)Ex.InnerException).ErrorCode == ReflectionHelper.GetDryadLinqErrorCode("TypeMustHaveDataMembers")); // "exception should have been thrown.
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Bug15570_GetHashCodeAndEqualsForNullableFieldsOfAnonymousTypes(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "Bug15570_GetHashCodeAndEqualsForNullableFieldsOfAnonymousTypes";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
// use an anonymous type with nullable fields, and make sure we at least have some null values in the stream
|
||||||
|
var output = pt1.Select(x => new { FirstField = (x % 2 == 0) ? new int?(x) : default(int?), SecondField = x.ToString() })
|
||||||
|
.GroupBy(x => x.FirstField, y => y.SecondField); // use of GB ensures we exercise the emitted GetHashCode() overload
|
||||||
|
passed &= (output.Count() != 0); // "Query return 0 length output"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,14 +17,15 @@ See the Apache Version 2.0 License for specific language governing permissions a
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Reflection;
|
||||||
using Microsoft.Research.DryadLinq;
|
using Microsoft.Research.DryadLinq;
|
||||||
|
|
||||||
using Microsoft.Research.Peloponnese.Storage;
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
|
||||||
namespace DryadLinqTests
|
namespace DryadLinqTests
|
||||||
|
|
@ -33,32 +34,38 @@ namespace DryadLinqTests
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
//BasicAPITests.ToStoreThrowsForNonQuery();
|
SimpleTests.Run(args);
|
||||||
//BasicAPITests.ToStoreGetEnumeratorThrows();
|
|
||||||
//BasicAPITests.GetEnumeratorNonToStoreTerminated();
|
|
||||||
//BasicAPITests.ToStoreSubmitGetEnumerator();
|
|
||||||
//BasicAPITests.SubmitNonToStoreTerminated();
|
|
||||||
//BasicAPITests.MaterializeToStoreTerminated();
|
|
||||||
//BasicAPITests.MaterializeNonToStoreTerminated();
|
|
||||||
//BasicAPITests.EnumeratePlainData();
|
|
||||||
|
|
||||||
//BasicAPITests.RepeatSubmit();
|
/*
|
||||||
//BasicAPITests.RepeatMaterialize();
|
*
|
||||||
//BasicAPITests.MaterializeMentionsSameQueryTwice();
|
Config conf = new Config("dryad-temp", "main1", @"d:\temp\TestLog\");
|
||||||
//BasicAPITests.QueryOnDataBackedDLQ();
|
DryadLinqContext context = new DryadLinqContext(Config.cluster);
|
||||||
//BasicAPITests.Bug11781_CountandFirstOrDefault();
|
|
||||||
//BasicAPITests.Bug11782_Aggregate();
|
string matchPattern = @"";
|
||||||
//BasicAPITests.Bug11782_LowLevelQueryableManipulation();
|
|
||||||
//BasicAPITests.Bug11638_LongWhere();
|
TestLog.LogInit(Config.testLogPath + "BasicAPITests.txt");
|
||||||
//BasicAPITests.AssumeRangePartition();
|
BasicAPITests.Run(context, matchPattern);
|
||||||
//BasicAPITests.Bug11638_LongMethods();
|
|
||||||
//BasicAPITests.ContextConfigIsReadOnly();
|
TestLog.LogInit(Config.testLogPath + "ApplyAndForkTests.txt");
|
||||||
//BasicAPITests.ToggleSpeculativeDuplication();
|
ApplyAndForkTests.Run(context, matchPattern);
|
||||||
//BasicAPITests.Bug15068_ConfigResourcesAPI();
|
|
||||||
//BasicAPITests.Bug_16341_SubmitThrowsForDifferentContexts();
|
TestLog.LogInit(Config.testLogPath + "GroupByReduceTests.txt");
|
||||||
//BasicAPITests.Bug14449_ContextShouldExposeVersionIDs();
|
GroupByReduceTests.Run(context, matchPattern);
|
||||||
//BasicAPITests.Bug_16341_VariousTestsForSubmit();
|
|
||||||
|
TestLog.LogInit(Config.testLogPath + "RangePartitionAPICoverageTests.txt");
|
||||||
|
RangePartitionAPICoverageTests.Run(context, matchPattern);
|
||||||
|
|
||||||
|
TestLog.LogInit(Config.testLogPath + "TypesInQueryTests.txt");
|
||||||
|
TypesInQueryTests.Run(context, matchPattern);
|
||||||
|
|
||||||
|
TestLog.LogInit(Config.testLogPath + "SerializationTests.txt");
|
||||||
|
SerializationTests.Run(context, matchPattern);
|
||||||
|
|
||||||
|
TestLog.LogInit(Config.testLogPath + "MiscBugFixTests.txt");
|
||||||
|
MiscBugFixTests.Run(context, matchPattern);
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,3 @@
|
||||||
/*
|
|
||||||
Copyright (c) Microsoft Corporation
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF
|
|
||||||
TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
|
||||||
|
|
||||||
|
|
||||||
See the Apache Version 2.0 License for specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
*/
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
@ -28,7 +9,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("DryadLinqTests")]
|
[assembly: AssemblyProduct("Dryad")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
@ -39,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("1fce146c-8597-4cc2-92f6-ebb655cd99ed")]
|
[assembly: Guid("49b725be-1187-4056-9890-7a0cb4c064a4")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
|
|
@ -51,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,823 @@
|
||||||
using System;
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.DryadLinq.Internal;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Linq.Expressions;
|
||||||
using System.Threading.Tasks;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace DryadLinqTests
|
namespace DryadLinqTests
|
||||||
{
|
{
|
||||||
public class RangePartitionAPICoverageTests
|
public class RangePartitionAPICoverageTests
|
||||||
{
|
{
|
||||||
|
public static void Run(DryadLinqContext context, string matchPattern)
|
||||||
|
{
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
TestLog.Message(" RangePartitionAPICoverageTests ");
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
|
||||||
|
var tests = new Dictionary<string, Action>()
|
||||||
|
{
|
||||||
|
{"RP_keySelector", () => RP_keySelector(context) },
|
||||||
|
{"RP_keySelector_pcount", () => RP_keySelector_pcount(context) },
|
||||||
|
{"RP_keySelector_isDescending", () => RP_keySelector_isDescending(context) },
|
||||||
|
{"RP_keySelector_rangeKeys", () => RP_keySelector_rangeKeys(context) },
|
||||||
|
{"RP_keySelector_isDescending_pcount", () => RP_keySelector_isDescending_pcount(context) },
|
||||||
|
{"RP_keySelector_keyComparer_isDescending", () => RP_keySelector_keyComparer_isDescending(context) },
|
||||||
|
{"RP_keySelector_rangeKeys_keyComparer", () => RP_keySelector_rangeKeys_keyComparer(context) },
|
||||||
|
{"RP_keySelector_keyComparer_isDescending_pcount", () => RP_keySelector_keyComparer_isDescending_pcount(context) },
|
||||||
|
{"RP_keySelector_rangeKeys_keyComparer_isDescending", () => RP_keySelector_rangeKeys_keyComparer_isDescending(context) },
|
||||||
|
{"RP_singlePartition_autoSeparators", () => RP_singlePartition_autoSeparators(context) },
|
||||||
|
{"RP_rangeSeparators_customComparer", () => RP_rangeSeparators_customComparer(context) },
|
||||||
|
{"RP_rangeSeparators_nullCustomComparer", () => RP_rangeSeparators_nullCustomComparer(context) },
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(test.Key, matchPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
|
||||||
|
{
|
||||||
|
test.Value.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<int> CountPartitions<T>(IEnumerable<T> pt)
|
||||||
|
{
|
||||||
|
yield return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<T> MaxInPartition<T>(IEnumerable<T> pt)
|
||||||
|
{
|
||||||
|
yield return pt.Max();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<T> MinInPartition<T>(IEnumerable<T> pt)
|
||||||
|
{
|
||||||
|
yield return pt.Min();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<T2> MaxCompare<T1, T2>(IEnumerable<T1> pt, int i, IEnumerable<T2> maxes)
|
||||||
|
{
|
||||||
|
if (0 == i)
|
||||||
|
{
|
||||||
|
yield return (T2)Convert.ChangeType(1, typeof(int));
|
||||||
|
}
|
||||||
|
|
||||||
|
int priorMax = (int)Convert.ChangeType(maxes.ToArray()[i - 1], typeof(T2));
|
||||||
|
foreach (T1 item in pt)
|
||||||
|
{
|
||||||
|
int val = (int)Convert.ChangeType(item, typeof(T1));
|
||||||
|
if (val <= priorMax)
|
||||||
|
{
|
||||||
|
yield return (T2)Convert.ChangeType(1, typeof(int));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 3, false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_pcount(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_pcount";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_pcount";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, 2).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 2, false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, 2);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_isDescending(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_isDescending";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_isDescending";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, true).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 3, true);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, true);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_rangeKeys(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_rangeKeys";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
IEnumerable<int>[] result2 = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_rangeKeys_1";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
//increasing ranges keys.
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 2, 5, 8 }).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 4, false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
|
||||||
|
|
||||||
|
string outFile2 = "unittest/output/RP_keySelector_rangeKeys_2";
|
||||||
|
IQueryable<int> pt1_2 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
//decreasing ranges keys.
|
||||||
|
IQueryable<int> pt2_2 = pt1_2.RangePartition(x => x, new[] { 8, 5, 2 }).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile2), true);
|
||||||
|
var jobInfo2 = pt2_2.Submit();
|
||||||
|
jobInfo2.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2_2, 4, true);
|
||||||
|
result2[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
//increasing ranges keys.
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 2, 5, 8 });
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
|
||||||
|
IQueryable<int> pt1_2 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
//decreasing ranges keys.
|
||||||
|
IQueryable<int> pt2_2 = pt1_2.RangePartition(x => x, new[] { 8, 5, 2 });
|
||||||
|
result2[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
Validate.Check(result2);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_isDescending_pcount(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_isDescending_pcount";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_isDescending_pcount";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, true, 2).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 2, true);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, true, 2);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_keyComparer_isDescending(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_keyComparer_isDescending";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_keyComparer_isDescending";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, Comparer<int>.Default, true).ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 3, true);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, Comparer<int>.Default, true);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_rangeKeys_keyComparer(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_rangeKeys_keyComparer";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_rangeKeys_keyComparer";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 2, 5, 8 }, Comparer<int>.Default)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 4, false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 2, 5, 8 }, Comparer<int>.Default);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_keyComparer_isDescending_pcount(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_keyComparer_isDescending_pcount";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_keyComparer_isDescending_pcount";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, Comparer<int>.Default, true, 2)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 2, true);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, Comparer<int>.Default, true, 2);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_keySelector_rangeKeys_keyComparer_isDescending(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_keySelector_rangeKeys_keyComparer_isDescending";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_keySelector_rangeKeys_keyComparer_isDescending";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 8, 5, 2 }, Comparer<int>.Default, true)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 4, true);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new[] { 8, 5, 2 }, Comparer<int>.Default, true);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_singlePartition_autoSeparators(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_singlePartition_autoSeparators";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_singlePartition_autoSeparators";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.Apply(x => x) // force a merge
|
||||||
|
.RangePartition(x => x)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 1, false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
IQueryable<int> pt2 = pt1.Apply(x => x) // force a merge
|
||||||
|
.RangePartition(x => x);
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_rangeSeparators_customComparer(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_rangeSeparators_customComparer";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int>[] result = new IEnumerable<int>[2];
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
string outFile = "unittest/output/RP_rangeSeparators_customComparer";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
|
||||||
|
//these keys should be considered not-sorted
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var results = pt1.RangePartition(x => x, new int[] { 1, 2, 3, 4 }, new WeirdIntComparer(), false).ToArray();
|
||||||
|
passed &= false; // "an exception should have been thrown (non-sorted separators)."
|
||||||
|
}
|
||||||
|
catch (ArgumentException)
|
||||||
|
{
|
||||||
|
//expected
|
||||||
|
}
|
||||||
|
|
||||||
|
//these keys should also be considered not-sorted
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var results = pt1.RangePartition(x => x, new int[] { 4, 3, 2, 1 }, new WeirdIntComparer(), false).ToArray();
|
||||||
|
passed &= false; // "an exception should have been thrown (non-sorted separators)."
|
||||||
|
}
|
||||||
|
catch (ArgumentException)
|
||||||
|
{
|
||||||
|
//expected
|
||||||
|
}
|
||||||
|
|
||||||
|
//these keys should work
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new int[] { 6, 6, 3, 1 }, new WeirdIntComparer(), false)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
passed &= TestRangePartitioned(pt2, 5, new WeirdIntComparer(), false);
|
||||||
|
result[0] = pt2.ToList();
|
||||||
|
}
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
string outFile = "unittest/output/RP_rangeSeparators_customComparer";
|
||||||
|
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
|
||||||
|
//these keys should be considered not-sorted
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var results = pt1.RangePartition(x => x, new int[] { 1, 2, 3, 4 }, new WeirdIntComparer(), false).ToArray();
|
||||||
|
passed &= false; // "an exception should have been thrown (non-sorted separators)."
|
||||||
|
}
|
||||||
|
catch (ArgumentException)
|
||||||
|
{
|
||||||
|
//expected
|
||||||
|
}
|
||||||
|
|
||||||
|
//these keys should also be considered not-sorted
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var results = pt1.RangePartition(x => x, new int[] { 4, 3, 2, 1 }, new WeirdIntComparer(), false).ToArray();
|
||||||
|
passed &= false; // "an exception should have been thrown (non-sorted separators)."
|
||||||
|
}
|
||||||
|
catch (ArgumentException)
|
||||||
|
{
|
||||||
|
//expected
|
||||||
|
}
|
||||||
|
|
||||||
|
//these keys should work
|
||||||
|
IQueryable<int> pt2 = pt1.RangePartition(x => x, new int[] { 6, 6, 3, 1 }, new WeirdIntComparer(), false)
|
||||||
|
.ToStore(AzureUtils.ToAzureUri(Config.accountName, Config.containerName, outFile), true);
|
||||||
|
var jobInfo = pt2.Submit();
|
||||||
|
jobInfo.Wait();
|
||||||
|
|
||||||
|
result[1] = pt2.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TestRangePartitioned(IQueryable<int> pt, int expectedPCount, bool expectedIsDescending)
|
||||||
|
{
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int> ptCount = pt.ApplyPerPartition(x => CountPartitions(x));
|
||||||
|
int cPartitions = ptCount.Count();
|
||||||
|
|
||||||
|
passed &= (expectedPCount == cPartitions);
|
||||||
|
|
||||||
|
if (passed)
|
||||||
|
{
|
||||||
|
int[] ptMax = pt.ApplyPerPartition(x => MaxInPartition(x)).ToArray();
|
||||||
|
int[] ptMin = pt.ApplyPerPartition(x => MinInPartition(x)).ToArray();
|
||||||
|
|
||||||
|
// compare mins and maxs of each partition
|
||||||
|
for (int i = 1; i < cPartitions; i++)
|
||||||
|
{
|
||||||
|
if (false == expectedIsDescending)
|
||||||
|
passed &= (ptMin[i] > ptMax[i - 1]);
|
||||||
|
else
|
||||||
|
passed &= (ptMax[i] < ptMin[i - 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class WeirdIntComparer : IComparer<int>
|
||||||
|
{
|
||||||
|
public int Compare(int x, int y)
|
||||||
|
{
|
||||||
|
int xx = x % 2;
|
||||||
|
int yy = y % 2;
|
||||||
|
return xx.CompareTo(yy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool RP_rangeSeparators_nullCustomComparer(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "RP_rangeSeparators_nullCustomComparer";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetRangePartitionDataSet(context);
|
||||||
|
var results1 = pt1.RangePartition(x => x, new int[] { 1, 2, 3, 4 }, null, false).ToArray();
|
||||||
|
var results2 = pt1.RangePartition(x => x, new int[] { 1, 2, 3, 4 }, null).ToArray();
|
||||||
|
//passing is not throwing.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TestRangePartitioned(IQueryable<int> pt, int expectedPCount, IComparer<int> comparer, bool expectedIsDescending)
|
||||||
|
{
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<int> ptCount = pt.ApplyPerPartition(x => CountPartitions(x));
|
||||||
|
int cPartitions = ptCount.Count();
|
||||||
|
|
||||||
|
passed &= (expectedPCount == cPartitions);
|
||||||
|
|
||||||
|
if (passed)
|
||||||
|
{
|
||||||
|
int[] ptMax = pt.ApplyPerPartition(x => MaxInPartition(x)).ToArray();
|
||||||
|
int[] ptMin = pt.ApplyPerPartition(x => MinInPartition(x)).ToArray();
|
||||||
|
|
||||||
|
// compare mins and maxs of each partition
|
||||||
|
for (int i = 1; i < cPartitions; i++)
|
||||||
|
{
|
||||||
|
passed &= (comparer.Compare(ptMin[i], ptMax[i - 1]) == 0); // ToDo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,576 @@
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Decorated and undecorated types
|
||||||
|
//
|
||||||
|
|
||||||
|
// A UDT with no attribute shouldn't autoserialize without an explicit [Serializable] attribute
|
||||||
|
public class UDT_Undecorated
|
||||||
|
{
|
||||||
|
public UDT_Undecorated(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT which is marked as serializable. This should be autoserialized
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_MarkedSerializable
|
||||||
|
{
|
||||||
|
public UDT_MarkedSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT that has the old style static serialization methods. This should be rejected.
|
||||||
|
public class UDT_StaticSerializer
|
||||||
|
{
|
||||||
|
public UDT_StaticSerializer(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
|
||||||
|
public static UDT_StaticSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
var val = new UDT_StaticSerializer(0);
|
||||||
|
val.m_field1 = reader.ReadInt32();
|
||||||
|
val.m_field2 = reader.ReadInt32();
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Write(DryadLinqBinaryWriter writer, UDT_StaticSerializer val)
|
||||||
|
{
|
||||||
|
writer.Write(val.m_field1);
|
||||||
|
writer.Write(val.m_field2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// UDTs with custom serializers
|
||||||
|
//
|
||||||
|
|
||||||
|
// UDT that has an attribute declaring itself as its custom serializer
|
||||||
|
[CustomDryadLinqSerializer(typeof(UDT_SelfCustomSerializer))]
|
||||||
|
public struct UDT_SelfCustomSerializer : IDryadLinqSerializer<UDT_SelfCustomSerializer>
|
||||||
|
{
|
||||||
|
public UDT_SelfCustomSerializer(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
|
||||||
|
public UDT_SelfCustomSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
var val = new UDT_SelfCustomSerializer(0);
|
||||||
|
val.m_field1 = reader.ReadInt32();
|
||||||
|
val.m_field2 = reader.ReadInt32();
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(DryadLinqBinaryWriter writer, UDT_SelfCustomSerializer val)
|
||||||
|
{
|
||||||
|
writer.Write(val.m_field1);
|
||||||
|
writer.Write(val.m_field2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT that declares another type as its custom serializer
|
||||||
|
[CustomDryadLinqSerializer(typeof(CustomUDTSerializer))]
|
||||||
|
public struct UDT_ExternalCustomSerializer
|
||||||
|
{
|
||||||
|
public UDT_ExternalCustomSerializer(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is the custom serializer for UDT_ExternalCustomSerializer
|
||||||
|
public class CustomUDTSerializer : IDryadLinqSerializer<UDT_ExternalCustomSerializer>
|
||||||
|
{
|
||||||
|
public UDT_ExternalCustomSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
var val = new UDT_ExternalCustomSerializer(0);
|
||||||
|
val.m_field1 = reader.ReadInt32();
|
||||||
|
val.m_field2 = reader.ReadInt32();
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(DryadLinqBinaryWriter writer, UDT_ExternalCustomSerializer val)
|
||||||
|
{
|
||||||
|
writer.Write(val.m_field1);
|
||||||
|
writer.Write(val.m_field2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT with a CustomHpcSerializer attribute that points to an invalid type for the serializer
|
||||||
|
[CustomDryadLinqSerializer(typeof(int))]
|
||||||
|
public struct UDT_BadCustomSerializerType1
|
||||||
|
{
|
||||||
|
public UDT_BadCustomSerializerType1(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT with a CustomHpcSerializer attribute that points to a serializer type that targets a different UDT
|
||||||
|
[CustomDryadLinqSerializer(typeof(CustomUDTSerializer))]
|
||||||
|
public struct UDT_BadCustomSerializerType2
|
||||||
|
{
|
||||||
|
public UDT_BadCustomSerializerType2(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Inheritance
|
||||||
|
//
|
||||||
|
|
||||||
|
// A UDT that has sub types. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_BaseType
|
||||||
|
{
|
||||||
|
public UDT_BaseType(int val)
|
||||||
|
{
|
||||||
|
m_baseTypeField = val + 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_baseTypeField;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UDT that has derives from a type other than object. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_DerivedType : UDT_BaseType
|
||||||
|
{
|
||||||
|
public UDT_DerivedType(int val)
|
||||||
|
: base(val)
|
||||||
|
{
|
||||||
|
m_derivedTypeField = val + 84;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_derivedTypeField;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Field types
|
||||||
|
//
|
||||||
|
|
||||||
|
// A UDT with no data. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_EmptyType
|
||||||
|
{
|
||||||
|
public UDT_EmptyType(int val)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UDT with a public field of type System.Object. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_ObjectField
|
||||||
|
{
|
||||||
|
public UDT_ObjectField(int val)
|
||||||
|
{
|
||||||
|
m_intField = val + 84;
|
||||||
|
m_objectField = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_intField;
|
||||||
|
public object m_objectField;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UDT with a public field of type System.Object[]. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_ObjectArrayField
|
||||||
|
{
|
||||||
|
public UDT_ObjectArrayField(int val)
|
||||||
|
{
|
||||||
|
m_intField = val + 84;
|
||||||
|
m_objectArrayField = new object[1];
|
||||||
|
m_objectArrayField[0] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_intField;
|
||||||
|
public object[] m_objectArrayField;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UDT with a public field of type List<System.Object>. This should be rejected
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_ObjectListField
|
||||||
|
{
|
||||||
|
public UDT_ObjectListField(int val)
|
||||||
|
{
|
||||||
|
m_intField = val + 84;
|
||||||
|
m_objectListField = new List<object>();
|
||||||
|
m_objectListField.Add(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_intField;
|
||||||
|
public List<object> m_objectListField;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UDT with an object field, and a custom serializer. This should not be rejected
|
||||||
|
[CustomDryadLinqSerializer(typeof(UDT_ObjectFieldAndCustomSerializer))]
|
||||||
|
public class UDT_ObjectFieldAndCustomSerializer : IDryadLinqSerializer<UDT_ObjectFieldAndCustomSerializer>
|
||||||
|
{
|
||||||
|
private object m_objectRecord = (object)"";
|
||||||
|
|
||||||
|
// Required by CustomHpcSerializer
|
||||||
|
public UDT_ObjectFieldAndCustomSerializer() { }
|
||||||
|
|
||||||
|
public UDT_ObjectFieldAndCustomSerializer(int val)
|
||||||
|
{
|
||||||
|
m_objectRecord = (object)String.Format("{0}", val);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region IHpcSerializer implementation
|
||||||
|
|
||||||
|
public UDT_ObjectFieldAndCustomSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
string tmp = reader.ReadString();
|
||||||
|
int val = Int32.Parse(tmp);
|
||||||
|
|
||||||
|
return new UDT_ObjectFieldAndCustomSerializer(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(DryadLinqBinaryWriter writer, UDT_ObjectFieldAndCustomSerializer record)
|
||||||
|
{
|
||||||
|
writer.Write((string)record.m_objectRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
// An empty UDT with a custom serializer. This should be rejected, because even though the user has control over serialization
|
||||||
|
// we will encounter runtime problems if the custom serializer reads/writer 0 bytes. This behavior is simply to discourage empty CS code.
|
||||||
|
[CustomDryadLinqSerializer(typeof(UDT_EmptyTypeWithCustomSerializer))]
|
||||||
|
public class UDT_EmptyTypeWithCustomSerializer : IDryadLinqSerializer<UDT_EmptyTypeWithCustomSerializer>
|
||||||
|
{
|
||||||
|
// Required by CustomHpcSerializer
|
||||||
|
public UDT_EmptyTypeWithCustomSerializer() { }
|
||||||
|
|
||||||
|
public UDT_EmptyTypeWithCustomSerializer(int val)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#region IHpcSerializer implementation
|
||||||
|
|
||||||
|
public UDT_EmptyTypeWithCustomSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
return new UDT_EmptyTypeWithCustomSerializer(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(DryadLinqBinaryWriter writer, UDT_EmptyTypeWithCustomSerializer record)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Visibility
|
||||||
|
//
|
||||||
|
|
||||||
|
// UDT with a field of non-public type. We cannot handle these
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_FieldOfNonPublicType
|
||||||
|
{
|
||||||
|
private enum SecretCodeLevel
|
||||||
|
{
|
||||||
|
Secret,
|
||||||
|
SuperSecret,
|
||||||
|
}
|
||||||
|
|
||||||
|
public UDT_FieldOfNonPublicType(int val)
|
||||||
|
{
|
||||||
|
m_field = (SecretCodeLevel)val;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SecretCodeLevel m_field;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UDT with a private field of a public type. We do handle these using emitted IL code.
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_PrivateFieldOfPublicType
|
||||||
|
{
|
||||||
|
public UDT_PrivateFieldOfPublicType(int val)
|
||||||
|
{
|
||||||
|
m_field = val + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int m_field;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Nesting
|
||||||
|
//
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_Nested_InnerAndOuterSerializable
|
||||||
|
{
|
||||||
|
public UDT_Nested_InnerAndOuterSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val + 1;
|
||||||
|
m_field2 = new NestedSerializable(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int m_field;
|
||||||
|
private NestedSerializable m_field2;
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class NestedSerializable
|
||||||
|
{
|
||||||
|
public NestedSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val / 2.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private double m_field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_Nested_InnerEnum_InnerAndOuterSerializable
|
||||||
|
{
|
||||||
|
public UDT_Nested_InnerEnum_InnerAndOuterSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val + 1;
|
||||||
|
m_field2 = (NestedEnum)(val % 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int m_field;
|
||||||
|
private NestedEnum m_field2;
|
||||||
|
|
||||||
|
//[Serializable]
|
||||||
|
public enum NestedEnum
|
||||||
|
{
|
||||||
|
Foo = 0,
|
||||||
|
Bar = 1,
|
||||||
|
Baz = 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_Nested_OuterSerializableInnerNotSerializable
|
||||||
|
{
|
||||||
|
public UDT_Nested_OuterSerializableInnerNotSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val + 1;
|
||||||
|
m_field2 = new NestedNotSerializable(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int m_field;
|
||||||
|
private NestedNotSerializable m_field2;
|
||||||
|
|
||||||
|
public class NestedNotSerializable
|
||||||
|
{
|
||||||
|
public NestedNotSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val / 2.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private double m_field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UDT_Nested_OuterNotSerializableInnerSerializable
|
||||||
|
{
|
||||||
|
public UDT_Nested_OuterNotSerializableInnerSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val + 1;
|
||||||
|
m_field2 = new NestedSerializable(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int m_field;
|
||||||
|
private NestedSerializable m_field2;
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class NestedSerializable
|
||||||
|
{
|
||||||
|
public NestedSerializable(int val)
|
||||||
|
{
|
||||||
|
m_field = val / 2.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private double m_field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Self reference
|
||||||
|
//
|
||||||
|
|
||||||
|
// First level circular type
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_FirstLevelCircular
|
||||||
|
{
|
||||||
|
public UDT_FirstLevelCircular(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
m_circularRef = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
|
||||||
|
public UDT_FirstLevelCircular m_circularRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First level circular type with an array reference to self
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_FirstLevelCircularArrayRef
|
||||||
|
{
|
||||||
|
public UDT_FirstLevelCircularArrayRef(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
m_circularRefArray = new UDT_FirstLevelCircular[5];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
|
||||||
|
public UDT_FirstLevelCircular[] m_circularRefArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Second level circular type
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_SecondLevelCircular
|
||||||
|
{
|
||||||
|
public UDT_SecondLevelCircular(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val + 1;
|
||||||
|
m_field2 = val + 2;
|
||||||
|
m_child = new UDT_CircularRefChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public int m_field2;
|
||||||
|
|
||||||
|
public UDT_CircularRefChild m_child;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_CircularRefChild
|
||||||
|
{
|
||||||
|
public UDT_CircularRefChild(UDT_SecondLevelCircular parent)
|
||||||
|
{
|
||||||
|
m_parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UDT_SecondLevelCircular m_parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Circular type with custom serializer. Should not be rejected
|
||||||
|
[CustomDryadLinqSerializer(typeof(UDT_CircularTypeWithCustomSerializer))]
|
||||||
|
public class UDT_CircularTypeWithCustomSerializer : IDryadLinqSerializer<UDT_CircularTypeWithCustomSerializer>
|
||||||
|
{
|
||||||
|
public UDT_CircularTypeWithCustomSerializer() { }
|
||||||
|
public UDT_CircularTypeWithCustomSerializer(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val;
|
||||||
|
|
||||||
|
// create each new object with log2(val) self references hanging off of m_next
|
||||||
|
if (val == 0)
|
||||||
|
m_next = null;
|
||||||
|
else
|
||||||
|
m_next = new UDT_CircularTypeWithCustomSerializer(val / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public UDT_CircularTypeWithCustomSerializer m_next;
|
||||||
|
|
||||||
|
//
|
||||||
|
// sample recursive custom serializer
|
||||||
|
//
|
||||||
|
public UDT_CircularTypeWithCustomSerializer Read(DryadLinqBinaryReader reader)
|
||||||
|
{
|
||||||
|
UDT_CircularTypeWithCustomSerializer obj = new UDT_CircularTypeWithCustomSerializer();
|
||||||
|
|
||||||
|
bool bHasValidNext = reader.ReadBool();
|
||||||
|
obj.m_field1 = reader.ReadInt32();
|
||||||
|
|
||||||
|
if (bHasValidNext)
|
||||||
|
{
|
||||||
|
obj.m_next = this.Read(reader); // recursively read the next
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
obj.m_next = null; // terminate recursion
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Write(DryadLinqBinaryWriter writer, UDT_CircularTypeWithCustomSerializer x)
|
||||||
|
{
|
||||||
|
if (x.m_next != null)
|
||||||
|
{
|
||||||
|
writer.Write(true); // bHasValidNext for the reader side
|
||||||
|
writer.Write(x.m_field1);
|
||||||
|
this.Write(writer, x.m_next); // write out recursively
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writer.Write(false); // bHasValidNext = false for the reader side, makes sure recursive reads stop
|
||||||
|
writer.Write(x.m_field1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This type itself isn't circular, but contains a field of a circular type that is custom serialized. Autoserialization should work for this guy
|
||||||
|
[Serializable]
|
||||||
|
public class UDT_TypeContainingCustomSerializedCircularType
|
||||||
|
{
|
||||||
|
public UDT_TypeContainingCustomSerializedCircularType(int val)
|
||||||
|
{
|
||||||
|
m_field1 = val;
|
||||||
|
m_circularType = new UDT_CircularTypeWithCustomSerializer(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int m_field1;
|
||||||
|
public UDT_CircularTypeWithCustomSerializer m_circularType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,361 @@
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public class SerializationTests
|
||||||
|
{
|
||||||
|
public static void Run(DryadLinqContext context, string matchPattern)
|
||||||
|
{
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
TestLog.Message(" SerializationTests ");
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
|
||||||
|
context.LocalDebug = false;
|
||||||
|
|
||||||
|
IQueryable<int> source = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
|
||||||
|
var tests = new Dictionary<string, Action>()
|
||||||
|
{
|
||||||
|
{"UDT_Undecorated", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_Undecorated>(context, source, "Basic UDT with no attribute. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeNotSerializable")) },
|
||||||
|
|
||||||
|
{"UDT_MarkedSerializable", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_MarkedSerializable>(context, source, "Basic UDT which is marked as serializable.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_StaticSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_StaticSerializer>(context, source, "Basic UDT with old stype static serializers. Should be rejected.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeNotSerializable")) },
|
||||||
|
|
||||||
|
{"UDT_SelfCustomSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_SelfCustomSerializer>(context, source, "UDT implementing custom serializer for itself.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_ExternalCustomSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_ExternalCustomSerializer>(context, source, "UDT with a custom serializer", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_BadCustomSerializerType1", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_BadCustomSerializerType1>(context, source, "UDT decorated with an invalid custom serializer type.", typeof(DryadLinqException), 0)},
|
||||||
|
|
||||||
|
{"UDT_BadCustomSerializerType2", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_BadCustomSerializerType2>(context, source, "UDT decorated with another UDT's custom serializer.", typeof(DryadLinqException), 0)},
|
||||||
|
|
||||||
|
{"UDT_BaseType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_BaseType>(context, source, "UDT with subtypes. Should be rejected", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleSubtypes"))},
|
||||||
|
|
||||||
|
{"UDT_DerivedType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_DerivedType>(context, source, "UDT with a base type. Should be rejected", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleDerivedtypes"))},
|
||||||
|
|
||||||
|
{"UDT_FieldOfNonPublicType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_FieldOfNonPublicType>(context, source, "UDT with a field of a non-public type. Should be rejected", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("UDTHasFieldOfNonPublicType"))},
|
||||||
|
|
||||||
|
{"UDT_Nested_OuterSerializableInnerNotSerializable", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_Nested_OuterSerializableInnerNotSerializable>(context, source, "Nested UDT, outer type Serializable, inner type not Serializable. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeNotSerializable"))},
|
||||||
|
|
||||||
|
{"UDT_Nested_OuterNotSerializableInnerSerializable", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_Nested_OuterNotSerializableInnerSerializable>(context, source, "Nested UDT, outer type not Serializable, inner type Serializable. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeNotSerializable"))},
|
||||||
|
|
||||||
|
{"UDT_Nested_InnerAndOuterSerializable", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_Nested_InnerAndOuterSerializable>(context, source, "Nested UDT, both outer and innter types marked Serializable.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_Nested_InnerEnum_InnerAndOuterSerializable", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_Nested_InnerEnum_InnerAndOuterSerializable>(context, source, "Nested UDT, inner enum, both outer and innter types marked Serializable.", null, 0)},
|
||||||
|
|
||||||
|
{"int?", () =>
|
||||||
|
SerializationTests.TestUDT<int?>(context, source, "Nullable type as the UDT. Should be autoserialized.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_FirstLevelCircular", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_FirstLevelCircular>(context, source, "Circular UDT. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleCircularTypes"))},
|
||||||
|
|
||||||
|
{"UDT_FirstLevelCircularArrayRef", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_FirstLevelCircularArrayRef>(context, source, "Circular UDT with array reference to self. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleCircularTypes"))},
|
||||||
|
|
||||||
|
{"UDT_SecondLevelCircular", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_SecondLevelCircular>(context, source, "Circular UDT with indirect reference to self. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleCircularTypes"))},
|
||||||
|
|
||||||
|
{"UDT_CircularTypeWithCustomSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_CircularTypeWithCustomSerializer>(context, source, "Circular UDT with a custom serializer. Should not be rejected.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_TypeContainingCustomSerializedCircularType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_TypeContainingCustomSerializedCircularType>(context, source, "An UDT containing a field of a circular UDT with a custom serializer. Should be autoserialized.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_ObjectField", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_ObjectField>(context, source, "UDT with a field of type System.Object. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"UDT_ObjectArrayField", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_ObjectArrayField>(context, source, "UDT with a field of type System.Object[]. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"UDT_ObjectListField", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_ObjectListField>(context, source, "UDT with a field of type List<object>. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"object", () =>
|
||||||
|
SerializationTests.TestUDT<object>(context, source, "UDT = System.Object. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"object[]", () =>
|
||||||
|
SerializationTests.TestUDT<object[]>(context, source, "UDT = System.Object[]. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"List<object>", () =>
|
||||||
|
SerializationTests.TestUDT<List<object>>(context, source, "UDT = List<object>. Should not be autoserialized.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("CannotHandleObjectFields"))},
|
||||||
|
|
||||||
|
{"UDT_EmptyType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_EmptyType>(context, source, "Empty UDT. Should be rejected.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeMustHaveDataMembers"))},
|
||||||
|
|
||||||
|
{"UDT_ObjectFieldAndCustomSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_ObjectFieldAndCustomSerializer>(context, source, "UDT with an Object field, and a custom serializer. Should not be rejected.", null, 0)},
|
||||||
|
|
||||||
|
{"UDT_EmptyTypeWithCustomSerializer", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_EmptyTypeWithCustomSerializer>(context, source, "Empty UDT with a custom serializer. Should be rejected.", typeof(DryadLinqException), ReflectionHelper.GetDryadLinqErrorCode("TypeMustHaveDataMembers"))},
|
||||||
|
|
||||||
|
{"UDT_PrivateFieldOfPublicType", () =>
|
||||||
|
SerializationTests.TestUDT<UDT_PrivateFieldOfPublicType>(context, source, "UDT with a private field of a public type. Should be autoserialized.", null, 0)},
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(test.Key, matchPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
|
||||||
|
{
|
||||||
|
test.Value.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// the generic entry method used by most tests in this file
|
||||||
|
public static bool TestUDT<TRecord>(DryadLinqContext context, IQueryable<int> source, string testMessage, Type expectedExceptionType, int expectedErrorCode)
|
||||||
|
{
|
||||||
|
string testName = testMessage;
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
// first make sure SelectFunc knows how to handle the type.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
object o = SelectFunc<TRecord>(0);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
TestLog.Message(String.Format("SelectFunc doesn't support type {0}", typeof(TRecord).Name));
|
||||||
|
passed &= false;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var results = source.Select(x => SelectFunc<TRecord>(x));
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
foreach (var r in results) count++;
|
||||||
|
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
TestLog.Message("...FAILED! No elements returned from query");
|
||||||
|
passed &= false;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception exp)
|
||||||
|
{
|
||||||
|
if (expectedExceptionType == null)
|
||||||
|
{
|
||||||
|
TestLog.Message(String.Format("...FAILED! Caught {0} while none was expected: ", exp.GetType().Name));
|
||||||
|
passed &= false;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
else if (expectedExceptionType != exp.GetType())
|
||||||
|
{
|
||||||
|
TestLog.Message(String.Format("...FAILED! Caught {0} while while {1} was expected: {0}", exp.GetType().Name, expectedExceptionType.Name));
|
||||||
|
passed &= false;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
else if (exp is DryadLinqException && expectedErrorCode != 0 && ((DryadLinqException)exp).ErrorCode != expectedErrorCode)
|
||||||
|
{
|
||||||
|
TestLog.Message("...FAILED! Caught DryadLinqException but fault code is wrong.");
|
||||||
|
passed &= false;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.Message("....PASSED (caught correct exception)");
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expectedExceptionType == null)
|
||||||
|
{
|
||||||
|
TestLog.Message(".....PASSED");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TestLog.Message("...FAILED! No exception was thrown from query.");
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Done:
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TRecord SelectFunc<TRecord>(int x)
|
||||||
|
{
|
||||||
|
if (typeof(TRecord) == typeof(object))
|
||||||
|
{
|
||||||
|
return (TRecord)(new object());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(object[]))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new object[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(List<object>))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new List<object>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_Undecorated))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_Undecorated(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_SelfCustomSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_SelfCustomSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_MarkedSerializable))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_MarkedSerializable(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_StaticSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_StaticSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_ExternalCustomSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_ExternalCustomSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_BadCustomSerializerType1))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_BadCustomSerializerType1(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_BadCustomSerializerType2))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_BadCustomSerializerType2(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_BaseType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_BaseType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_DerivedType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_DerivedType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_DerivedType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_DerivedType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_FieldOfNonPublicType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_FieldOfNonPublicType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_PrivateFieldOfPublicType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_PrivateFieldOfPublicType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_Nested_OuterSerializableInnerNotSerializable))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_Nested_OuterSerializableInnerNotSerializable(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_Nested_OuterNotSerializableInnerSerializable))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_Nested_OuterNotSerializableInnerSerializable(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_Nested_InnerAndOuterSerializable))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_Nested_InnerAndOuterSerializable(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_Nested_InnerEnum_InnerAndOuterSerializable))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_Nested_InnerEnum_InnerAndOuterSerializable(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(int?))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)((int?)x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_FirstLevelCircular))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_FirstLevelCircular(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_FirstLevelCircularArrayRef))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_FirstLevelCircularArrayRef(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_SecondLevelCircular))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_SecondLevelCircular(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_CircularTypeWithCustomSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_CircularTypeWithCustomSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_TypeContainingCustomSerializedCircularType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_TypeContainingCustomSerializedCircularType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_ObjectField))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_ObjectField(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_ObjectArrayField))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_ObjectArrayField(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_ObjectListField))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_ObjectListField(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_ObjectFieldAndCustomSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_ObjectFieldAndCustomSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_EmptyType))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_EmptyType(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(TRecord) == typeof(UDT_EmptyTypeWithCustomSerializer))
|
||||||
|
{
|
||||||
|
return (TRecord)((object)new UDT_EmptyTypeWithCustomSerializer(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new InvalidOperationException("Unrecognized TRecord");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public class C1
|
||||||
|
{
|
||||||
|
public int x;
|
||||||
|
public float y;
|
||||||
|
|
||||||
|
public C1(int a, float b)
|
||||||
|
{
|
||||||
|
this.x = a;
|
||||||
|
this.y = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SimpleTests
|
||||||
|
{
|
||||||
|
public static void Run(string[] args)
|
||||||
|
{
|
||||||
|
Test1(args);
|
||||||
|
//Test2(args);
|
||||||
|
//Test3(args);
|
||||||
|
//Test4(args);
|
||||||
|
//Test5(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Test1(string[] args)
|
||||||
|
{
|
||||||
|
DryadLinqContext context = new DryadLinqContext(1, "partfile");
|
||||||
|
//context.PartitionUncPath = "DryadLinqTemp/PartFiles";
|
||||||
|
var input = context.FromStore<LineRecord>("partfile:///d:/DryadLinqTemp/PartFiles/foo.pt");
|
||||||
|
var lines = input.Where(x => x.Line.Contains("white"));
|
||||||
|
foreach (var x in lines) Console.WriteLine(x);
|
||||||
|
//var result = lines.ToStore("partfile://svc-yuanbyu-3/DryadLinqTemp/PartFiles/res1.pt", true);
|
||||||
|
//result.SubmitAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Test2(string[] args)
|
||||||
|
{
|
||||||
|
DryadLinqContext context = new DryadLinqContext(1, "partfile");
|
||||||
|
var input = context.FromStore<LineRecord>("partfile:///d:/DryadLinqTemp/PartFiles/foo.pt");
|
||||||
|
var q1 = input.Where(x => x.Line.Contains("white"));
|
||||||
|
var q2 = input.Where(x => x.Line.Contains("the"));
|
||||||
|
var res1 = q1.ToStore("partfile:///d:/DryadLinqTemp/PartFiles/res1.pt", true);
|
||||||
|
var res2 = q2.ToStore("partfile:///d:/DryadLinqTemp/PartFiles/res2.pt", true);
|
||||||
|
DryadLinqQueryable.SubmitAndWait(res1, res2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Test3(string[] args)
|
||||||
|
{
|
||||||
|
DryadLinqContext context = new DryadLinqContext(1, "partfile");
|
||||||
|
var input = context.FromStore<LineRecord>("partfile:///d:/DryadLinqTemp/PartFiles/foo.pt");
|
||||||
|
var words = input.SelectMany(x => x.Line.Split(' '));
|
||||||
|
var groups = words.GroupBy(x => x);
|
||||||
|
var counts = groups.Select(x => new KeyValuePair<string, int>(x.Key, x.Count()));
|
||||||
|
var toOutput = counts.Select(x => new LineRecord(String.Format("{0}: {1}", x.Key, x.Value)));
|
||||||
|
var result = toOutput.ToStore("partfile:///d:/DryadLinqTemp/PartFiles/res2.pt", true);
|
||||||
|
result.SubmitAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Test4(string[] args)
|
||||||
|
{
|
||||||
|
DryadLinqContext context = new DryadLinqContext("svc-d2-01");
|
||||||
|
var input = context.FromStore<LineRecord>("hdfs://svc-d2-01:8033/user/misard/foo.txt");
|
||||||
|
var lines = input.Where(x => x.Line.Contains("white"));
|
||||||
|
var result = lines.ToStore("hdfs://svc-d2-01:8033/user/yuanbyu/foo.txt", true);
|
||||||
|
result.SubmitAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Test5(string[] args)
|
||||||
|
{
|
||||||
|
DryadLinqContext context = new DryadLinqContext(1);
|
||||||
|
Uri dataUri = AzureUtils.ToAzureUri("msrsvc", "test", "testwrite");
|
||||||
|
IEnumerable<LineRecord> lines = DataProvider.ReadData<LineRecord>(context, dataUri);
|
||||||
|
foreach (var x in lines)
|
||||||
|
{
|
||||||
|
Console.WriteLine(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public class TestResult
|
||||||
|
{
|
||||||
|
public DryadLinqContext Context { get; private set; }
|
||||||
|
public string TestName { get; private set; }
|
||||||
|
public bool Passed { get; private set; }
|
||||||
|
//public string Error { get; private set; }
|
||||||
|
|
||||||
|
public TestResult(string testName, DryadLinqContext context, bool passed)
|
||||||
|
{
|
||||||
|
TestName = testName;
|
||||||
|
Passed = passed;
|
||||||
|
Context = context;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestLog
|
||||||
|
{
|
||||||
|
static internal int nTestsRun;
|
||||||
|
static internal int nTestsPassed;
|
||||||
|
static internal string fileName = "";
|
||||||
|
|
||||||
|
internal static void LogInit(string path)
|
||||||
|
{
|
||||||
|
fileName = path;
|
||||||
|
|
||||||
|
// create empty file
|
||||||
|
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: QA test harnesses may rely on the formatting
|
||||||
|
internal static void TestStart(string testName)
|
||||||
|
{
|
||||||
|
Message(" --- Starting: [" + testName + "] --- ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: QA tests may rely on the formatting
|
||||||
|
internal static void LogResult(TestResult result)
|
||||||
|
{
|
||||||
|
nTestsRun++;
|
||||||
|
if (result.Passed)
|
||||||
|
{
|
||||||
|
nTestsPassed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Message(" * " + (result.Passed ? "Pass" : "FAIL") );
|
||||||
|
Message(" --- Completed: [" + result.TestName + "] --- ");
|
||||||
|
NewLine();
|
||||||
|
}
|
||||||
|
internal static void LogResult(bool result)
|
||||||
|
{
|
||||||
|
nTestsRun++;
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
nTestsPassed++;
|
||||||
|
}
|
||||||
|
NewLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void NewLine()
|
||||||
|
{
|
||||||
|
if (fileName.Length > 0)
|
||||||
|
{
|
||||||
|
// append data
|
||||||
|
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName, true))
|
||||||
|
{
|
||||||
|
file.WriteLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Console.WriteLine();
|
||||||
|
}
|
||||||
|
internal static void Message(string msg)
|
||||||
|
{
|
||||||
|
if (fileName.Length > 0)
|
||||||
|
{
|
||||||
|
// append data
|
||||||
|
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName, true))
|
||||||
|
{
|
||||||
|
file.WriteLine(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Console.WriteLine(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,496 @@
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public class TypesInQueryTests
|
||||||
|
{
|
||||||
|
public static void Run(DryadLinqContext context, string matchPattern)
|
||||||
|
{
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
TestLog.Message(" TypesInQueryTests ");
|
||||||
|
TestLog.Message(" **********************");
|
||||||
|
|
||||||
|
var tests = new Dictionary<string, Action>()
|
||||||
|
{
|
||||||
|
{"NonSealedTypeRecords", () => NonSealedTypeRecords(context) },
|
||||||
|
{"DerivedTypeRecords", () => DerivedTypeRecords(context) },
|
||||||
|
{"ObjectRecords", () => ObjectRecords(context) },
|
||||||
|
{"BadRecordsNotSerialized", () => BadRecordsNotSerialized(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_Bug15675", () => GroupByWithAnonymousTypes_Bug15675(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_Pipeline", () => GroupByWithAnonymousTypes_Pipeline(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_MultipleAnonymousTypes", () => GroupByWithAnonymousTypes_MultipleAnonymousTypes(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_GenericWithAnonTypeParam", () => GroupByWithAnonymousTypes_GenericWithAnonTypeParam(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_ArrayOfAnon", () => GroupByWithAnonymousTypes_ArrayOfAnon(context) },
|
||||||
|
{"GroupByWithAnonymousTypes_NestedAnonTypes", () => GroupByWithAnonymousTypes_NestedAnonTypes(context) },
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(test.Key, matchPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
|
||||||
|
{
|
||||||
|
test.Value.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool NonSealedTypeRecords(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "NonSealedTypeRecords";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<NonSealedClass>[] result = new IEnumerable<NonSealedClass>[2];
|
||||||
|
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => new NonSealedClass()).ToArray();
|
||||||
|
result[0] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => new NonSealedClass()).ToArray();
|
||||||
|
result[1] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool DerivedTypeRecords(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "DerivedTypeRecords";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<ParentClass>[] result1 = new IEnumerable<ParentClass>[2];
|
||||||
|
IEnumerable<ChildClass>[] result2 = new IEnumerable<ChildClass>[2];
|
||||||
|
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output1 = pt1.Select(x => new ParentClass()).ToArray();
|
||||||
|
var output2 = pt1.Select(x => new ChildClass()).ToArray();
|
||||||
|
result1[0] = output1;
|
||||||
|
result2[0] = output2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output1 = pt1.Select(x => new ParentClass()).ToArray();
|
||||||
|
var output2 = pt1.Select(x => new ChildClass()).ToArray();
|
||||||
|
result1[1] = output1;
|
||||||
|
result2[1] = output2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result1);
|
||||||
|
Validate.Check(result2);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ObjectRecords(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "ObjectRecords";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<object>[] result = new IEnumerable<object>[2];
|
||||||
|
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => new object()).ToArray();
|
||||||
|
result[0] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => new object()).ToArray();
|
||||||
|
result[1] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool BadRecordsNotSerialized(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "BadRecordsNotSerialized";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IEnumerable<string>[] result = new IEnumerable<string>[2];
|
||||||
|
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => (x % 2 == 0 ? new ChildClass() : new ParentClass())).Select(x => x is ChildClass ? "child" : "parent").ToArray();
|
||||||
|
result[0] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// local
|
||||||
|
{
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var output = pt1.Select(x => (x % 2 == 0 ? new ChildClass() : new ParentClass())).Select(x => x is ChildClass ? "child" : "parent").ToArray();
|
||||||
|
result[1] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare result
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Validate.Check(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Bug 15675 -- GroupBy creates a DryadOrderByNode which is confused by the anonymous type.
|
||||||
|
// specifically, the call to DryadSort incorrectly referenced both the anonymous type and the code-gen proxy for the anonymous type.
|
||||||
|
// -- the fix was to clean up how & when we process the types involved in the query so that only the proxy would be referenced.
|
||||||
|
public static bool GroupByWithAnonymousTypes_Bug15675(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_Bug15675";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => new { Num = i % 10 })
|
||||||
|
.GroupBy(x => x.Num, x => x.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => new { Num = i % 10 })
|
||||||
|
.GroupBy(x => x.Num, x => x.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GroupByWithAnonymousTypes_Pipeline(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_Pipeline";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => new { Num = i % 10 })
|
||||||
|
.Where(x => true)
|
||||||
|
.GroupBy(x => x.Num, x => x.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => new { Num = i % 10 })
|
||||||
|
.Where(x => true)
|
||||||
|
.GroupBy(x => x.Num, x => x.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GroupByWithAnonymousTypes_MultipleAnonymousTypes(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_MultipleAnonymousTypes";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => new { Num = i % 10 })
|
||||||
|
.Where(x => true)
|
||||||
|
.Select(i => new { Num2 = i.Num })
|
||||||
|
.GroupBy(x => x.Num2, x => x.Num2)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => new { Num = i % 10 })
|
||||||
|
.Where(x => true)
|
||||||
|
.Select(i => new { Num2 = i.Num })
|
||||||
|
.GroupBy(x => x.Num2, x => x.Num2)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GroupByWithAnonymousTypes_GenericWithAnonTypeParam(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_GenericWithAnonTypeParam";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
{
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => MakeNewMyGenericType(new { Num = i % 10 }))
|
||||||
|
.GroupBy(x => x.Field.Num, x => x.Field.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => MakeNewMyGenericType(new { Num = i % 10 }))
|
||||||
|
.GroupBy(x => x.Field.Num, x => x.Field.Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GroupByWithAnonymousTypes_ArrayOfAnon(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_ArrayOfAnon";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => new[] { new { Num = i % 10 } })
|
||||||
|
.GroupBy(x => x[0].Num, x => x[0].Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => new[] { new { Num = i % 10 } })
|
||||||
|
.GroupBy(x => x[0].Num, x => x[0].Num)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GroupByWithAnonymousTypes_NestedAnonTypes(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
string testName = "GroupByWithAnonymousTypes_NestedAnonTypes";
|
||||||
|
TestLog.TestStart(testName);
|
||||||
|
|
||||||
|
bool passed = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// cluster
|
||||||
|
context.LocalDebug = false;
|
||||||
|
IQueryable<int> pt1 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result1 = pt1.Select(i => new { Num = new { NumInner = new int?(i % 10) } }) // nullable-fields present particular challenge.
|
||||||
|
.GroupBy(x => x.Num.NumInner, x => x.Num.NumInner)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
// local
|
||||||
|
context.LocalDebug = true;
|
||||||
|
IQueryable<int> pt2 = DataGenerator.GetSimpleFileSets(context);
|
||||||
|
var result2 = pt2.Select(i => new { Num = new { NumInner = new int?(i % 10) } }) // nullable-fields present particular challenge.
|
||||||
|
.GroupBy(x => x.Num.NumInner, x => x.Num.NumInner)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
|
||||||
|
passed &= (result1.Count() == result2.Count());
|
||||||
|
passed &= (result1.Where(g => g.Key == 1).SelectMany(g => g).Count() == result2.Where(g => g.Key == 1).SelectMany(g => g).Count());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
TestLog.Message("Error: " + Ex.Message);
|
||||||
|
passed &= false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestLog.LogResult(new TestResult(testName, context, passed));
|
||||||
|
return passed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a helper method to allow 'naming the anonymous type'
|
||||||
|
// -- there is no name to give 'anonymous' inline to the original query,
|
||||||
|
// but a generic-method only has to call it by pseudonym T, which is a useful workaround.
|
||||||
|
public static MyGenericType<T> MakeNewMyGenericType<T>(T item)
|
||||||
|
{
|
||||||
|
return new MyGenericType<T>(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class MyGenericType<T>
|
||||||
|
{
|
||||||
|
public T Field;
|
||||||
|
|
||||||
|
public MyGenericType(T data)
|
||||||
|
{
|
||||||
|
Field = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class NonSealedClass
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class ParentClass
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class ChildClass : ParentClass
|
||||||
|
{
|
||||||
|
public int Y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,20 +1,40 @@
|
||||||
using Microsoft.Research.DryadLinq;
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.DryadLinq.Internal;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
using Microsoft.WindowsAzure.Storage;
|
using Microsoft.WindowsAzure.Storage;
|
||||||
using Microsoft.WindowsAzure.Storage.Blob;
|
using Microsoft.WindowsAzure.Storage.Blob;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace DryadLinqTests
|
namespace DryadLinqTests
|
||||||
{
|
{
|
||||||
public static class Config
|
public class Config
|
||||||
{
|
{
|
||||||
public static string accountName = @"MyAccountName";
|
public static string accountName = @"";
|
||||||
public static string storageKey = @"MyStorageKey";
|
public static string storageKey = @"";
|
||||||
public static string containerName = @"MyContainerName";
|
public static string containerName = @"";
|
||||||
public static string cluster = "MyCcluster";
|
public static string cluster = @"";
|
||||||
|
|
||||||
|
public static string testLogPath = @"";
|
||||||
|
|
||||||
|
public Config(string clusterName, string container, string logPath)
|
||||||
|
{
|
||||||
|
cluster = clusterName;
|
||||||
|
|
||||||
|
AzureSubscriptions azs = new AzureSubscriptions();
|
||||||
|
Task<AzureCluster> clusterTask = azs.GetClusterAsync(clusterName);
|
||||||
|
clusterTask.Wait();
|
||||||
|
|
||||||
|
accountName = clusterTask.Result.StorageAccount;
|
||||||
|
storageKey = clusterTask.Result.StorageKey;
|
||||||
|
containerName = container;
|
||||||
|
testLogPath = logPath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DataGenerator
|
public class DataGenerator
|
||||||
|
|
@ -23,6 +43,16 @@ namespace DryadLinqTests
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IQueryable<int> CreateSimpleFileSetsEx()
|
||||||
|
{
|
||||||
|
int[] input = { 0, 1, 2 };
|
||||||
|
IEnumerable<int> range = input.Apply(x => Enumerable.Range(0, 3)); // {0, 1, 2}
|
||||||
|
IEnumerable<int> partitions = range.HashPartition(x => x, 3); // create 3 partitions
|
||||||
|
IEnumerable<int> rangePartition = partitions.SelectMany(x => Enumerable.Range(x * 4, 4));
|
||||||
|
|
||||||
|
return rangePartition.AsQueryable();
|
||||||
|
}
|
||||||
|
|
||||||
public static IEnumerable<IEnumerable<int>> CreateSimpleFileSets()
|
public static IEnumerable<IEnumerable<int>> CreateSimpleFileSets()
|
||||||
{
|
{
|
||||||
IEnumerable<IEnumerable<int>> data = new int[][]
|
IEnumerable<IEnumerable<int>> data = new int[][]
|
||||||
|
|
@ -46,9 +76,100 @@ namespace DryadLinqTests
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<IEnumerable<int>> CreateRangePartitionDataSet()
|
||||||
|
{
|
||||||
|
// we need a lot of data to ensure sampler will get some data.
|
||||||
|
// A few thousand should suffice.
|
||||||
|
IEnumerable<IEnumerable<int>> data = new int[][]
|
||||||
|
{
|
||||||
|
Enumerable.Range(1,1000).ToArray(),
|
||||||
|
Enumerable.Range(20000,2000).ToArray(),
|
||||||
|
Enumerable.Range(40000,5000).ToArray(),
|
||||||
|
};
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IQueryable<int> GetSimpleFileSets(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
//IEnumerable<IEnumerable<int>> data = new int[][]
|
||||||
|
// {
|
||||||
|
// new[] { 0, 1, 2, 3 },
|
||||||
|
// new[] { 4, 5, 6, 7 },
|
||||||
|
// new[] { 8, 9, 10, 11},
|
||||||
|
// };
|
||||||
|
|
||||||
|
//IQueryable<LineRecord> input = context.FromStore<LineRecord>(AzureUtils.ToAzureUri(Config.accountName, Config.containerName,
|
||||||
|
// "unittest/inputdata/SimpleFile.txt"));
|
||||||
|
IQueryable<int> input = context.FromEnumerable(new int[1]);
|
||||||
|
IQueryable<int> range = input.Apply(x => Enumerable.Range(0, 3)); // {0, 1, 2}
|
||||||
|
IQueryable<int> partitions = range.HashPartition(x => x, 3); // create 3 partitions
|
||||||
|
IQueryable<int> rangePartition = partitions.SelectMany(x => Enumerable.Range(x * 4, 4));
|
||||||
|
//IQueryable<int> store = rangePartition.ToStore(@"unittest/inputdata/SimpleFile.txt");
|
||||||
|
return rangePartition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IQueryable<int> GetGroupByReduceDataSet(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
//IEnumerable<IEnumerable<int>> data = new int[][] {
|
||||||
|
// Enumerable.Range(1,100).ToArray(),
|
||||||
|
// Enumerable.Range(101,100).ToArray(),
|
||||||
|
// };
|
||||||
|
|
||||||
|
IQueryable<int> input = context.FromEnumerable(new int[1]);
|
||||||
|
IQueryable<int> range = input.Apply(x => Enumerable.Range(0, 2)); // {0, 1}
|
||||||
|
IQueryable<int> partitions = range.HashPartition(x => x, 2); // create 2 partitions
|
||||||
|
IQueryable<int> rangePartition = partitions.SelectMany(x => Enumerable.Range(x * 100 + 1, 100));
|
||||||
|
return rangePartition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IQueryable<int> GetRangePartitionDataSet(DryadLinqContext context)
|
||||||
|
{
|
||||||
|
// we need a lot of data to ensure sampler will get some data.
|
||||||
|
// A few thousand should suffice.
|
||||||
|
//IEnumerable<IEnumerable<int>> data = new int[][] {
|
||||||
|
// Enumerable.Range(1,1000).ToArray(),
|
||||||
|
// Enumerable.Range(20000,2000).ToArray(),
|
||||||
|
// Enumerable.Range(40000,5000).ToArray(),
|
||||||
|
// };
|
||||||
|
|
||||||
|
IQueryable<int> input = context.FromEnumerable(new int[1]);
|
||||||
|
IQueryable<int> range = input.Apply(x => Enumerable.Range(0, 3)); // {0, 1, 2}
|
||||||
|
IQueryable<int> partitions = range.HashPartition(x => x, 3); // create 3 partitions
|
||||||
|
IQueryable<int> rangePartition = partitions.SelectMany(x => Enumerable.Range(x * 20000 + 1, 1000));
|
||||||
|
return rangePartition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class ReverseComparer<T> : IComparer<T>
|
||||||
|
{
|
||||||
|
IComparer<T> _originalComparer;
|
||||||
|
public ReverseComparer(IComparer<T> originalComparer)
|
||||||
|
{
|
||||||
|
_originalComparer = originalComparer ?? Comparer<T>.Default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Compare(T x, T y)
|
||||||
|
{
|
||||||
|
return (_originalComparer.Compare(y, x)); //note reversed order of operands
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
ReverseComparer<T> objTyped = obj as ReverseComparer<T>;
|
||||||
|
|
||||||
|
return objTyped != null && _originalComparer.Equals(objTyped._originalComparer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
// Modify the hash code so that it differs from the hash code for the underlying comparer.
|
||||||
|
// It would also probably be good enough to just return _originalComparer.GetHashCode().
|
||||||
|
return unchecked((_originalComparer.GetHashCode() + 123457) * 10007);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class Utils
|
public class Utils
|
||||||
{
|
{
|
||||||
public static bool DeleteFile(string accountName, string accountKey, string containerName, string fileName, bool delSubDirs)
|
public static bool DeleteFile(string accountName, string accountKey, string containerName, string fileName, bool delSubDirs)
|
||||||
|
|
@ -96,15 +217,13 @@ namespace DryadLinqTests
|
||||||
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
|
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
|
||||||
container.SetPermissions(containerPermissions);
|
container.SetPermissions(containerPermissions);
|
||||||
|
|
||||||
CloudBlockBlob remoteFile = container.GetBlockBlobReference(fileName);
|
IEnumerable<IListBlobItem> files = container.ListBlobs(fileName, true);
|
||||||
if (!remoteFile.Exists())
|
return (files.Count() > 0);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static DryadLinqContext MakeBasicConfig(string cluster) //???
|
internal static DryadLinqContext MakeBasicConfig(string cluster) //???
|
||||||
|
|
@ -153,5 +272,120 @@ namespace DryadLinqTests
|
||||||
}
|
}
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static DryadLinqRecordReader<TRecord> MakeDryadRecordReader<TRecord>(DryadLinqContext context, string readPath)
|
||||||
|
{
|
||||||
|
DryadLinqFactory<TRecord> factory = (DryadLinqFactory<TRecord>)DryadLinqCodeGen.GetFactory(context, typeof(TRecord));
|
||||||
|
NativeBlockStream nativeStream = ReflectionHelper.CreateDryadLinqFileStream(readPath, FileMode.Open, FileAccess.Read);
|
||||||
|
// ??? NativeBlockStream nativeStream = ReflectionHelper.CreateDryadLinqFileStream(readPath, FileMode.Open, FileAccess.Read, DscCompressionScheme.None);
|
||||||
|
DryadLinqRecordReader<TRecord> reader = factory.MakeReader(nativeStream);
|
||||||
|
return reader;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Validate
|
||||||
|
{
|
||||||
|
public static void
|
||||||
|
Check<T>(
|
||||||
|
IEnumerable<T>[] ss,
|
||||||
|
IComparer<T> comparer = null,
|
||||||
|
bool sort = true,
|
||||||
|
bool verbose = false,
|
||||||
|
IComparer<T> sortcomparer = null
|
||||||
|
)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (ss.Length == 0) return;
|
||||||
|
|
||||||
|
if (comparer == null)
|
||||||
|
{
|
||||||
|
comparer = Comparer<T>.Default;
|
||||||
|
if (comparer == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Can't not be null.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sortcomparer == null)
|
||||||
|
sortcomparer = comparer;
|
||||||
|
|
||||||
|
T[][] aa = new T[ss.Length][];
|
||||||
|
for (int i = 0; i < aa.Length; i++)
|
||||||
|
{
|
||||||
|
aa[i] = ss[i].ToArray();
|
||||||
|
if (sort) Array.Sort(aa[i], sortcomparer);
|
||||||
|
}
|
||||||
|
int len = aa[0].Length;
|
||||||
|
for (int i = 1; i < aa.Length; i++)
|
||||||
|
{
|
||||||
|
if (aa[i].Length != len)
|
||||||
|
{
|
||||||
|
throw new Exception("Wrong number of elements.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
T elem = aa[0][i];
|
||||||
|
for (int j = 1; j < aa.Length; j++)
|
||||||
|
{
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
//TestOutput.WriteLine("Comparing {0} to {1}", elem.ToString(), aa[j][i].ToString());
|
||||||
|
}
|
||||||
|
if (comparer.Compare(elem, aa[j][i]) != 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Elements failed to match: " + elem + " != " + aa[j][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static bool outFileExists(string outFile)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Utils.FileExists(Config.accountName, Config.storageKey, Config.containerName, outFile);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static class ReflectionHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Create DryadLinqFileStream object via reflection
|
||||||
|
/// </summary>
|
||||||
|
///<param name="parameters"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static NativeBlockStream CreateDryadLinqFileStream(params object[] parameters)
|
||||||
|
{
|
||||||
|
return Assembly.LoadWithPartialName("Microsoft.Hpc.Linq").GetType("Microsoft.Hpc.Linq.Internal.HpcLinqFileStream") //???
|
||||||
|
.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, parameters.Select(p => p.GetType()).ToArray(), null)
|
||||||
|
.Invoke(parameters) as NativeBlockStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Type s_errorCodeType = null;
|
||||||
|
public static int GetDryadLinqErrorCode(string name)
|
||||||
|
{
|
||||||
|
if (s_errorCodeType == null)
|
||||||
|
{
|
||||||
|
Assembly asm = Assembly.Load("Microsoft.Research.DryadLinq");
|
||||||
|
Type[] types = asm.GetTypes();
|
||||||
|
foreach (var t in types)
|
||||||
|
{
|
||||||
|
if (t.Name == "DryadLinqErrorCode")
|
||||||
|
{
|
||||||
|
s_errorCodeType = t;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var finfo = s_errorCodeType.GetField(name);
|
||||||
|
return (int)finfo.GetValue(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,267 +0,0 @@
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
// file: Validate.cs
|
|
||||||
//
|
|
||||||
// summary: Implements the validate class
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace BenchmarkFramework {
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Validation utils </summary>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class Validate {
|
|
||||||
|
|
||||||
public static void
|
|
||||||
Check<T>(
|
|
||||||
IEnumerable<T>[] ss,
|
|
||||||
IComparer<T> comparer = null,
|
|
||||||
bool sort = true,
|
|
||||||
bool verbose = false,
|
|
||||||
IComparer<T> sortcomparer = null
|
|
||||||
) {
|
|
||||||
|
|
||||||
if(ss.Length == 0) return;
|
|
||||||
|
|
||||||
if(comparer == null) {
|
|
||||||
comparer = Comparer<T>.Default;
|
|
||||||
if(comparer == null) {
|
|
||||||
throw new ArgumentNullException("Can't not be null.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(sortcomparer == null)
|
|
||||||
sortcomparer = comparer;
|
|
||||||
|
|
||||||
T[][] aa = new T[ss.Length][];
|
|
||||||
for(int i = 0; i < aa.Length; i++) {
|
|
||||||
aa[i] = ss[i].ToArray();
|
|
||||||
if(sort) Array.Sort(aa[i], sortcomparer);
|
|
||||||
}
|
|
||||||
int len = aa[0].Length;
|
|
||||||
for(int i = 1; i < aa.Length; i++) {
|
|
||||||
if(aa[i].Length != len) {
|
|
||||||
throw new Exception("Wrong number of elements.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i = 0; i < len; i++) {
|
|
||||||
T elem = aa[0][i];
|
|
||||||
for(int j = 1; j < aa.Length; j++) {
|
|
||||||
if(verbose) {
|
|
||||||
//TestOutput.WriteLine("Comparing {0} to {1}", elem.ToString(), aa[j][i].ToString());
|
|
||||||
}
|
|
||||||
if(comparer.Compare(elem, aa[j][i]) != 0) {
|
|
||||||
throw new Exception("Elements failed to match: " + elem + " != " + aa[j][i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//public static void
|
|
||||||
//GroupCheck<K, V>(
|
|
||||||
// IEnumerable<IGrouping<K, V>>[] ss,
|
|
||||||
// IComparer<K> kComparer = null,
|
|
||||||
// IComparer<V> vComparer = null
|
|
||||||
// ) {
|
|
||||||
|
|
||||||
// if(ss.Length == 0) return;
|
|
||||||
|
|
||||||
// if(kComparer == null) {
|
|
||||||
// kComparer = Comparer<K>.Default;
|
|
||||||
// if(kComparer == null) {
|
|
||||||
// throw new ArgumentNullException("Can't not be null.");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if(vComparer == null) {
|
|
||||||
// vComparer = Comparer<V>.Default;
|
|
||||||
// if(vComparer == null) {
|
|
||||||
// throw new ArgumentNullException("Can't not be null.");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// IGrouping<K, V>[][] aa = new IGrouping<K, V>[ss.Length][];
|
|
||||||
// for(int i = 0; i < aa.Length; i++) {
|
|
||||||
// aa[i] = ss[i].ToArray();
|
|
||||||
// K[] keys = aa[i].Select(x => x.Key).ToArray();
|
|
||||||
// Array.Sort(keys, aa[i], kComparer);
|
|
||||||
// }
|
|
||||||
// int len = aa[0].Length;
|
|
||||||
// for(int i = 1; i < aa.Length; i++) {
|
|
||||||
// if(aa[i].Length != len) {
|
|
||||||
// throw new Exception("Wrong number of elements.");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for(int i = 0; i < len; i++) {
|
|
||||||
// IEnumerable<V> elem = aa[0][i];
|
|
||||||
// for(int j = 1; j < aa.Length; j++) {
|
|
||||||
// Check(new IEnumerable<V>[] { elem, aa[j][i] }, vComparer);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Tolerant float comparer. Floating point differences between
|
|
||||||
/// GPU and CPU cause the default comparer to fail sometimes even when
|
|
||||||
/// the result is correct. Use this comparer to introduce some tolerance
|
|
||||||
/// for this
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 2/19/2013. </remarks>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class TolerantDoubleComparer : IComparer<double> {
|
|
||||||
Double EPSILON;
|
|
||||||
public TolerantDoubleComparer(Double _epsilon = 0.000001f) {
|
|
||||||
EPSILON = _epsilon;
|
|
||||||
}
|
|
||||||
public int Compare(Double a, Double b) {
|
|
||||||
Double delta = a - b;
|
|
||||||
if(Math.Abs(delta) <= EPSILON)
|
|
||||||
return 0;
|
|
||||||
return delta < 0.0f ? -1 : 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Tolerant float comparer. Floating point differences between
|
|
||||||
/// GPU and CPU cause the default comparer to fail sometimes even when
|
|
||||||
/// the result is correct. Use this comparer to introduce some tolerance
|
|
||||||
/// for this
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 2/19/2013. </remarks>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class TolerantFloatComparer : IComparer<float> {
|
|
||||||
float EPSILON;
|
|
||||||
public TolerantFloatComparer(float _epsilon = 0.000001f) {
|
|
||||||
EPSILON = _epsilon;
|
|
||||||
}
|
|
||||||
public int Compare(float a, float b) {
|
|
||||||
float delta = a - b;
|
|
||||||
if(Math.Abs(delta) <= EPSILON)
|
|
||||||
return 0;
|
|
||||||
return delta < 0.0f ? -1 : 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Tolerant float comparer. Floating point differences between
|
|
||||||
/// GPU and CPU cause the default comparer to fail sometimes even when
|
|
||||||
/// the result is correct. Use this comparer to introduce some tolerance
|
|
||||||
/// for this
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 2/19/2013. </remarks>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class TolerantVectorComparer : IComparer<Vector> {
|
|
||||||
float EPSILON;
|
|
||||||
public TolerantVectorComparer(float _epsilon = 0.0001f) {
|
|
||||||
EPSILON = _epsilon;
|
|
||||||
}
|
|
||||||
public int Compare(Vector a, Vector b) {
|
|
||||||
for(int i = 0; i < a.m_elems.Length; i++) {
|
|
||||||
float delta = a.m_elems[i] - b.m_elems[i];
|
|
||||||
if(Math.Abs(delta) > EPSILON)
|
|
||||||
return delta < 0.0f ? -1 : 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Interface for epsilon comparable single. </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 1/16/2014. </remarks>
|
|
||||||
///
|
|
||||||
/// <typeparam name="T"> Generic type parameter. </typeparam>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public interface IEpsilonComparableSingle<T> {
|
|
||||||
int EpsilonCompare(T a, T b, float epsilon);
|
|
||||||
}
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Interface for epsilon comparable double. </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 1/16/2014. </remarks>
|
|
||||||
///
|
|
||||||
/// <typeparam name="T"> Generic type parameter. </typeparam>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public interface IEpsilonComparableDouble<T> {
|
|
||||||
int EpsilonCompare(T a, T b, double epsilon);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Tolerant float comparer. Floating point differences between
|
|
||||||
/// GPU and CPU cause the default comparer to fail sometimes even when
|
|
||||||
/// the result is correct. Use this comparer to introduce some tolerance
|
|
||||||
/// for this
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 2/19/2013. </remarks>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class EpsilonComparer<T> : IComparer<T> where T : IEpsilonComparableSingle<T> {
|
|
||||||
float EPSILON;
|
|
||||||
public EpsilonComparer(float _epsilon = 0.0001f) {
|
|
||||||
EPSILON = _epsilon;
|
|
||||||
}
|
|
||||||
public int Compare(T a, T b) {
|
|
||||||
return a.EpsilonCompare(a, b, EPSILON);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
/// <summary> Tolerant float comparer for images. Floating point differences between
|
|
||||||
/// GPU and CPU cause the default comparer to fail sometimes even when
|
|
||||||
/// the result is correct. Use this comparer to introduce some tolerance
|
|
||||||
/// for this
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> Crossbac, 2/19/2013. </remarks>
|
|
||||||
///-------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public class TolerantImageComparer : IComparer<Image> {
|
|
||||||
float EPSILON;
|
|
||||||
public TolerantImageComparer(float _epsilon = 0.0001f) {
|
|
||||||
EPSILON = _epsilon;
|
|
||||||
}
|
|
||||||
public int Compare(Image a, Image b) {
|
|
||||||
for(int i = 0; i < a.m_elems.Length; i++) {
|
|
||||||
float delta = a.m_elems[i] - b.m_elems[i];
|
|
||||||
if(Math.Abs(delta) > EPSILON)
|
|
||||||
return delta < 0.0f ? -1 : 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Compare two instances of Pair<int,int>.
|
|
||||||
/// Implement for concrete type as Pair<T1,T2> cannot straighforwardly implement IComparable.
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
/// <remarks> jcurrey, 3/11/2013. </remarks>
|
|
||||||
public class PairIntIntComparer : IComparer<Pair<int, int>> {
|
|
||||||
public int Compare(Pair<int, int> a, Pair<int, int> b) {
|
|
||||||
int keyComparison = a.Key.CompareTo(b.Key);
|
|
||||||
if(keyComparison == 0) {
|
|
||||||
return a.Value.CompareTo(b.Value);
|
|
||||||
} else {
|
|
||||||
return keyComparison;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
// comment the following line to run on Azure
|
||||||
|
#define local
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Microsoft.Research.DryadLinq;
|
||||||
|
using Microsoft.Research.Peloponnese.Storage;
|
||||||
|
|
||||||
|
namespace DryadLinqTests
|
||||||
|
{
|
||||||
|
public class WordCount
|
||||||
|
{
|
||||||
|
public static void WordCountExample()
|
||||||
|
{
|
||||||
|
#if local
|
||||||
|
// This overload runs the computation on your local computer using a single worker
|
||||||
|
var config = new DryadLinqContext(1);
|
||||||
|
|
||||||
|
var lines = new LineRecord[] { new LineRecord("This is a dummy line for a short job") };
|
||||||
|
// You can create inputs from any IEnumerable source using this method
|
||||||
|
var input = config.FromEnumerable(lines);
|
||||||
|
#else
|
||||||
|
string clusterName = "Replace with your HDInsight 3.0 cluster name";
|
||||||
|
// to use the davinci.txt example input below, select your cluster's default
|
||||||
|
// storage account and container, which automatically includes the sample text
|
||||||
|
string accountName = "Replace with a storage account name";
|
||||||
|
string containerName = "Replace with a storage container name";
|
||||||
|
|
||||||
|
// This overload creates an Azure-based computation
|
||||||
|
var config = new DryadLinqContext(clusterName);
|
||||||
|
config.JobFriendlyName = "DryadLINQ Sample Wordcount";
|
||||||
|
|
||||||
|
// plain text files should be read as type LineRecord
|
||||||
|
var input = config.FromStore<LineRecord>(AzureUtils.ToAzureUri(accountName, containerName,
|
||||||
|
"example/data/gutenberg/davinci.txt"));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
var words = input.SelectMany(x => x.Line.Split(' '));
|
||||||
|
var groups = words.GroupBy(x => x);
|
||||||
|
var counts = groups.Select(x => new KeyValuePair<string, int>(x.Key, x.Count()));
|
||||||
|
var toOutput = counts.Select(x => new LineRecord(String.Format("{0}: {1}", x.Key, x.Value)));
|
||||||
|
|
||||||
|
#if local
|
||||||
|
// any collection computed by the query can be materialized back at the client,
|
||||||
|
// not just the 'output' collection. For large collections this is expensive!
|
||||||
|
foreach (LineRecord line in toOutput)
|
||||||
|
{
|
||||||
|
Console.WriteLine(line.Line);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// the 'true' parameter to ToStore means the output will be over-written if you run
|
||||||
|
// the job more than once
|
||||||
|
var info = toOutput.ToStore(AzureUtils.ToAzureUri(accountName, containerName,
|
||||||
|
"wc-out.txt"), true).SubmitAndWait();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,21 +1,23 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Research.Dryad" version="0.1.4-beta001" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Research.DryadLINQ.MSAGL" version="3.0.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
|
|
@ -149,13 +149,13 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="Native" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="Native" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -277,7 +277,6 @@ DrError VertexFactoryRegistry::MakeVertex(UInt32 vertexId,
|
||||||
DryadVertexProgramRef* pProgram)
|
DryadVertexProgramRef* pProgram)
|
||||||
{
|
{
|
||||||
DryadVertexProgramBase* program;
|
DryadVertexProgramBase* program;
|
||||||
|
|
||||||
//
|
//
|
||||||
// If factory is not supplied, try to get it from factory registry.
|
// If factory is not supplied, try to get it from factory registry.
|
||||||
// If still unable, fail with error.
|
// If still unable, fail with error.
|
||||||
|
|
@ -295,12 +294,14 @@ DrError VertexFactoryRegistry::MakeVertex(UInt32 vertexId,
|
||||||
return DryadError_VertexInitialization;
|
return DryadError_VertexInitialization;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get vertex factory. If one cannot be found, report initialization error
|
// Get vertex factory. If one cannot be found, report initialization error
|
||||||
//
|
//
|
||||||
factory = LookUpFactory(argumentList[0]);
|
factory = LookUpFactory(argumentList[0]);
|
||||||
if (factory == NULL)
|
if (factory == NULL)
|
||||||
{
|
{
|
||||||
|
DrLogW("Factory Registry called with unknown factory UID %s.", argumentList[0].GetString());
|
||||||
DrStr128 errorString;
|
DrStr128 errorString;
|
||||||
errorString.SetF("Factory Registry called with unknown factory UID %s",
|
errorString.SetF("Factory Registry called with unknown factory UID %s",
|
||||||
argumentList[0].GetString());
|
argumentList[0].GetString());
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("managedchannel")]
|
[assembly: AssemblyProduct("dryad")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
@ -51,5 +51,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
|
@ -47,81 +47,81 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.166.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\..\..\..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Services.Client" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<HintPath>..\..\..\..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
|
@ -160,10 +160,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -28,7 +28,6 @@ limitations under the License.
|
||||||
#include <mscoree.h>
|
#include <mscoree.h>
|
||||||
#include <wrappernativeinfo.h>
|
#include <wrappernativeinfo.h>
|
||||||
|
|
||||||
|
|
||||||
#pragma managed
|
#pragma managed
|
||||||
|
|
||||||
#pragma warning(disable:4947) // so that we can use Assembly::LoadWithPartialName()
|
#pragma warning(disable:4947) // so that we can use Assembly::LoadWithPartialName()
|
||||||
|
|
@ -202,14 +201,13 @@ void ManagedWrapperVertex::Main(WorkQueue* workQueue,
|
||||||
DrLogI("ManagedWrapperVertex: Calling %s.%s", GetArgument(2), GetArgument(3));
|
DrLogI("ManagedWrapperVertex: Calling %s.%s", GetArgument(2), GetArgument(3));
|
||||||
DrLogging::FlushLog();
|
DrLogging::FlushLog();
|
||||||
|
|
||||||
|
|
||||||
DrStr128 errorMsg;
|
DrStr128 errorMsg;
|
||||||
DrError error;
|
DrError error;
|
||||||
|
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Instead of invoking the vertex entry point directly from here, we delegate it to the bridge method in the Microsoft.Hpc.Linq assembly, specifically:
|
// Instead of invoking the vertex entry point directly from here, we delegate it to the bridge method in the Microsoft.Research.DryadLinq assembly, specifically:
|
||||||
// static int Microsoft.Hpc.Linq.Internal.VertexEnv.VertexBridge(string vertexBridgeArgs)
|
// static int Microsoft.Research.DryadLinq.Internal.VertexEnv.VertexBridge(string vertexBridgeArgs)
|
||||||
//
|
//
|
||||||
// This indirect method of invoking the vertex entry point is used so that any type load / assembly load problems coming from user code
|
// This indirect method of invoking the vertex entry point is used so that any type load / assembly load problems coming from user code
|
||||||
// can be caught and reported with full details using the same mechanism that other vertex failures go through (exception dumped into vertexexception.txt etc.)
|
// can be caught and reported with full details using the same mechanism that other vertex failures go through (exception dumped into vertexexception.txt etc.)
|
||||||
|
|
@ -217,8 +215,10 @@ void ManagedWrapperVertex::Main(WorkQueue* workQueue,
|
||||||
// The format of vertexBridgeArgs is simply a comma separated string packing vertex assembly, class, method name, and the *actual* vertex method args (==the native channel string)
|
// The format of vertexBridgeArgs is simply a comma separated string packing vertex assembly, class, method name, and the *actual* vertex method args (==the native channel string)
|
||||||
// L"<vertexAssembly>,<vertexClassName>,<vertexMethodName>,<vertexMethodArgs>"
|
// L"<vertexAssembly>,<vertexClassName>,<vertexMethodName>,<vertexMethodArgs>"
|
||||||
//
|
//
|
||||||
System::String ^bridgeAssemblyPartialName = gcnew System::String(L"Microsoft.Research.DryadLinq");
|
System::String^ classFullName = gcnew System::String(GetArgument(2));
|
||||||
System::String ^bridgeClassName = gcnew System::String(L"Microsoft.Research.DryadLinq.Internal.VertexEnv");
|
System::String^ assemblyName = classFullName->Substring(0, classFullName->LastIndexOf('.'));
|
||||||
|
System::String ^bridgeAssemblyPartialName = gcnew System::String(assemblyName);
|
||||||
|
System::String ^bridgeClassName = gcnew System::String(assemblyName + ".Internal.VertexEnv");
|
||||||
System::String ^bridgeMethodName = gcnew System::String(L"VertexBridge");
|
System::String ^bridgeMethodName = gcnew System::String(L"VertexBridge");
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -235,7 +235,6 @@ void ManagedWrapperVertex::Main(WorkQueue* workQueue,
|
||||||
vertexMethodArgs->Append(gcnew System::String(arg.GetString()));
|
vertexMethodArgs->Append(gcnew System::String(arg.GetString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get assembly path, class name, and method name, and construct the vertex bridge args with the following format:
|
// Get assembly path, class name, and method name, and construct the vertex bridge args with the following format:
|
||||||
// "<vertexAssembly>,<vertexClassName>,<vertexMethodName>,<vertexMethodArgs>"
|
// "<vertexAssembly>,<vertexClassName>,<vertexMethodName>,<vertexMethodArgs>"
|
||||||
|
|
@ -243,7 +242,7 @@ void ManagedWrapperVertex::Main(WorkQueue* workQueue,
|
||||||
System::Text::StringBuilder ^vertexBridgeArg = gcnew System::Text::StringBuilder();
|
System::Text::StringBuilder ^vertexBridgeArg = gcnew System::Text::StringBuilder();
|
||||||
vertexBridgeArg->Append(gcnew System::String(GetArgument(1))); // path to vertex DLL as passed to the vertex host, e.g. L"c:\\HpcTemp\\user\\jobID\\Microsoft.Hpc.Linq0.dll";
|
vertexBridgeArg->Append(gcnew System::String(GetArgument(1))); // path to vertex DLL as passed to the vertex host, e.g. L"c:\\HpcTemp\\user\\jobID\\Microsoft.Hpc.Linq0.dll";
|
||||||
vertexBridgeArg->Append(",");
|
vertexBridgeArg->Append(",");
|
||||||
vertexBridgeArg->Append(gcnew System::String(GetArgument(2))); // full name of class that contains vertex entry method, e.g. L"Microsoft.Hpc.Linq.HpcLinq__Vertex";
|
vertexBridgeArg->Append(gcnew System::String(GetArgument(2))); // full name of class that contains vertex entry method, e.g. L"Microsoft.Research.DryadLinq.DryadLinq__Vertex";
|
||||||
vertexBridgeArg->Append(",");
|
vertexBridgeArg->Append(",");
|
||||||
vertexBridgeArg->Append(gcnew System::String(GetArgument(3))); // vertex entry method name L"Select__1";
|
vertexBridgeArg->Append(gcnew System::String(GetArgument(3))); // vertex entry method name L"Select__1";
|
||||||
vertexBridgeArg->Append(",");
|
vertexBridgeArg->Append(",");
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
|
|
|
||||||
|
|
@ -570,7 +570,7 @@ DrString DrClusterInternal::TranslateFileToURI(DrString leafName, DrString direc
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrClusterInternal::ScheduleProcess(DrAffinityListRef affinities,
|
void DrClusterInternal::ScheduleProcess(DrAffinityListRef affinities,
|
||||||
DrString name, DrString commandLine,
|
DrString name, DrString commandLineArgs,
|
||||||
DrProcessTemplatePtr processTemplate,
|
DrProcessTemplatePtr processTemplate,
|
||||||
DrPSRListenerPtr listener)
|
DrPSRListenerPtr listener)
|
||||||
{
|
{
|
||||||
|
|
@ -604,7 +604,7 @@ void DrClusterInternal::ScheduleProcess(DrAffinityListRef affinities,
|
||||||
DrLogI("Starting schedule process for %s.%s",
|
DrLogI("Starting schedule process for %s.%s",
|
||||||
processTemplate->GetProcessClass().GetChars(), name.GetChars());
|
processTemplate->GetProcessClass().GetChars(), name.GetChars());
|
||||||
|
|
||||||
IProcess^ rawProcess = m_cluster->NewProcess(process, commandLine.GetString());
|
IProcess^ rawProcess = m_cluster->NewProcess(process, processTemplate->GetCommandLineBase().GetString(), commandLineArgs.GetString());
|
||||||
process->SetProcess(rawProcess);
|
process->SetProcess(rawProcess);
|
||||||
|
|
||||||
DrLogI("Assigned GUID %s to process for %s.%s",
|
DrLogI("Assigned GUID %s to process for %s.%s",
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,10 @@ public:
|
||||||
DrResourcePtr srcResource, DrResourcePtr dstResource, int compressionMode) = 0;
|
DrResourcePtr srcResource, DrResourcePtr dstResource, int compressionMode) = 0;
|
||||||
|
|
||||||
virtual void ScheduleProcess(DrAffinityListRef affinities,
|
virtual void ScheduleProcess(DrAffinityListRef affinities,
|
||||||
DrString name, DrString commandLine,
|
DrString name, DrString commandLineArgs,
|
||||||
DrProcessTemplatePtr processTemplate,
|
DrProcessTemplatePtr processTemplate,
|
||||||
DrPSRListenerPtr listener) = 0;
|
DrPSRListenerPtr listener) = 0;
|
||||||
|
|
||||||
virtual void CancelScheduleProcess(DrProcessHandlePtr process) = 0;
|
virtual void CancelScheduleProcess(DrProcessHandlePtr process) = 0;
|
||||||
|
|
||||||
virtual void WaitForStateChange(DrProcessHandlePtr process, DrPSRListenerPtr listener) = 0;
|
virtual void WaitForStateChange(DrProcessHandlePtr process, DrPSRListenerPtr listener) = 0;
|
||||||
|
|
|
||||||
|
|
@ -165,9 +165,10 @@ public:
|
||||||
DrResourcePtr srcResource, DrResourcePtr dstResource, int compressionMode) DROVERRIDE;
|
DrResourcePtr srcResource, DrResourcePtr dstResource, int compressionMode) DROVERRIDE;
|
||||||
|
|
||||||
virtual void ScheduleProcess(DrAffinityListRef affinities,
|
virtual void ScheduleProcess(DrAffinityListRef affinities,
|
||||||
DrString name, DrString commandLine,
|
DrString name, DrString commandLineArgs,
|
||||||
DrProcessTemplatePtr processTemplate,
|
DrProcessTemplatePtr processTemplate,
|
||||||
DrPSRListenerPtr listener) DROVERRIDE;
|
DrPSRListenerPtr listener) DROVERRIDE;
|
||||||
|
|
||||||
virtual void CancelScheduleProcess(DrProcessHandlePtr process) DROVERRIDE;
|
virtual void CancelScheduleProcess(DrProcessHandlePtr process) DROVERRIDE;
|
||||||
|
|
||||||
virtual void WaitForStateChange(DrProcessHandlePtr process, DrPSRListenerPtr listener) DROVERRIDE;
|
virtual void WaitForStateChange(DrProcessHandlePtr process, DrPSRListenerPtr listener) DROVERRIDE;
|
||||||
|
|
|
||||||
|
|
@ -470,8 +470,7 @@ void DrCohort::StartProcess(DrGraphPtr graph, int version)
|
||||||
processName.SetF("%s v.%d", m_description.GetChars(), version);
|
processName.SetF("%s v.%d", m_description.GetChars(), version);
|
||||||
|
|
||||||
DrString commandLine;
|
DrString commandLine;
|
||||||
commandLine.SetF("%s --noredirect --startfrompn %d",
|
commandLine.SetF("--noredirect --startfrompn %d", m_list->Size());
|
||||||
m_processTemplate->GetCommandLineBase().GetChars(), m_list->Size());
|
|
||||||
|
|
||||||
for (i=0; i<m_list->Size(); ++i)
|
for (i=0; i<m_list->Size(); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -197,14 +197,13 @@ namespace Microsoft.Research.DryadLinq
|
||||||
/// <typeparam name="T">The record type of the dataset.</typeparam>
|
/// <typeparam name="T">The record type of the dataset.</typeparam>
|
||||||
/// <param name="context">An instance of <see cref="DryadLinqContext"/></param>
|
/// <param name="context">An instance of <see cref="DryadLinqContext"/></param>
|
||||||
/// <param name="dataSetUri">The URI of the dataset</param>
|
/// <param name="dataSetUri">The URI of the dataset</param>
|
||||||
/// <returns>A query object representing the dsc file set data.</returns>
|
/// <returns>A query object representing the specified dataset.</returns>
|
||||||
internal static DryadLinqQuery<T> GetPartitionedTable<T>(DryadLinqContext context, Uri dataSetUri)
|
internal static DryadLinqQuery<T> GetPartitionedTable<T>(DryadLinqContext context, Uri dataSetUri)
|
||||||
{
|
{
|
||||||
string scheme = DataPath.GetScheme(dataSetUri);
|
string scheme = DataPath.GetScheme(dataSetUri);
|
||||||
DataProvider dataProvider = DataProvider.GetDataProvider(scheme);
|
DataProvider dataProvider = DataProvider.GetDataProvider(scheme);
|
||||||
DryadLinqProvider queryProvider = new DryadLinqProvider(context);
|
|
||||||
dataSetUri = dataProvider.RewriteUri<T>(context, dataSetUri);
|
dataSetUri = dataProvider.RewriteUri<T>(context, dataSetUri);
|
||||||
return new DryadLinqQuery<T>(null, queryProvider, dataProvider, dataSetUri);
|
return new DryadLinqQuery<T>(context, dataProvider, dataSetUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -244,7 +243,9 @@ namespace Microsoft.Research.DryadLinq
|
||||||
DataProvider dataProvider = DataProvider.GetDataProvider(scheme);
|
DataProvider dataProvider = DataProvider.GetDataProvider(scheme);
|
||||||
dataSetUri = dataProvider.RewriteUri<T>(context, dataSetUri);
|
dataSetUri = dataProvider.RewriteUri<T>(context, dataSetUri);
|
||||||
dataProvider.Ingress(context, source, dataSetUri, metaData, outputScheme, isTemp);
|
dataProvider.Ingress(context, source, dataSetUri, metaData, outputScheme, isTemp);
|
||||||
return DataProvider.GetPartitionedTable<T>(context, dataSetUri);
|
DryadLinqQuery<T> res = DataProvider.GetPartitionedTable<T>(context, dataSetUri);
|
||||||
|
res.CheckAndInitialize(); // must initialize
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -589,7 +590,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AzureCollectionPartition partition = new AzureCollectionPartition(dataSetUri);
|
AzureCollectionPartition partition = new AzureCollectionPartition(dataSetUri);
|
||||||
|
|
||||||
if (!partition.IsCollectionExists())
|
if (!partition.IsCollectionExists())
|
||||||
{
|
{
|
||||||
throw new DryadLinqException("Input collection " + dataSetUri + " does not exist");
|
throw new DryadLinqException("Input collection " + dataSetUri + " does not exist");
|
||||||
|
|
|
||||||
|
|
@ -143,8 +143,13 @@ namespace Microsoft.Research.DryadLinq
|
||||||
_clusterClient = null;
|
_clusterClient = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlatformKind Kind { get { return PlatformKind.YARN_NATIVE; } }
|
public PlatformKind Kind
|
||||||
public IDfsClient DfsClient {
|
{
|
||||||
|
get { return PlatformKind.YARN_NATIVE; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDfsClient DfsClient
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_dfsClient == null)
|
if (_dfsClient == null)
|
||||||
|
|
@ -195,7 +200,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
// start fetching details about the subscriptions, available clusters, etc.
|
// start fetching details about the subscriptions, available clusters, etc.
|
||||||
_azureSubscriptions = new AzureSubscriptions();
|
_azureSubscriptions = new AzureSubscriptions();
|
||||||
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
||||||
_dfsClient = _cluster.ContinueWith(c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, "staging"));
|
_dfsClient = _cluster.ContinueWith(
|
||||||
|
c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, "staging"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -215,8 +221,10 @@ namespace Microsoft.Research.DryadLinq
|
||||||
_azureSubscriptions.AddAccount(storageAccount, storageKey);
|
_azureSubscriptions.AddAccount(storageAccount, storageKey);
|
||||||
}
|
}
|
||||||
_cluster = _azureSubscriptions.GetClusterAsync(clusterName)
|
_cluster = _azureSubscriptions.GetClusterAsync(clusterName)
|
||||||
.ContinueWith(t => { t.Result.SetStorageAccount(storageAccount, storageKey); return t.Result; });
|
.ContinueWith(t => { t.Result.SetStorageAccount(storageAccount, storageKey);
|
||||||
_dfsClient = _cluster.ContinueWith(c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, storageContainer));
|
return t.Result; });
|
||||||
|
_dfsClient = _cluster.ContinueWith(
|
||||||
|
c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, storageContainer));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -248,7 +256,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
_azureSubscriptions = new AzureSubscriptions();
|
_azureSubscriptions = new AzureSubscriptions();
|
||||||
_azureSubscriptions.AddSubscription(subscriptionId, certificate);
|
_azureSubscriptions.AddSubscription(subscriptionId, certificate);
|
||||||
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
||||||
_dfsClient = _cluster.ContinueWith(c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, "staging"));
|
_dfsClient = _cluster.ContinueWith(
|
||||||
|
c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, "staging"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -272,7 +281,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
}
|
}
|
||||||
_azureSubscriptions.AddCluster(clusterName, storageAccount, storageKey, subscriptionId, certificateThumbprint);
|
_azureSubscriptions.AddCluster(clusterName, storageAccount, storageKey, subscriptionId, certificateThumbprint);
|
||||||
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
_cluster = _azureSubscriptions.GetClusterAsync(clusterName);
|
||||||
_dfsClient = _cluster.ContinueWith(c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, storageContainer));
|
_dfsClient = _cluster.ContinueWith(
|
||||||
|
c => new AzureDfsClient(c.Result.StorageAccount, c.Result.StorageKey, storageContainer));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -320,7 +330,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
public Uri MakeDefaultUri(string path)
|
public Uri MakeDefaultUri(string path)
|
||||||
{
|
{
|
||||||
return AzureUtils.ToAzureUri(_dfsClient.Result.AccountName, _dfsClient.Result.ContainerName, path, null, _dfsClient.Result.AccountKey);
|
return AzureUtils.ToAzureUri(
|
||||||
|
_dfsClient.Result.AccountName, _dfsClient.Result.ContainerName, path, null, _dfsClient.Result.AccountKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -363,7 +374,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
private string _nodeGroup;
|
private string _nodeGroup;
|
||||||
private int? _jobRuntimeLimit;
|
private int? _jobRuntimeLimit;
|
||||||
private bool _localDebug = false;
|
private bool _localDebug = false;
|
||||||
private bool _localExecution = false;
|
|
||||||
private string _jobUsername = null;
|
private string _jobUsername = null;
|
||||||
private string _jobPassword = null;
|
private string _jobPassword = null;
|
||||||
private QueryTraceLevel _runtimeTraceLevel = QueryTraceLevel.Error;
|
private QueryTraceLevel _runtimeTraceLevel = QueryTraceLevel.Error;
|
||||||
|
|
@ -371,11 +381,11 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
private bool _enableSpeculativeDuplication = true;
|
private bool _enableSpeculativeDuplication = true;
|
||||||
private bool _selectOrderPreserving = false;
|
private bool _selectOrderPreserving = false;
|
||||||
|
|
||||||
private bool _matchClientNetFrameworkVersion = true;
|
private bool _matchClientNetFrameworkVersion = true;
|
||||||
private bool _multiThreading = true;
|
private bool _multiThreading = true;
|
||||||
private string _partitionUncPath = null;
|
private string _partitionUncPath = null;
|
||||||
private string _storageSetScheme = null;
|
private string _storageSetScheme = null;
|
||||||
|
|
||||||
private DryadLinqStringDictionary _jobEnvironmentVariables = new DryadLinqStringDictionary();
|
private DryadLinqStringDictionary _jobEnvironmentVariables = new DryadLinqStringDictionary();
|
||||||
private DryadLinqStringList _resourcesToAdd = new DryadLinqStringList();
|
private DryadLinqStringList _resourcesToAdd = new DryadLinqStringList();
|
||||||
private DryadLinqStringList _resourcesToRemove = new DryadLinqStringList();
|
private DryadLinqStringList _resourcesToRemove = new DryadLinqStringList();
|
||||||
|
|
@ -414,7 +424,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
this.CommonInit();
|
this.CommonInit();
|
||||||
this._platformKind = PlatformKind.LOCAL;
|
this._platformKind = PlatformKind.LOCAL;
|
||||||
this._localExecution = true;
|
|
||||||
this._headNode = "LocalExecution";
|
this._headNode = "LocalExecution";
|
||||||
this._storageSetScheme = storageSetScheme;
|
this._storageSetScheme = storageSetScheme;
|
||||||
if (String.IsNullOrEmpty(this._storageSetScheme))
|
if (String.IsNullOrEmpty(this._storageSetScheme))
|
||||||
|
|
@ -682,23 +691,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
set { _localDebug = value; }
|
set { _localDebug = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the value specifying whether to use Local execution mode.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// <para>
|
|
||||||
/// If true, the DryadLINQ Query will execute by forking processes on the local
|
|
||||||
/// computer instead of using a cluster. LocalExecution mode accesses HDFS as usual for
|
|
||||||
/// input and output data.
|
|
||||||
/// </para>
|
|
||||||
/// <para>The default is false.</para>
|
|
||||||
/// </remarks>
|
|
||||||
public bool LocalExecution
|
|
||||||
{
|
|
||||||
get { return _localExecution; }
|
|
||||||
set { _localExecution = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets and sets the value specifying whether a vertex should break into the debugger
|
/// Gets and sets the value specifying whether a vertex should break into the debugger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -922,7 +914,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
ThrowIfDisposed();
|
ThrowIfDisposed();
|
||||||
DryadLinqQuery<T> q = DataProvider.GetPartitionedTable<T>(this, dataSetUri);
|
DryadLinqQuery<T> q = DataProvider.GetPartitionedTable<T>(this, dataSetUri);
|
||||||
q.CheckAndInitialize(); // force the data-info checks.
|
q.CheckAndInitialize(); // Must initialize!
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1018,7 +1010,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
this.JobRuntimeLimit == context.JobRuntimeLimit &&
|
this.JobRuntimeLimit == context.JobRuntimeLimit &&
|
||||||
this.EnableSpeculativeDuplication == context.EnableSpeculativeDuplication &&
|
this.EnableSpeculativeDuplication == context.EnableSpeculativeDuplication &&
|
||||||
this.LocalDebug == context.LocalDebug &&
|
this.LocalDebug == context.LocalDebug &&
|
||||||
this.LocalExecution == context.LocalExecution &&
|
|
||||||
this.PlatformKind == context.PlatformKind &&
|
this.PlatformKind == context.PlatformKind &&
|
||||||
this.JobUsername == context.JobUsername &&
|
this.JobUsername == context.JobUsername &&
|
||||||
this.JobPassword == context.JobPassword &&
|
this.JobPassword == context.JobPassword &&
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ using System.Text;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace Microsoft.Research.DryadLinq
|
namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
// use a new job submission object for each query
|
// use a new job submission object for each query
|
||||||
this.m_context = context;
|
this.m_context = context;
|
||||||
this.m_currentStatus = JobStatus.NotSubmitted;
|
this.m_currentStatus = JobStatus.NotSubmitted;
|
||||||
if (context.LocalExecution)
|
if (context.PlatformKind == PlatformKind.LOCAL)
|
||||||
{
|
{
|
||||||
this.m_jobSubmission = new LocalJobSubmission(context);
|
this.m_jobSubmission = new LocalJobSubmission(context);
|
||||||
}
|
}
|
||||||
|
|
@ -86,8 +86,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
/// <param name="file">Pathname to file to add as a resource.</param>
|
/// <param name="file">Pathname to file to add as a resource.</param>
|
||||||
private void AddResource(IDryadLinqJobSubmission jobSubmission, string file)
|
private void AddResource(IDryadLinqJobSubmission jobSubmission, string file)
|
||||||
{
|
{
|
||||||
// extract basename
|
|
||||||
string basename = Path.GetFileName(file);
|
|
||||||
this.m_jobSubmission.AddLocalFile(file);
|
this.m_jobSubmission.AddLocalFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
this.m_queryProvider = queryProvider;
|
this.m_queryProvider = queryProvider;
|
||||||
this.m_dataProvider = dataProvider;
|
this.m_dataProvider = dataProvider;
|
||||||
|
this.m_isTemp = false;
|
||||||
this.m_queryExecutor = null;
|
this.m_queryExecutor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -259,7 +260,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
public DryadLinqContext Context
|
public DryadLinqContext Context
|
||||||
{
|
{
|
||||||
get { return m_queryProvider.Context; }
|
get { return this.m_queryProvider.Context; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool IsTemp
|
internal bool IsTemp
|
||||||
|
|
@ -303,24 +304,27 @@ namespace Microsoft.Research.DryadLinq
|
||||||
private Expression m_queryExpression;
|
private Expression m_queryExpression;
|
||||||
private Uri m_dataSourceUri;
|
private Uri m_dataSourceUri;
|
||||||
private DataSetInfo m_dataSetInfo;
|
private DataSetInfo m_dataSetInfo;
|
||||||
private bool m_isDynamic;
|
|
||||||
private DryadLinqQueryEnumerable<T> m_tableEnumerable;
|
private DryadLinqQueryEnumerable<T> m_tableEnumerable;
|
||||||
|
private bool m_isDynamic;
|
||||||
|
private bool m_initialized;
|
||||||
|
|
||||||
// Used by IQueryProvider. e.g., IQueryable<>.Select() and IQueryable<>.ToStore()
|
// Used by IQueryProvider. e.g., IQueryable<>.Select() and IQueryable<>.ToStore()
|
||||||
internal DryadLinqQuery(DryadLinqProviderBase provider, Expression expression)
|
internal DryadLinqQuery(DryadLinqProviderBase provider, Expression expression)
|
||||||
: base(provider, null)
|
: base(provider, null)
|
||||||
{
|
{
|
||||||
this.m_queryExpression = expression;
|
this.m_queryExpression = expression;
|
||||||
this.m_isDynamic = false;
|
this.m_dataSourceUri = null;
|
||||||
|
this.m_dataSetInfo = null;
|
||||||
this.m_tableEnumerable = null;
|
this.m_tableEnumerable = null;
|
||||||
|
this.m_isDynamic = false;
|
||||||
|
this.m_initialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used by DryadLinqContext.LoadFrom(uri)
|
// Used by DryadLinqContext.FromStore(uri)
|
||||||
internal DryadLinqQuery(Expression queryExpression,
|
internal DryadLinqQuery(DryadLinqContext context,
|
||||||
DryadLinqProvider queryProvider,
|
|
||||||
DataProvider dataProvider,
|
DataProvider dataProvider,
|
||||||
Uri dataSetUri)
|
Uri dataSetUri)
|
||||||
: base(queryProvider, dataProvider)
|
: base(null, dataProvider)
|
||||||
{
|
{
|
||||||
if (!DataPath.IsValidDataPath(dataSetUri))
|
if (!DataPath.IsValidDataPath(dataSetUri))
|
||||||
{
|
{
|
||||||
|
|
@ -328,10 +332,26 @@ namespace Microsoft.Research.DryadLinq
|
||||||
String.Format(SR.UnrecognizedDataSource, dataSetUri.AbsoluteUri));
|
String.Format(SR.UnrecognizedDataSource, dataSetUri.AbsoluteUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.m_queryExpression = queryExpression;
|
|
||||||
this.m_dataSourceUri = dataSetUri;
|
this.m_dataSourceUri = dataSetUri;
|
||||||
|
this.m_dataSetInfo = null;
|
||||||
this.m_isDynamic = false;
|
this.m_isDynamic = false;
|
||||||
this.m_tableEnumerable = null;
|
this.m_initialized = false;
|
||||||
|
|
||||||
|
this.m_tableEnumerable
|
||||||
|
= new DryadLinqQueryEnumerable<T>(context, this.DataProvider, this.m_dataSourceUri);
|
||||||
|
|
||||||
|
// YY: query expression and provider are at least set consistently
|
||||||
|
if (context.LocalDebug)
|
||||||
|
{
|
||||||
|
this.m_queryExpression = Expression.Constant(this.m_tableEnumerable.AsQueryable());
|
||||||
|
IQueryProvider linqToObjectProvider = this.m_tableEnumerable.AsQueryable().Provider;
|
||||||
|
this.m_queryProvider = new DryadLinqLocalProvider(linqToObjectProvider, context);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.m_queryExpression = Expression.Constant(this);
|
||||||
|
this.m_queryProvider = new DryadLinqProvider(context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Clone(DryadLinqQuery<T> otherQuery)
|
internal void Clone(DryadLinqQuery<T> otherQuery)
|
||||||
|
|
@ -341,8 +361,9 @@ namespace Microsoft.Research.DryadLinq
|
||||||
otherQuery.m_queryExpression = this.m_queryExpression;
|
otherQuery.m_queryExpression = this.m_queryExpression;
|
||||||
otherQuery.m_dataSourceUri = this.m_dataSourceUri;
|
otherQuery.m_dataSourceUri = this.m_dataSourceUri;
|
||||||
otherQuery.m_dataSetInfo = this.m_dataSetInfo;
|
otherQuery.m_dataSetInfo = this.m_dataSetInfo;
|
||||||
otherQuery.m_isDynamic = this.m_isDynamic;
|
|
||||||
otherQuery.m_tableEnumerable = this.m_tableEnumerable;
|
otherQuery.m_tableEnumerable = this.m_tableEnumerable;
|
||||||
|
otherQuery.m_isDynamic = this.m_isDynamic;
|
||||||
|
otherQuery.m_initialized = this.m_initialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns true for DLQ that are pointing directly at plain data.
|
// returns true for DLQ that are pointing directly at plain data.
|
||||||
|
|
@ -479,23 +500,21 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
internal void Initialize()
|
internal void Initialize()
|
||||||
{
|
{
|
||||||
if (this.IsPlainData && this.m_tableEnumerable == null)
|
if (this.IsPlainData && !this.m_initialized)
|
||||||
{
|
{
|
||||||
DryadLinqStreamInfo
|
DryadLinqStreamInfo streamInfo = this.DataProvider.GetStreamInfo(this.Context, this.m_dataSourceUri);
|
||||||
streamInfo = this.DataProvider.GetStreamInfo(this.Context, this.m_dataSourceUri);
|
|
||||||
Int32 parCount = streamInfo.PartitionCount;
|
Int32 parCount = streamInfo.PartitionCount;
|
||||||
Int64 estSize = streamInfo.DataSize;
|
Int64 estSize = streamInfo.DataSize;
|
||||||
this.m_isDynamic = false;
|
|
||||||
|
|
||||||
// Finally load any stored metadata to check settings, extract compression-setting
|
// Finally load any stored metadata to check settings, extract compression-setting
|
||||||
// and initialize the DataInfo for this Query. It is uri.. have to convert to stream-name.
|
// and initialize the DataInfo for this Query. It is uri.. have to convert to stream-name.
|
||||||
DryadLinqMetaData meta = DryadLinqMetaData.Get(Context, this.m_dataSourceUri);
|
DryadLinqMetaData meta = DryadLinqMetaData.Get(this.Context, this.m_dataSourceUri);
|
||||||
if (meta != null)
|
if (meta != null)
|
||||||
{
|
{
|
||||||
//check the record-type matches meta-data. (disabled until final API is determined)
|
//check the record-type matches meta-data. (disabled until final API is determined)
|
||||||
//if (meta.ElemType != typeof(T))
|
//if (meta.ElemType != typeof(T))
|
||||||
//{
|
//{
|
||||||
// throw new DisributedLinqException(DryadLinqErrorCode.MetadataRecordType,
|
// throw new DryadLinqException(DryadLinqErrorCode.MetadataRecordType,
|
||||||
// String.Format(SR.MetadataRecordType,
|
// String.Format(SR.MetadataRecordType,
|
||||||
// typeof(T), meta.ElemType));
|
// typeof(T), meta.ElemType));
|
||||||
//}
|
//}
|
||||||
|
|
@ -520,25 +539,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
DistinctInfo dinfo = DataSetInfo.NoDistinct;
|
DistinctInfo dinfo = DataSetInfo.NoDistinct;
|
||||||
this.m_dataSetInfo = new DataSetInfo(pinfo, oinfo, dinfo);
|
this.m_dataSetInfo = new DataSetInfo(pinfo, oinfo, dinfo);
|
||||||
|
|
||||||
this.m_tableEnumerable
|
this.m_initialized = true;
|
||||||
= new DryadLinqQueryEnumerable<T>(this.Context, this.DataProvider, this.m_dataSourceUri);
|
|
||||||
|
|
||||||
// YY: query expression and provider are at least set consistently
|
|
||||||
if (Context.LocalDebug)
|
|
||||||
{
|
|
||||||
this.m_queryExpression = Expression.Constant(this.m_tableEnumerable.AsQueryable());
|
|
||||||
IQueryProvider linqToObjectProvider = this.m_tableEnumerable.AsQueryable().Provider;
|
|
||||||
this.m_queryProvider = new DryadLinqLocalProvider(linqToObjectProvider, Context);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.m_queryExpression = Expression.Constant(this);
|
|
||||||
if (this.m_queryProvider == null)
|
|
||||||
{
|
|
||||||
// Only set if not provided
|
|
||||||
this.m_queryProvider = new DryadLinqProvider(this.Context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -566,11 +567,23 @@ namespace Microsoft.Research.DryadLinq
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DryadLinqQueryable.SubmitAndWait(this);
|
this.ToTemporary();
|
||||||
return this.m_backingData.GetEnumerator();
|
return this.m_backingData.GetEnumerator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ToTemporary()
|
||||||
|
{
|
||||||
|
// Execute this query and store the result in a temp location
|
||||||
|
Uri tableUri = this.Context.MakeTemporaryStreamUri();
|
||||||
|
DryadLinqQueryGen dryadGen = new DryadLinqQueryGen(
|
||||||
|
this.Context, this.GetVertexCodeGen(), this.m_queryExpression, tableUri, true);
|
||||||
|
DryadLinqQuery[] tables = dryadGen.Execute();
|
||||||
|
|
||||||
|
tables[0].IsTemp = true;
|
||||||
|
this.BackingData = tables[0];
|
||||||
|
}
|
||||||
|
|
||||||
// Generate the query plan as an XML file and return the file name.
|
// Generate the query plan as an XML file and return the file name.
|
||||||
// returns the queryPlan xml path.
|
// returns the queryPlan xml path.
|
||||||
internal string ToDryadLinqProgram()
|
internal string ToDryadLinqProgram()
|
||||||
|
|
|
||||||
|
|
@ -850,7 +850,6 @@ namespace Microsoft.Research.DryadLinq
|
||||||
queryDoc.DocumentElement.AppendChild(elem);
|
queryDoc.DocumentElement.AppendChild(elem);
|
||||||
|
|
||||||
// Add the visualization element
|
// Add the visualization element
|
||||||
//@@TODO[p2]: remove this element from the queryXML.
|
|
||||||
elem = queryDoc.CreateElement("Visualization");
|
elem = queryDoc.CreateElement("Visualization");
|
||||||
elem.InnerText = "none";
|
elem.InnerText = "none";
|
||||||
queryDoc.DocumentElement.AppendChild(elem);
|
queryDoc.DocumentElement.AppendChild(elem);
|
||||||
|
|
|
||||||
|
|
@ -4232,7 +4232,10 @@ namespace Microsoft.Research.DryadLinq
|
||||||
BindingFlags.Static | BindingFlags.NonPublic);
|
BindingFlags.Static | BindingFlags.NonPublic);
|
||||||
Type elemType = mcExpr.Type.GetGenericArguments()[0];
|
Type elemType = mcExpr.Type.GetGenericArguments()[0];
|
||||||
minfo = minfo.MakeGenericMethod(elemType);
|
minfo = minfo.MakeGenericMethod(elemType);
|
||||||
mcExpr = Expression.Call(minfo, mcExpr, Expression.Constant(tableUri));
|
mcExpr = Expression.Call(minfo,
|
||||||
|
mcExpr,
|
||||||
|
Expression.Constant(tableUri, typeof(Uri)),
|
||||||
|
Expression.Constant(isTemp, typeof(bool)));
|
||||||
}
|
}
|
||||||
qList.Add(mcExpr);
|
qList.Add(mcExpr);
|
||||||
isTempList.Add(isTemp);
|
isTempList.Add(isTemp);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
|
@ -58,68 +58,68 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.166.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
|
@ -128,13 +128,13 @@
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
|
@ -249,10 +249,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
public LocalJobSubmission(DryadLinqContext context) : base(context)
|
public LocalJobSubmission(DryadLinqContext context) : base(context)
|
||||||
{
|
{
|
||||||
m_status = JobStatus.NotSubmitted;
|
this.m_status = JobStatus.NotSubmitted;
|
||||||
m_error = null;
|
this.m_error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ErrorMsg
|
public override string ErrorMsg
|
||||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
lock (this)
|
lock (this)
|
||||||
{
|
{
|
||||||
return m_error;
|
return this.m_error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -60,7 +60,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
lock (this)
|
lock (this)
|
||||||
{
|
{
|
||||||
return m_status;
|
return this.m_status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,8 +88,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
environment.Add("PELOPONNESE_ADDITIONAL_CLASSPATH", jarPath);
|
environment.Add("PELOPONNESE_ADDITIONAL_CLASSPATH", jarPath);
|
||||||
|
|
||||||
// add the query plan to the JM directory so that job analysis tools can find it later
|
// add the query plan to the JM directory so that job analysis tools can find it later
|
||||||
string queryPlanDirectory = Path.GetDirectoryName(QueryPlan);
|
string queryPlanDirectory = Path.GetDirectoryName(this.QueryPlan);
|
||||||
string queryPlanFile = Path.GetFileName(QueryPlan);
|
string queryPlanFile = Path.GetFileName(this.QueryPlan);
|
||||||
HashSet<string> queryPlanSet = new HashSet<string>();
|
HashSet<string> queryPlanSet = new HashSet<string>();
|
||||||
queryPlanSet.Add(queryPlanFile);
|
queryPlanSet.Add(queryPlanFile);
|
||||||
List<XElement> resources = new List<XElement>();
|
List<XElement> resources = new List<XElement>();
|
||||||
|
|
@ -110,6 +110,9 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
protected override XElement MakeWorkerConfig(string configPath, XElement peloponneseResource)
|
protected override XElement MakeWorkerConfig(string configPath, XElement peloponneseResource)
|
||||||
{
|
{
|
||||||
|
Dictionary<string, string> environment = new Dictionary<string, string>(this.Context.JobEnvironmentVariables);
|
||||||
|
|
||||||
|
|
||||||
// add job-local resources to each worker directory, leaving out the standard Dryad files
|
// add job-local resources to each worker directory, leaving out the standard Dryad files
|
||||||
var resources = new List<XElement>();
|
var resources = new List<XElement>();
|
||||||
foreach (var rg in LocalResources)
|
foreach (var rg in LocalResources)
|
||||||
|
|
@ -126,7 +129,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
return ConfigHelpers.MakeProcessGroup(
|
return ConfigHelpers.MakeProcessGroup(
|
||||||
"Worker", "local", 2, numWorkerProcesses, false,
|
"Worker", "local", 2, numWorkerProcesses, false,
|
||||||
psPath, psArgs, null, "processservice-stdout.txt", "processservice-stderr.txt",
|
psPath, psArgs, null, "processservice-stdout.txt", "processservice-stderr.txt",
|
||||||
resources, null);
|
resources, environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string MakeProcessServiceConfig()
|
private string MakeProcessServiceConfig()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
|
@ -9,8 +9,8 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("DryadLinq client assembly")]
|
[assembly: AssemblyDescription("DryadLinq client assembly")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Microsoft")]
|
[assembly: AssemblyCompany("Microsoft")]
|
||||||
[assembly: AssemblyProduct("Microsoft.Research.DryadLinq.Properties")]
|
[assembly: AssemblyProduct("Dryad")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2014")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
|
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -411,6 +411,8 @@ namespace Microsoft.Research.DryadLinq
|
||||||
Dictionary<Type, Type[]> typeMap = new Dictionary<Type, Type[]>();
|
Dictionary<Type, Type[]> typeMap = new Dictionary<Type, Type[]>();
|
||||||
HashSet<Assembly> assemblies = TypeSystem.GetAllAssemblies();
|
HashSet<Assembly> assemblies = TypeSystem.GetAllAssemblies();
|
||||||
foreach (Assembly asm in assemblies)
|
foreach (Assembly asm in assemblies)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
foreach (Type type in asm.GetTypes())
|
foreach (Type type in asm.GetTypes())
|
||||||
{
|
{
|
||||||
|
|
@ -462,6 +464,11 @@ namespace Microsoft.Research.DryadLinq
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// Console.WriteLine("Warning: Could not retrieve the types in: " + asm.FullName);
|
||||||
|
}
|
||||||
|
}
|
||||||
s_typeMap = typeMap;
|
s_typeMap = typeMap;
|
||||||
return s_typeMap;
|
return s_typeMap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -220,17 +220,17 @@ namespace Microsoft.Research.DryadLinq
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (m_job == null)
|
if (this.m_job == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return m_job.ErrorMsg;
|
return this.m_job.ErrorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override JobStatus GetStatus()
|
public override JobStatus GetStatus()
|
||||||
{
|
{
|
||||||
if (m_job == null)
|
if (this.m_job == null)
|
||||||
{
|
{
|
||||||
return JobStatus.NotSubmitted;
|
return JobStatus.NotSubmitted;
|
||||||
}
|
}
|
||||||
|
|
@ -261,7 +261,13 @@ namespace Microsoft.Research.DryadLinq
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string JobDirectory { get { return Context.Cluster.Client(Context).JobDirectoryTemplate.Replace("_BASELOCATION_", "dryad-jobs"); } }
|
private string JobDirectory
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Context.Cluster.Client(Context).JobDirectoryTemplate.Replace("_BASELOCATION_", "dryad-jobs");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void SubmitJob()
|
public override void SubmitJob()
|
||||||
{
|
{
|
||||||
|
|
@ -282,7 +288,7 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_job = Context.Cluster.Client(Context).Submit(config, JobDirectory);
|
this.m_job = Context.Cluster.Client(Context).Submit(config, JobDirectory);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
@ -292,19 +298,19 @@ namespace Microsoft.Research.DryadLinq
|
||||||
|
|
||||||
public override JobStatus TerminateJob()
|
public override JobStatus TerminateJob()
|
||||||
{
|
{
|
||||||
m_job.Kill();
|
this.m_job.Kill();
|
||||||
return GetStatus();
|
return GetStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string GetJobId()
|
public override string GetJobId()
|
||||||
{
|
{
|
||||||
if (m_job == null)
|
if (this.m_job == null)
|
||||||
{
|
{
|
||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return m_job.Id;
|
return this.m_job.Id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
|
@ -46,81 +46,81 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.166.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Services.Client" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
|
@ -162,10 +162,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
|
@ -22,6 +22,14 @@
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.WindowsAzure.Management.HDInsight" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.0.7" newVersion="1.1.0.7" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Hadoop.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.1.0.7" newVersion="1.1.0.7" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
|
||||||
<metadata minClientVersion="2.5">
|
<metadata minClientVersion="2.5">
|
||||||
<id>Microsoft.Research.Dryad</id>
|
<id>Microsoft.Research.Dryad</id>
|
||||||
<version>0.1.3-beta</version>
|
<version>0.1.5-beta</version>
|
||||||
<title>Dryad and DryadLINQ for YARN</title>
|
<title>Dryad and DryadLINQ for YARN</title>
|
||||||
<authors>bigdatadev@microsoft.com</authors>
|
<authors>bigdatadev@microsoft.com</authors>
|
||||||
<owners>bigdatadev@microsoft.com,Microsoft</owners>
|
<owners>bigdatadev@microsoft.com,Microsoft</owners>
|
||||||
|
|
@ -17,7 +17,8 @@ Dryad provides reliable, distributed computing on thousands of servers for large
|
||||||
<language>en-US</language>
|
<language>en-US</language>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<group targetFramework=".NETFramework4.5">
|
<group targetFramework=".NETFramework4.5">
|
||||||
<dependency id="Microsoft.Research.Peloponnese" version="0.7.2-beta" />
|
<dependency id="Microsoft.Research.Peloponnese" version="0.7.5-beta" />
|
||||||
|
<!--<dependency id="zlib" version="1.2.8.6" />-->
|
||||||
</group>
|
</group>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<frameworkAssemblies>
|
<frameworkAssemblies>
|
||||||
|
|
@ -61,6 +62,5 @@ Dryad provides reliable, distributed computing on thousands of servers for large
|
||||||
<file src="bin\signed\VertexHost.exe" target="lib\net45\VertexHost.exe" />
|
<file src="bin\signed\VertexHost.exe" target="lib\net45\VertexHost.exe" />
|
||||||
<file src="bin\Release\VertexHost.pdb" target="lib\net45\VertexHost.pdb" />
|
<file src="bin\Release\VertexHost.pdb" target="lib\net45\VertexHost.pdb" />
|
||||||
<file src="Microsoft.Research.Dryad.targets" target="build\Microsoft.Research.Dryad.targets" />
|
<file src="Microsoft.Research.Dryad.targets" target="build\Microsoft.Research.Dryad.targets" />
|
||||||
<file src="Install.ps1" target="tools\Install.ps1" />
|
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
||||||
|
|
|
||||||
|
|
@ -236,12 +236,14 @@ namespace Microsoft.Research.Dryad.ProcessService
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string commandLine;
|
string commandLine;
|
||||||
|
string arguments;
|
||||||
|
|
||||||
using (var sr = new System.IO.StreamReader(context.Request.InputStream))
|
using (var sr = new System.IO.StreamReader(context.Request.InputStream))
|
||||||
{
|
{
|
||||||
commandLine = sr.ReadToEnd();
|
commandLine = sr.ReadLine();
|
||||||
|
arguments = sr.ReadLine();
|
||||||
}
|
}
|
||||||
logger.Log("Received create for process " + processId + " cmdline: " + commandLine);
|
logger.Log("Received create for process " + processId + " cmdline: " + commandLine + " arguments: " + arguments);
|
||||||
|
|
||||||
if (parent.Create(processId))
|
if (parent.Create(processId))
|
||||||
{
|
{
|
||||||
|
|
@ -254,7 +256,7 @@ namespace Microsoft.Research.Dryad.ProcessService
|
||||||
await server.ReportError(context, HttpStatusCode.Conflict, "Process " + processId + " already exists");
|
await server.ReportError(context, HttpStatusCode.Conflict, "Process " + processId + " already exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
parent.Launch(processId, commandLine);
|
parent.Launch(processId, commandLine, arguments);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -565,7 +565,42 @@ namespace Microsoft.Research.Dryad.ProcessService
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Launch(int processId, string commandLine)
|
private void SplitCmdLine(string cmdLine, out string cmd, out string args)
|
||||||
|
{
|
||||||
|
cmd = "";
|
||||||
|
args = "";
|
||||||
|
int lastSpacePos = 0;
|
||||||
|
bool rootedPath = Path.IsPathRooted(cmdLine);
|
||||||
|
string candPath = cmdLine;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (!rootedPath)
|
||||||
|
{
|
||||||
|
candPath = Path.Combine(Environment.CurrentDirectory, candPath);
|
||||||
|
}
|
||||||
|
if (File.Exists(candPath))
|
||||||
|
{
|
||||||
|
cmd = candPath;
|
||||||
|
args = (lastSpacePos > 0) ? cmdLine.Substring(lastSpacePos) : "";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int spacePos = cmdLine.IndexOf(' ', lastSpacePos);
|
||||||
|
if (spacePos != -1)
|
||||||
|
{
|
||||||
|
candPath = cmdLine.Substring(0, spacePos);
|
||||||
|
lastSpacePos = spacePos + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new ApplicationException("Couldn't split command line into command line and arguments.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Launch(int processId, string commandLine, string arguments)
|
||||||
{
|
{
|
||||||
ProcessRecord process;
|
ProcessRecord process;
|
||||||
lock (processTable)
|
lock (processTable)
|
||||||
|
|
@ -589,28 +624,22 @@ namespace Microsoft.Research.Dryad.ProcessService
|
||||||
startInfo.WorkingDirectory = Path.Combine(serviceWorkingDirectory, processId.ToString());
|
startInfo.WorkingDirectory = Path.Combine(serviceWorkingDirectory, processId.ToString());
|
||||||
logger.Log(String.Format("Working directory: '{0}'", startInfo.WorkingDirectory));
|
logger.Log(String.Format("Working directory: '{0}'", startInfo.WorkingDirectory));
|
||||||
|
|
||||||
string[] args = commandLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
string arg = "";
|
|
||||||
for (int i = 1; i < args.Length; i++)
|
|
||||||
{
|
|
||||||
arg += args[i] + " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Use either FQ path or path relative to job path
|
// Use either FQ path or path relative to job path
|
||||||
if (Path.IsPathRooted(args[0]))
|
if (Path.IsPathRooted(commandLine))
|
||||||
{
|
{
|
||||||
startInfo.FileName = args[0];
|
startInfo.FileName = commandLine;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
startInfo.FileName = Path.Combine(serviceWorkingDirectory, args[0]);
|
startInfo.FileName = Path.Combine(serviceWorkingDirectory, commandLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startInfo.Arguments = arguments;
|
||||||
logger.Log(String.Format("FileName: '{0}'", startInfo.FileName));
|
logger.Log(String.Format("FileName: '{0}'", startInfo.FileName));
|
||||||
|
|
||||||
// Add environment variable to vertex host process
|
logger.Log(String.Format("args: '{0}'", arguments));
|
||||||
startInfo.Arguments = arg;
|
|
||||||
logger.Log(String.Format("args: '{0}'", arg));
|
|
||||||
|
|
||||||
|
// Add environment variable to vertex host process
|
||||||
Uri genericUri = new Uri(processServer.BaseURI);
|
Uri genericUri = new Uri(processServer.BaseURI);
|
||||||
Uri localUri = new Uri(genericUri.Scheme + "://localhost:" + genericUri.Port + genericUri.PathAndQuery);
|
Uri localUri = new Uri(genericUri.Scheme + "://localhost:" + genericUri.Port + genericUri.PathAndQuery);
|
||||||
string processUpdateURI = localUri.ToString() + processId.ToString();
|
string processUpdateURI = localUri.ToString() + processId.ToString();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
|
@ -47,81 +47,81 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Hadoop.Client, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.Hadoop.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.HadoopBridge, Version=0.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.HadoopBridge.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
<Reference Include="Microsoft.Research.Peloponnese.Utils, Version=0.7.2.0, Culture=neutral, processorArchitecture=AMD64">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\lib\net45\Microsoft.Research.Peloponnese.Utils.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.166.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.166\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.0.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Common.1.1.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.HDInsight.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.0.7, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.HDInsight.Framework.Core, Version=1.1.1.8, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.0.7\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Hadoop.Client.1.1.1.8\lib\net40\Microsoft.WindowsAzure.Management.HDInsight.Framework.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Management.Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
<HintPath>..\packages\Microsoft.WindowsAzure.Management.Storage.1.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.1.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\WindowsAzure.Storage.3.1.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
<HintPath>..\packages\WindowsAzure.Storage.4.0.1\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.Services.Client" />
|
<Reference Include="System.Data.Services.Client" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.19\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Spatial, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
|
@ -158,10 +158,10 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.2-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
<Import Project="..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets" Condition="Exists('..\packages\Microsoft.Research.Peloponnese.0.7.5-beta\build\Microsoft.Research.Peloponnese.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Microsoft Corporation")]
|
[assembly: AssemblyCompany("Microsoft Corporation")]
|
||||||
[assembly: AssemblyProduct("ProcessService")]
|
[assembly: AssemblyProduct("Dryad")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
@ -51,5 +51,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.3.0")]
|
[assembly: AssemblyVersion("0.1.5.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.3.0")]
|
[assembly: AssemblyFileVersion("0.1.5.0")]
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
<assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.0.1" newVersion="3.1.0.1" />
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Microsoft.Bcl" version="1.1.7" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.166" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
<package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.Hadoop.Client" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.Hadoop.Client" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.19" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" />
|
||||||
<package id="Microsoft.Research.Peloponnese" version="0.7.2-beta" targetFramework="net45" />
|
<package id="Microsoft.Research.Peloponnese" version="0.7.5-beta" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common" version="1.0.1" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.0.1" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management" version="1.2.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.0.7" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.HDInsight" version="1.1.1.8" targetFramework="net45" />
|
||||||
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.0.0" targetFramework="net45" />
|
<package id="Microsoft.WindowsAzure.Management.Storage" version="1.1.1" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="6.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
<package id="System.Spatial" version="5.6.1" targetFramework="net45" />
|
||||||
<package id="WindowsAzure.Storage" version="3.1.0.1" targetFramework="net45" />
|
<package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<topic id="91822db3-8a00-4307-ad8a-595c94f449b0" revisionNumber="1">
|
<topic id="91822db3-8a00-4307-ad8a-595c94f449b0" revisionNumber="1">
|
||||||
<developerHowToDocument
|
<developerHowToDocument
|
||||||
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
|
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"
|
||||||
|
|
@ -36,8 +36,8 @@
|
||||||
<step>
|
<step>
|
||||||
<content>
|
<content>
|
||||||
<para>Clone the Dryad sources from <externalLink>
|
<para>Clone the Dryad sources from <externalLink>
|
||||||
<linkText>https://github.com/MicrosoftResearchSVC/Dryad.git</linkText>
|
<linkText>https://github.com/MicrosoftResearch/Dryad.git</linkText>
|
||||||
<linkUri>https://github.com/MicrosoftResearchSVC/Dryad.git</linkUri>
|
<linkUri>https://github.com/MicrosoftResearch/Dryad.git</linkUri>
|
||||||
<linkTarget>_blank</linkTarget>
|
<linkTarget>_blank</linkTarget>
|
||||||
</externalLink>.</para>
|
</externalLink>.</para>
|
||||||
</content>
|
</content>
|
||||||
|
|
|
||||||
|
|
@ -122,11 +122,15 @@
|
||||||
<linkTarget>_blank</linkTarget>
|
<linkTarget>_blank</linkTarget>
|
||||||
</externalLink>, and click on the <command>Hadoop YARN Status</command> shortcut link on the desktop, you can see all these
|
</externalLink>, and click on the <command>Hadoop YARN Status</command> shortcut link on the desktop, you can see all these
|
||||||
jobs running.</para>
|
jobs running.</para>
|
||||||
<para>Unfortunately because of the current configuration of HDInsight clusters, all DryadLINQ logs are deleted immediately
|
<para>Unfortunately because of the current configuration of HDInsight clusters, all DryadLINQ logs are archived immediately
|
||||||
when the application exits, and you will get a "Failed redirect for container" error if you try to navigate to the logs of
|
when the application exits, and you will get a "Failed redirect for container" error if you try to navigate to the logs of
|
||||||
a completed application. We have tried to report errors in user application code back so that they are visible in the
|
a completed application. We have tried to report errors in user application code back so that they are visible in the
|
||||||
<link xlink:href="91822db3-8a00-4307-ad8a-595c94f449b0">DryadLINQ Job Browser</link> to avoid the need to consult
|
<link xlink:href="91822db3-8a00-4307-ad8a-595c94f449b0">DryadLINQ Job Browser</link> to avoid the need to consult
|
||||||
the logs.</para>
|
the logs. If you do need to consult the logs, remote desktop to your HDInsight cluster, then click on the
|
||||||
|
<command>Hadoop Command Line</command> link on the desktop, and then run a command similar to
|
||||||
|
<command>yarn logs -applicationId <APPLICATION_ID> -appOwner <CLUSTER_USER_NAME></command> where you replace
|
||||||
|
<APPLICATION_ID> and <CLUSTER_USER_NAME> with values appropriate to your job and cluster configuration.
|
||||||
|
</para>
|
||||||
<para>
|
<para>
|
||||||
<mediaLinkInline>
|
<mediaLinkInline>
|
||||||
<image xlink:href="Dryad on Azure Architecture"/>
|
<image xlink:href="Dryad on Azure Architecture"/>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
<para>Dryad, DryadLINQ, and the JobBrowser have been released as open source under the Apache 2.0 license. The
|
<para>Dryad, DryadLINQ, and the JobBrowser have been released as open source under the Apache 2.0 license. The
|
||||||
source is hosted at the <externalLink>
|
source is hosted at the <externalLink>
|
||||||
<linkText>Dryad GitHub repository</linkText>
|
<linkText>Dryad GitHub repository</linkText>
|
||||||
<linkUri>https://github.com/MicrosoftResearchSVC/Dryad</linkUri>
|
<linkUri>https://github.com/MicrosoftResearch/Dryad</linkUri>
|
||||||
<linkTarget>_blank</linkTarget>
|
<linkTarget>_blank</linkTarget>
|
||||||
</externalLink>. There are also <externalLink>
|
</externalLink>. There are also <externalLink>
|
||||||
<linkText>Dryad NuGet packages</linkText>
|
<linkText>Dryad NuGet packages</linkText>
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
<para>See details on <link xlink:href="91822db3-8a00-4307-ad8a-595c94f449b0">Building the job browser</link>. More documentation
|
<para>See details on <link xlink:href="91822db3-8a00-4307-ad8a-595c94f449b0">Building the job browser</link>. More documentation
|
||||||
is listed in the <externalLink>
|
is listed in the <externalLink>
|
||||||
<linkText>DryadLINQ job browser manual</linkText>
|
<linkText>DryadLINQ job browser manual</linkText>
|
||||||
<linkUri>https://github.com/MicrosoftResearchSVC/Dryad/wiki/Using%20the%20DryadLINQ%20job%20browser</linkUri>
|
<linkUri>https://github.com/MicrosoftResearch/Dryad/wiki/Using%20the%20DryadLINQ%20job%20browser</linkUri>
|
||||||
<linkTarget>_blank</linkTarget>
|
<linkTarget>_blank</linkTarget>
|
||||||
</externalLink>.</para>
|
</externalLink>.</para>
|
||||||
</content>
|
</content>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
|
||||||
<metadata minClientVersion="2.5">
|
<metadata minClientVersion="2.5">
|
||||||
<id>Microsoft.Research.DryadLinq.Samples</id>
|
<id>Microsoft.Research.DryadLinq.Samples</id>
|
||||||
<version>0.1.3-beta</version>
|
<version>0.1.5-beta</version>
|
||||||
<title>Sample DryadLINQ Programs</title>
|
<title>Sample DryadLINQ Programs</title>
|
||||||
<authors>bigdatadev@microsoft.com</authors>
|
<authors>bigdatadev@microsoft.com</authors>
|
||||||
<owners>bigdatadev@microsoft.com,Microsoft</owners>
|
<owners>bigdatadev@microsoft.com,Microsoft</owners>
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<language>en-US</language>
|
<language>en-US</language>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<group targetFramework=".NETFramework4.5">
|
<group targetFramework=".NETFramework4.5">
|
||||||
<dependency id="Microsoft.Research.Dryad" version="0.1.3-beta" />
|
<dependency id="Microsoft.Research.Dryad" version="0.1.5-beta" />
|
||||||
</group>
|
</group>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<frameworkAssemblies>
|
<frameworkAssemblies>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue