示例#1
0
        public void Test_BatchMLTotalLowPriorityCoresPutRequestFailedDueToQuotaReduction()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            var newQuotaLimit = new CurrentQuotaLimitBase()
            {
                Properties = new QuotaProperties()
                {
                    Limit = 2,
                    Name  = new ResourceName()
                    {
                        Value = "TotalLowPriorityCores"
                    },
                    ResourceType = "lowPriority"
                }
            };

            try
            {
                using (MockContext context = MockContext.Start(this.GetType()))
                {
                    var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                        context,
                        new RecordedDelegatingHandler {
                        StatusCodeToReturn = HttpStatusCode.OK
                    });
                    var quotaResponse = reservationsClient.Quota.CreateOrUpdate(QuotaSubscriptionId, BatchMLProviderId, LocationWUS, newQuotaLimit.Properties.Name.Value, newQuotaLimit);
                }
            }
            catch (CloudException ex)
            {
                Assert.Contains("Quota reduction is not supported", ex.ToString());
            }
        }
示例#2
0
        public void Test_ComputeQuotaRequestsHistoryWithFilter()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            int noOfItemsRequested = 3;

            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                    context,
                    new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var quotaRequests = reservationsClient.QuotaRequestStatus.List(QuotaSubscriptionId, ComputeProviderId, LocationEUS, top: noOfItemsRequested);

                Assert.True(quotaRequests.Count() == noOfItemsRequested);

                Assert.True(quotaRequests.All(x =>
                                              // x.ProvisioningState != null &&
                                              x.Name != null &&
                                              x.Id != null &&
                                              x.Type != null
                                              ));
            }
        }
示例#3
0
        public void Test_ComputeSkusPatchRequestFailedDueToQuotaReduction()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            var newQuotaLimit = new CurrentQuotaLimitBase()
            {
                Properties = new QuotaProperties()
                {
                    Limit = 2,
                    Name  = new ResourceName()
                    {
                        Value = SKUName
                    }
                }
            };

            try
            {
                using (MockContext context = MockContext.Start(this.GetType()))
                {
                    var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                        context,
                        new RecordedDelegatingHandler {
                        StatusCodeToReturn = HttpStatusCode.OK
                    });
                    var quotaResponse = reservationsClient.Quota.Update(QuotaSubscriptionId, ComputeProviderId, LocationWUS, newQuotaLimit.Properties.Name.Value, newQuotaLimit);
                    System.Diagnostics.Trace.TraceInformation($"Response: {quotaResponse}");
                }
            }
            catch (CloudException ex)
            {
                System.Diagnostics.Trace.TraceInformation($"Exception: {ex}");
                Assert.Contains("Request failed.", ex.ToString());
            }
        }
