Пример #1
0
        public void WhenGettingATaskFromTheService_ExitConditionsAreMapped()
        {
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            cmdlet.BatchContext = context;
            cmdlet.Id           = "task-1";
            cmdlet.JobId        = "job-1";
            cmdlet.Filter       = null;

            // Build a CloudTask instead of querying the service on a Get CloudTask call
            ProxyModels.ExitOptions none = new ProxyModels.ExitOptions {
                JobAction = ProxyModels.JobAction.None
            };
            ProxyModels.ExitOptions terminate = new ProxyModels.ExitOptions {
                JobAction = ProxyModels.JobAction.Terminate
            };

            ProxyModels.CloudTask cloudTask = new ProxyModels.CloudTask {
                Id             = "task-1",
                ExitConditions = new ProxyModels.ExitConditions {
                    ExitCodeRanges  = new [] { new ProxyModels.ExitCodeRangeMapping(2, 5, none) },
                    ExitCodes       = new[] { new ProxyModels.ExitCodeMapping(4, terminate) },
                    SchedulingError = terminate,
                    DefaultProperty = none,
                }
            };

            AzureOperationResponse <ProxyModels.CloudTask, ProxyModels.TaskGetHeaders> response = BatchTestHelpers.CreateCloudTaskGetResponse(cloudTask);

            RequestInterceptor interceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor <ProxyModels.TaskGetOptions,
                                                                                                    AzureOperationResponse <ProxyModels.CloudTask, ProxyModels.TaskGetHeaders> >(response);

            cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>()
            {
                interceptor
            };

            // Setup the cmdlet to write pipeline output to a list that can be examined later
            var pipeline = new List <PSCloudTask>();

            commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSCloudTask>())).Callback <object>(t => pipeline.Add((PSCloudTask)t));

            cmdlet.ExecuteCmdlet();

            // Verify that the cmdlet wrote the task returned from the OM to the pipeline
            Assert.Equal(1, pipeline.Count);
            Assert.Equal(cmdlet.Id, pipeline[0].Id);

            PSExitConditions psExitConditions = pipeline[0].ExitConditions;

            Assert.Equal(psExitConditions.Default.JobAction, JobAction.None);
            Assert.Equal(psExitConditions.ExitCodeRanges.First().ExitOptions.JobAction, JobAction.None);
            Assert.Equal(psExitConditions.SchedulingError.JobAction, JobAction.Terminate);

            Assert.Equal(4, psExitConditions.ExitCodes.First().Code);
            Assert.Equal(JobAction.Terminate, psExitConditions.ExitCodes.First().ExitOptions.JobAction);
            Assert.Equal(2, psExitConditions.ExitCodeRanges.First().Start);
            Assert.Equal(5, psExitConditions.ExitCodeRanges.First().End);
            Assert.Equal(JobAction.None, psExitConditions.ExitCodeRanges.First().ExitOptions.JobAction);
        }
Пример #2
0
 public static void ExitConditionsSyncCollections(PSExitConditions exitConditions)
 {
     if (exitConditions != null)
     {
         exitConditions.omObject.ExitCodeRanges = CreateSyncedList(
             exitConditions.ExitCodeRanges,
             (e) =>
         {
             ExitCodeRangeMapping exitCodeRangeMapping = new ExitCodeRangeMapping(e.Start, e.End, e.omObject.ExitOptions);
             return(exitCodeRangeMapping);
         });
         exitConditions.omObject.ExitCodes = CreateSyncedList(exitConditions.ExitCodes,
                                                              (e) =>
         {
             ExitCodeMapping exitCodeMapping = new ExitCodeMapping(e.Code, e.omObject.ExitOptions);
             return(exitCodeMapping);
         });
     }
 }