public void NewBatchTaskParametersGetPassedToRequestTest(string commandline) { BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys(); cmdlet.BatchContext = context; cmdlet.Id = "testTask"; cmdlet.JobId = "testJob"; cmdlet.AffinityInformation = new PSAffinityInformation("affinityValue"); cmdlet.DisplayName = "display name"; cmdlet.Constraints = new PSTaskConstraints(TimeSpan.FromHours(1), TimeSpan.FromDays(2), 5); cmdlet.CommandLine = commandline; cmdlet.EnvironmentSettings = new Dictionary <string, string>(); cmdlet.EnvironmentSettings.Add("env1", "value1"); cmdlet.MultiInstanceSettings = new PSMultiInstanceSettings("cmd /c echo coordinating", 3) { CommonResourceFiles = new List <PSResourceFile>() { new PSResourceFile(ResourceFile.FromUrl("https://some.blob", "myFile.txt")) } }; cmdlet.ResourceFiles = new PSResourceFile[] { new PSResourceFile(ResourceFile.FromUrl("anotherFile.txt", "https://another.blob")) }; TaskAddParameter requestParameters = null; // Store the request parameters RequestInterceptor interceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor < TaskAddParameter, TaskAddOptions, AzureOperationHeaderResponse <TaskAddHeaders> >(requestAction: (r) => { requestParameters = r.Parameters; }); cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>() { interceptor }; cmdlet.ExecuteCmdlet(); // Verify the request parameters match the cmdlet parameters Assert.Equal(cmdlet.AffinityInformation.AffinityId, requestParameters.AffinityInfo.AffinityId); Assert.Equal(cmdlet.DisplayName, requestParameters.DisplayName); Assert.Equal(cmdlet.Constraints.RetentionTime, requestParameters.Constraints.RetentionTime); Assert.Equal(cmdlet.Constraints.MaxTaskRetryCount, requestParameters.Constraints.MaxTaskRetryCount); Assert.Equal(cmdlet.Constraints.MaxWallClockTime, requestParameters.Constraints.MaxWallClockTime); Assert.Equal(cmdlet.CommandLine, requestParameters.CommandLine); Assert.Equal(cmdlet.EnvironmentSettings.Count, requestParameters.EnvironmentSettings.Count); Assert.Equal(cmdlet.EnvironmentSettings["env1"], requestParameters.EnvironmentSettings[0].Value); Assert.Equal(cmdlet.MultiInstanceSettings.NumberOfInstances, requestParameters.MultiInstanceSettings.NumberOfInstances); Assert.Equal(cmdlet.MultiInstanceSettings.CoordinationCommandLine, requestParameters.MultiInstanceSettings.CoordinationCommandLine); Assert.Equal(cmdlet.MultiInstanceSettings.CommonResourceFiles.Count, requestParameters.MultiInstanceSettings.CommonResourceFiles.Count); Assert.Equal(cmdlet.MultiInstanceSettings.CommonResourceFiles[0].HttpUrl, requestParameters.MultiInstanceSettings.CommonResourceFiles[0].HttpUrl); Assert.Equal(cmdlet.MultiInstanceSettings.CommonResourceFiles[0].FilePath, requestParameters.MultiInstanceSettings.CommonResourceFiles[0].FilePath); Assert.Equal(cmdlet.ResourceFiles.Length, requestParameters.ResourceFiles.Count); Assert.Equal(cmdlet.ResourceFiles.Single().HttpUrl, requestParameters.ResourceFiles.Single().HttpUrl); }
public void NewBatchTaskCollectionParametersTest() { string commandLine = "cmd /c dir /s"; // Setup cmdlet without the required parameters BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys(); cmdlet.BatchContext = context; Assert.Throws <ArgumentNullException>(() => cmdlet.ExecuteCmdlet()); cmdlet.JobId = "job-collection"; Assert.Throws <ArgumentNullException>(() => cmdlet.ExecuteCmdlet()); const string pattern = @"**\*.txt"; const string containerUrl = "containerUrl"; const string path = "path"; const OutputFileUploadCondition uploadCondition = OutputFileUploadCondition.TaskCompletion; string[] taskIds = new[] { "simple1", "simple2" }; PSCloudTask[] tasks = taskIds.Select( id => new PSCloudTask(id, commandLine) { ResourceFiles = new[] { new PSResourceFile(ResourceFile.FromUrl("anotherFile.txt", "https://another.blob")) }, OutputFiles = new[] { new PSOutputFile( pattern, new PSOutputFileDestination(new PSOutputFileBlobContainerDestination(containerUrl, path)), new PSOutputFileUploadOptions(uploadCondition)) }, ApplicationPackageReferences = new[] { new PSApplicationPackageReference { ApplicationId = "1", Version = "foo" } }, ExitConditions = new PSExitConditions() { ExitCodeRanges = new List <PSExitCodeRangeMapping> { new PSExitCodeRangeMapping( 5, 10, new PSExitOptions { DependencyAction = Azure.Batch.Common.DependencyAction.Block }) }, ExitCodes = new List <PSExitCodeMapping> { new PSExitCodeMapping( 11, new PSExitOptions { DependencyAction = Azure.Batch.Common.DependencyAction.Block }) }, Default = new PSExitOptions { DependencyAction = Azure.Batch.Common.DependencyAction.Satisfy } } }).ToArray(); cmdlet.Tasks = tasks; IList <TaskAddParameter> requestCollection = null; Action <BatchRequest < IList <TaskAddParameter>, TaskAddCollectionOptions, AzureOperationResponse <TaskAddCollectionResult, TaskAddCollectionHeaders> > > extractCollection = (request) => { requestCollection = request.Parameters; }; // Don't go to the service on an Add Task Collection call AzureOperationResponse <TaskAddCollectionResult, TaskAddCollectionHeaders> response = BatchTestHelpers.CreateTaskCollectionResponse(cmdlet.Tasks); RequestInterceptor interceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor(responseToUse: response, requestAction: extractCollection); cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>() { interceptor }; // Verify no exceptions when required parameters are set cmdlet.ExecuteCmdlet(); Assert.Equal(2, requestCollection.Count); foreach (var task in requestCollection) { Assert.Contains(task.Id, taskIds); Assert.NotNull(task.ResourceFiles); Assert.NotEmpty(task.ResourceFiles); Assert.NotNull(task.OutputFiles); Assert.NotEmpty(task.OutputFiles); Assert.NotNull(task.ApplicationPackageReferences); Assert.NotEmpty(task.ApplicationPackageReferences); Assert.NotNull(task.ExitConditions.ExitCodeRanges); Assert.NotEmpty(task.ExitConditions.ExitCodeRanges); Assert.NotNull(task.ExitConditions.ExitCodes); Assert.NotEmpty(task.ExitConditions.ExitCodes); Assert.NotNull(task.ExitConditions.DefaultProperty); } }