示例#4
0
        public void Test_AQMPutRequestDisabled()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            var newQAqi = new AutoQuotaIncreaseDetail()
            {
                Settings = new AqiSettings()
                {
                    AutoQuotaIncreaseState = "Disabled"
                }
            };

            try
            {
                using (MockContext context = MockContext.Start(this.GetType()))
                {
                    var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                        context,
                        new RecordedDelegatingHandler {
                        StatusCodeToReturn = HttpStatusCode.OK
                    });
                    var response = reservationsClient.AutoQuotaIncrease.Create(QuotaSubscriptionId, newQAqi);

                    Assert.True(response.Settings.AutoQuotaIncreaseState.ToString() == "Disabled");
                }
            }
            catch (CloudException ex)
            {
                Assert.False(false, $"Not excpected {ex.ToString()}");
            }
        }
        private void TestUpdateReservationToSingle(string reservationOrderId, string reservationId)
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var reservations = reservationsClient.Reservation.List(reservationOrderId);
                var enumerator1  = reservations.GetEnumerator();
                ReservationResponse validReservation = null;
                while (enumerator1.MoveNext())
                {
                    var currentReservation = enumerator1.Current;
                    if (String.Equals(currentReservation.Properties.ProvisioningState, "Succeeded"))
                    {
                        validReservation = currentReservation;
                        break;
                    }
                }
                Assert.NotNull(validReservation);

                reservationId = validReservation.Id.Split('/')[6];
                Patch Patch = new Patch(AppliedScopeType.Single, new List <string>()
                {
                    $"/subscriptions/{Common.SubscriptionId}"
                }, InstanceFlexibility.On);
                var reservation = reservationsClient.Reservation.Update(reservationOrderId, reservationId, Patch);
                ValidateReservation(reservation);
            }
        }
        private void TestUpdateRenewalProperties(string reservationOrderId, string reservationId)
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var reservations = reservationsClient.Reservation.List(reservationOrderId);
                var enumerator1  = reservations.GetEnumerator();
                ReservationResponse validReservation = null;
                while (enumerator1.MoveNext())
                {
                    var currentReservation = enumerator1.Current;
                    if (String.Equals(currentReservation.Properties.ProvisioningState, "Succeeded"))
                    {
                        validReservation = currentReservation;
                        break;
                    }
                }
                Assert.NotNull(validReservation);

                reservationId = validReservation.Id.Split('/')[6];
                var renewProperties = new PatchPropertiesRenewProperties()
                {
                    PurchaseProperties = CreatePurchaseRequestBody()
                };
                Patch Patch       = new Patch(renew: true, renewProperties: renewProperties);
                var   reservation = reservationsClient.Reservation.Update(reservationOrderId, reservationId, Patch);
                var   reservationWithRenewProperties = reservationsClient.Reservation.Get(reservationId, reservationOrderId, "renewProperties");
                ValidateReservation(reservationWithRenewProperties);
                Assert.True(reservationWithRenewProperties.Properties.Renew);
                Assert.NotNull(reservationWithRenewProperties.Properties.RenewProperties);
            }
        }
示例#7
0
        public void TestListOperations()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var operations = reservationsClient.Operation.List();
                Assert.NotNull(operations);
                Assert.True(operations.Any());
                bool serviceLimitsOperationFound = false;

                var enumerator = operations.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    var operation = enumerator.Current;
                    Assert.NotNull(operation.Name);
                    Assert.NotNull(operation.Display.Provider);
                    Assert.NotNull(operation.Display.Resource);
                    Assert.NotNull(operation.Display.Operation);
                    Assert.NotNull(operation.Display.Description);

                    if (operation.Name.Contains("serviceLimits"))
                    {
                        serviceLimitsOperationFound = true;
                    }
                }

                Assert.True(serviceLimitsOperationFound, "ServiceLimits Operations should be listed");
            }
        }
 private void TestGetReservation(string reservationOrderId, string reservationId)
 {
     HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
     using (MockContext context = MockContext.Start(this.GetType().FullName))
     {
         var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
             StatusCodeToReturn = HttpStatusCode.OK
         });
         var reservation = reservationsClient.Reservation.Get(reservationId, reservationOrderId);
         ValidateReservation(reservation);
     }
 }
        private void TestGetAvailableScopes(string reservationOrderId, string reservationId)
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var scope = new ScopeProperties($"/subscriptions/{Common.SubscriptionId}");
                var body  = new SubscriptionScopeProperties(scope);
                var res   = reservationsClient.Reservation.AvailableScopes(reservationOrderId, reservationId, body);
            }
        }
 public void TestListReservationOrders()
 {
     HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
     using (MockContext context = MockContext.Start(this.GetType().FullName))
     {
         var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
             StatusCodeToReturn = HttpStatusCode.OK
         });
         var reservationOrderList = reservationsClient.ReservationOrder.List();
         var enumerator           = reservationOrderList.GetEnumerator();
         if (enumerator.MoveNext())
         {
             ValidateReservationOrder(enumerator.Current);
         }
     }
 }
 private void TestListReservationRevisions(string reservationOrderId, string reservationId)
 {
     HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
     using (MockContext context = MockContext.Start(this.GetType().FullName))
     {
         var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
             StatusCodeToReturn = HttpStatusCode.OK
         });
         var revisions = reservationsClient.Reservation.ListRevisions(reservationId, reservationOrderId);
         Assert.NotNull(revisions);
         Assert.True(revisions.Any());
         var enumerator = revisions.GetEnumerator();
         if (enumerator.MoveNext())
         {
             ValidateReservation(enumerator.Current);
         }
     }
 }
