Пример #1
0
        private static Mock <IAzureProxy> GetMockAzureProxy()
        {
            var vmInfos = new List <VirtualMachineInformation> {
                new VirtualMachineInformation {
                    VmSize = "VmSize1", VmFamily = "VmFamily1", LowPriority = false, NumberOfCores = 2, MemoryInGB = 3, ResourceDiskSizeInGB = 20, PricePerHour = 11
                },
                new VirtualMachineInformation {
                    VmSize = "VmSize1", VmFamily = "VmFamily1", LowPriority = true, NumberOfCores = 2, MemoryInGB = 3, ResourceDiskSizeInGB = 20, PricePerHour = 22
                },
                new VirtualMachineInformation {
                    VmSize = "VmSize2", VmFamily = "VmFamily2", LowPriority = false, NumberOfCores = 4, MemoryInGB = 6, ResourceDiskSizeInGB = 40, PricePerHour = 33
                },
                new VirtualMachineInformation {
                    VmSize = "VmSize2", VmFamily = "VmFamily2", LowPriority = true, NumberOfCores = 4, MemoryInGB = 6, ResourceDiskSizeInGB = 40, PricePerHour = 44
                },
                new VirtualMachineInformation {
                    VmSize = "VmSize3", VmFamily = "VmFamily3", LowPriority = false, NumberOfCores = 8, MemoryInGB = 12, ResourceDiskSizeInGB = 80, PricePerHour = 55
                }
            };

            var dedicatedCoreQuotaPerVMFamily = new[] { new VirtualMachineFamilyCoreQuota("VmFamily1", 100), new VirtualMachineFamilyCoreQuota("VmFamily2", 0), new VirtualMachineFamilyCoreQuota("VmFamily3", 300) };

            var batchQuotas = new AzureBatchAccountQuotas {
                ActiveJobAndJobScheduleQuota = 1,
                PoolQuota            = 1,
                DedicatedCoreQuota   = 5,
                LowPriorityCoreQuota = 10,
                DedicatedCoreQuotaPerVMFamilyEnforced = true,
                DedicatedCoreQuotaPerVMFamily         = dedicatedCoreQuotaPerVMFamily
            };

            var allowedVmSizesFileContent = "VmSize1\n#SomeComment\nVmSize2\nVmSizeNonExistent";

            var storageAccountInfos = new Dictionary <string, StorageAccountInfo> {
                {
                    "defaultstorageaccount",
                    new StorageAccountInfo {
                        Name = "defaultstorageaccount", Id = "Id", BlobEndpoint = "https://defaultstorageaccount.blob.core.windows.net/", SubscriptionId = "SubId"
                    }
                }
            };

            var azureProxy = new Mock <IAzureProxy>();

            azureProxy.Setup(a => a.GetVmSizesAndPricesAsync()).Returns(Task.FromResult(vmInfos));
            azureProxy.Setup(a => a.GetBatchAccountQuotasAsync()).Returns(Task.FromResult(batchQuotas));
            azureProxy.Setup(a => a.DownloadBlobAsync(It.IsAny <Uri>())).Returns(Task.FromResult(allowedVmSizesFileContent));
            azureProxy.Setup(a => a.GetStorageAccountInfoAsync("defaultstorageaccount")).Returns(Task.FromResult(storageAccountInfos["defaultstorageaccount"]));
            azureProxy.Setup(a => a.GetStorageAccountKeyAsync(It.IsAny <StorageAccountInfo>())).Returns(Task.FromResult("Key1"));

            return(azureProxy);
        }
Пример #2
0
        public async Task GetBatchAccountQuotasAsync_UsesCache()
        {
            var azureProxy  = GetMockAzureProxy();
            var batchQuotas = new AzureBatchAccountQuotas {
                ActiveJobAndJobScheduleQuota = 1, PoolQuota = 1, DedicatedCoreQuota = 5, LowPriorityCoreQuota = 10
            };

            azureProxy.Setup(a => a.GetBatchAccountQuotasAsync()).Returns(Task.FromResult(batchQuotas));
            var cachingAzureProxy = new CachingWithRetriesAzureProxy(azureProxy.Object, cache);

            var quotas1 = await cachingAzureProxy.GetBatchAccountQuotasAsync();

            var quotas2 = await cachingAzureProxy.GetBatchAccountQuotasAsync();

            azureProxy.Verify(mock => mock.GetBatchAccountQuotasAsync(), Times.Once());
            Assert.AreEqual(batchQuotas, quotas1);
            Assert.AreEqual(quotas1, quotas2);
        }