public void ListVMFilesMaxCountTest() { // Verify default max count Assert.Equal(Microsoft.Azure.Commands.Batch.Utils.Constants.DefaultMaxCount, cmdlet.MaxCount); // Setup cmdlet to list vm files and a max count. BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys(); cmdlet.BatchContext = context; cmdlet.PoolName = "pool"; cmdlet.VMName = "vm1"; cmdlet.Name = null; cmdlet.Filter = null; int maxCount = 2; cmdlet.MaxCount = maxCount; string[] namesOfConstructedVMFiles = new[] { "startup", "workitems", "shared" }; // Build some vm files instead of querying the service on a ListTVMFiles call YieldInjectionInterceptor interceptor = new YieldInjectionInterceptor((opContext, request) => { if (request is ListTVMFilesRequest) { ListTVMFilesResponse response = BatchTestHelpers.CreateListTVMFilesResponse(namesOfConstructedVMFiles); Task <object> task = Task <object> .Factory.StartNew(() => { return(response); }); return(task); } return(null); }); cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>() { interceptor }; // Setup the cmdlet to write pipeline output to a list that can be examined later List <PSVMFile> pipeline = new List <PSVMFile>(); commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSVMFile>())) .Callback <object>(f => pipeline.Add((PSVMFile)f)); cmdlet.ExecuteCmdlet(); // Verify that the max count was respected Assert.Equal(maxCount, pipeline.Count); // Verify setting max count <= 0 doesn't return nothing cmdlet.MaxCount = -5; pipeline.Clear(); cmdlet.ExecuteCmdlet(); Assert.Equal(namesOfConstructedVMFiles.Length, pipeline.Count); }
public void ListBatchVMFilesWithoutFiltersTest() { // Setup cmdlet to list vm files without filters. BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys(); cmdlet.BatchContext = context; cmdlet.PoolName = "pool"; cmdlet.VMName = "vm1"; cmdlet.Name = null; cmdlet.Filter = null; string[] namesOfConstructedVMFiles = new[] { "startup", "workitems", "shared" }; // Build some vm files instead of querying the service on a ListTVMFiles call YieldInjectionInterceptor interceptor = new YieldInjectionInterceptor((opContext, request) => { if (request is ListTVMFilesRequest) { ListTVMFilesResponse response = BatchTestHelpers.CreateListTVMFilesResponse(namesOfConstructedVMFiles); Task <object> task = Task <object> .Factory.StartNew(() => { return(response); }); return(task); } return(null); }); cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>() { interceptor }; // Setup the cmdlet to write pipeline output to a list that can be examined later List <PSVMFile> pipeline = new List <PSVMFile>(); commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSVMFile>())) .Callback <object>(f => pipeline.Add((PSVMFile)f)); cmdlet.ExecuteCmdlet(); // Verify that the cmdlet wrote the constructed vm files to the pipeline Assert.Equal(3, pipeline.Count); int taskCount = 0; foreach (PSVMFile f in pipeline) { Assert.True(namesOfConstructedVMFiles.Contains(f.Name)); taskCount++; } Assert.Equal(namesOfConstructedVMFiles.Length, taskCount); }
/// <summary> /// Builds a ListTVMFilesResponse object /// </summary> public static ListTVMFilesResponse CreateListTVMFilesResponse(IEnumerable <string> fileNames) { ListTVMFilesResponse response = new ListTVMFilesResponse(); SetProperty(response, "StatusCode", HttpStatusCode.OK); List <Azure.Batch.Protocol.Entities.File> files = new List <Azure.Batch.Protocol.Entities.File>(); foreach (string name in fileNames) { Azure.Batch.Protocol.Entities.File file = new Azure.Batch.Protocol.Entities.File(); SetProperty(file, "Name", name); files.Add(file); } SetProperty(response, "Files", files); return(response); }
public void GetBatchVMFileParametersTest() { // Setup cmdlet without required parameters BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys(); cmdlet.BatchContext = context; cmdlet.PoolName = null; cmdlet.VMName = null; cmdlet.Name = null; cmdlet.VM = null; cmdlet.Filter = null; // Build some vm files instead of querying the service on a ListTVMFiles call YieldInjectionInterceptor interceptor = new YieldInjectionInterceptor((opContext, request) => { if (request is ListTVMFilesRequest) { ListTVMFilesResponse response = BatchTestHelpers.CreateListTVMFilesResponse(new string[] { "startup\\stdout.txt" }); Task <object> task = Task <object> .Factory.StartNew(() => { return(response); }); return(task); } return(null); }); cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>() { interceptor }; Assert.Throws <ArgumentNullException>(() => cmdlet.ExecuteCmdlet()); cmdlet.PoolName = "pool"; cmdlet.VMName = "vm1"; // Verify no exceptions occur cmdlet.ExecuteCmdlet(); }
/// <summary> /// Builds a ListTVMFilesResponse object /// </summary> public static ListTVMFilesResponse CreateListTVMFilesResponse(IEnumerable<string> fileNames) { ListTVMFilesResponse response = new ListTVMFilesResponse(); SetProperty(response, "StatusCode", HttpStatusCode.OK); List<Azure.Batch.Protocol.Entities.File> files = new List<Azure.Batch.Protocol.Entities.File>(); foreach (string name in fileNames) { Azure.Batch.Protocol.Entities.File file = new Azure.Batch.Protocol.Entities.File(); SetProperty(file, "Name", name); files.Add(file); } SetProperty(response, "Files", files); return response; }