示例#12
0
 public void TestGetAppliedReservations()
 {
     HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
     using (MockContext context = MockContext.Start(this.GetType().FullName))
     {
         var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
             StatusCodeToReturn = HttpStatusCode.OK
         });
         var appliedReservations = reservationsClient.GetAppliedReservationList(SubscriptionId);
         Assert.NotNull(appliedReservations.Id);
         Assert.NotNull(appliedReservations.Name);
         Assert.NotNull(appliedReservations.Type);
         string reservationOrderIdPattern = @"^\/providers\/Microsoft\.Capacity\/reservationorders\/[\w-]+$";
         Assert.True(appliedReservations.ReservationOrderIds.Value.All(x =>
                                                                       x is string &&
                                                                       Regex.Match(x, reservationOrderIdPattern).Success
                                                                       ));
     }
 }
示例#13
0
        public void Test_GetAQMProperties()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                    context,
                    new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var aqiProperties = reservationsClient.AutoQuotaIncrease.GetProperties(QuotaSubscriptionId);

                Assert.True(aqiProperties.Id != null &&
                            aqiProperties.Name != null &&
                            aqiProperties.Settings.AutoQuotaIncreaseState != null
                            );
            }
        }
示例#14
0
        public void Test_ComputeOneSkusGetRequest()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                    context,
                    new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var quota = reservationsClient.Quota.Get(QuotaSubscriptionId, ComputeProviderId, LocationWUS, SKUName);

                Assert.True(quota.Properties.Limit != null &&
                            quota.Properties.Name != null &&
                            quota.Properties.CurrentValue != null
                            );
            }
        }
示例#15
0
        public void Test_ComputeQuotaRequestsById()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                    context,
                    new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var quotaRequest = reservationsClient.QuotaRequestStatus.Get(QuotaSubscriptionId, ComputeProviderId, LocationWUS, QuotaRequestId);

                Assert.True(quotaRequest.ProvisioningState != null &&
                            quotaRequest.Name != null &&
                            quotaRequest.Id != null &&
                            quotaRequest.RequestSubmitTime != null
                            );
            }
        }
示例#16
0
        protected ReservationOrderResponse PurchaseReservationOrder()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                var calculateRequest  = CreatePurchaseRequestBody();
                var calculateResponse = reservationsClient.ReservationOrder.Calculate(calculateRequest);

                var reservationOrderId = calculateResponse?.Properties?.ReservationOrderId;
                Assert.NotNull(reservationOrderId);

                var purchaseResponse = reservationsClient.ReservationOrder.Purchase(reservationOrderId, calculateRequest);
                ValidateReservationOrder(purchaseResponse);

                return(purchaseResponse);
            }
        }
示例#17
0
        public void Test_BatchMLBadResourceIdPutRequestFailed()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            var badResourceId = "badResId";
            var newQuotaLimit = new CurrentQuotaLimitBase()
            {
                Properties = new QuotaProperties()
                {
                    Limit = 2000,
                    Name  = new ResourceName()
                    {
                        Value = badResourceId
                    },
                    ResourceType = "lowPriority"
                }
            };

            try
            {
                using (MockContext context = MockContext.Start(this.GetType()))
                {
                    var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(
                        context,
                        new RecordedDelegatingHandler {
                        StatusCodeToReturn = HttpStatusCode.BadRequest
                    });
                    var quotaResponse = reservationsClient.Quota.CreateOrUpdate(QuotaSubscriptionId, BatchMLProviderId, LocationWUS, newQuotaLimit.Properties.Name.Value, newQuotaLimit);
                }
            }
            catch (CloudException ex)
            {
                Assert.True(ex.Response.StatusCode == HttpStatusCode.BadRequest);
                Assert.Contains("BadRequest", ex.ToString());
            }
            catch (ExceptionResponseException ex)
            {
                Assert.True(ex.Response.StatusCode == HttpStatusCode.BadRequest);
            }
        }
示例#18
0
        public void TestGetCatalog()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.VirtualMachines, "westus");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.SqlDatabases, "southeastasia");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.SuseLinux);
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));
            }
        }
        private void TestSplitAndMerge(string reservationOrderId)
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var reservations = reservationsClient.Reservation.List(reservationOrderId);
                var enumerator1  = reservations.GetEnumerator();
                ReservationResponse validReservation = null;
                while (enumerator1.MoveNext())
                {
                    var currentReservation = enumerator1.Current;
                    if (String.Equals(currentReservation.Properties.ProvisioningState, "Succeeded"))
                    {
                        validReservation = currentReservation;
                        break;
                    }
                }
                Assert.NotNull(validReservation);

                var reservationId = validReservation.Id.Split('/')[6];

                // Begin split test
                SplitRequest Split = new SplitRequest(
                    new List <int?>()
                {
                    1, 2
                },
                    CreateResourceId(reservationOrderId, reservationId)
                    );
                var splitResponse = reservationsClient.Reservation.Split(reservationOrderId, Split);
                Assert.NotNull(splitResponse);
                Assert.True(splitResponse.Any());

                var enumerator2 = splitResponse.GetEnumerator();
                ReservationResponse splitReservation1 = null;
                ReservationResponse splitReservation2 = null;
                while (enumerator2.MoveNext())
                {
                    var currentReservation = enumerator2.Current;
                    if (String.Equals(currentReservation.Properties.ProvisioningState, "Succeeded"))
                    {
                        if (splitReservation1 == null)
                        {
                            splitReservation1 = currentReservation;
                        }

                        else
                        {
                            splitReservation2 = currentReservation;
                        }
                    }
                }

                var splitReservationId1 = splitReservation1.Id.Split('/')[6];
                var splitReservationId2 = splitReservation2.Id.Split('/')[6];

                // Begin merge test
                MergeRequest Merge = new MergeRequest(
                    new List <string>()
                {
                    CreateResourceId(reservationOrderId, splitReservationId1),
                    CreateResourceId(reservationOrderId, splitReservationId2)
                }
                    );
                var mergeResponse = reservationsClient.Reservation.Merge(reservationOrderId, Merge);
                var enumerator3   = splitResponse.GetEnumerator();

                ReservationResponse mergedReservation = null;
                while (enumerator3.MoveNext())
                {
                    var currentReservation = enumerator3.Current;
                    if (String.Equals(currentReservation.Properties.ProvisioningState, "Succeeded"))
                    {
                        mergedReservation = currentReservation;
                    }
                }

                Assert.NotNull(mergedReservation);
                ValidateReservation(mergedReservation);
            }
        }
示例#20
0
        public void TestGetCatalog()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var reservationsClient = ReservationsTestUtilities.GetAzureReservationAPIClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });
                var catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.VirtualMachines, "westus");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.SqlDatabases, "southeastasia");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.SqlDataWarehouse, "eastus");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.VMwareCloudSimple, "eastus");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations != null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.SuseLinux);
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.CosmosDb);
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.RedHat);
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.RedHatOsa);
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));

                catalog = reservationsClient.GetCatalog(SubscriptionId, ReservedResourceType.VirtualMachineSoftware, publisherId: "test_test_pmc2pc1", offerId: "mnk_vmri_test_001", planId: "testplan001");
                Assert.True(catalog.All(x =>
                                        x.ResourceType != null &&
                                        x.Name != null &&
                                        x.SkuProperties != null &&
                                        x.Locations == null &&
                                        x.Terms != null
                                        ));
            }
        }