public void ManagementUpgradeCheckAvailableUpgradeTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
     };
     Func<StandardUpgradeRunner.ExecuteCoreOutputs> executeAndAssertNoUpgrade = () =>
     {
         var response = runner.UpgradeController.IsUpdateAvailable().Result as OkNegotiatedContentResult<AvailableUpgrade>;
         Assert.IsNotNull(response);
         var availableUpgrade = response.Content;
         Assert.IsNotNull(availableUpgrade);
         Assert.IsFalse(availableUpgrade.AvailableUpdate);
         return new StandardUpgradeRunner.ExecuteCoreOutputs();
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     // Increment the minor version beyond what's available
     var newTargetVersion = new Version(assertAvailableVersion.AvailableVersion.Major, assertAvailableVersion.AvailableVersion.Minor + 1);
     runner.CurrentVersion = newTargetVersion.ToString(2);
     runner.ExecuteCore(executeAndAssertNoUpgrade);
     // Increment the major version beyond what's available
     newTargetVersion = new Version(assertAvailableVersion.AvailableVersion.Major + 1, 0);
     runner.CurrentVersion = newTargetVersion.ToString(2);
     runner.ExecuteCore(executeAndAssertNoUpgrade);
 }
 public void ManagementUpgradeFailureAfterRetryWaitOperationTest()
 {
     int retryCount = 0;
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
         CustomizeMockAction = (mock) =>
         {
             mock.Setup(service => service.GetOperationStatus(It.IsAny<string>()))
                 .Returns((string opId) =>
                 {
                     return Task.FromResult(new OperationStatusResponse
                     {
                         Status = ++retryCount > 3 ? OperationStatus.Failed : OperationStatus.InProgress,
                         Error = new OperationStatusResponse.ErrorDetails
                         {
                             Code = "FailedOperation",
                             Message = "The operation failed",
                         },
                         HttpStatusCode = HttpStatusCode.Conflict,
                         StatusCode = HttpStatusCode.OK,
                     });
                 });
         },
         VerifyUpgradeAction = (response, upgradeParams) =>
         {
             Assert.IsNotNull(upgradeParams);
             var contentResponse = response as NegotiatedContentResult<OperationResult>;
             Assert.IsNotNull(contentResponse);
             Assert.AreEqual(HttpStatusCode.Accepted, contentResponse.StatusCode);
         },
         UpdateChecksBeforeSuccess = 15,
         ExpectedCompletionOperation = "Failed",
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     runner.UpgradeVersion = assertAvailableVersion.AvailableVersion.SemanticVersionFormat();
     runner.ExecuteSoftwareUpgradeWaitOperation();
 }
 public void ManagementUpgradeLatestVersionWaitOperationTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     runner.UpgradeVersion = assertAvailableVersion.AvailableVersion.SemanticVersionFormat();
     runner.ExecuteSoftwareUpgradeWaitOperation();
 }
 public void ManagementUpgradeFailureWaitOperationTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
         CustomizeMockAction = (mock) =>
         {
             mock.Setup(service => service.UpgradeDeployment(It.IsAny<DeploymentUpgradeParameters>(), DeploymentSlot.Production))
                 .ThrowsAsync(CloudException.Create(new HttpRequestMessage(), "", new HttpResponseMessage(HttpStatusCode.BadRequest), "{ 'code': 'MissingOrInvalidRequiredQueryParameter', 'message': 'A required query parameter was not specified for this request or was specified incorrectly.' }"));
         },
         VerifyUpgradeAction = (response, upgradeParams) =>
         {
             var contentResponse = response as NegotiatedContentResult<OperationResult>;
             Assert.IsNotNull(contentResponse);
             Assert.AreEqual(HttpStatusCode.BadRequest, contentResponse.StatusCode);
             Assert.AreEqual("MissingOrInvalidRequiredQueryParameter", contentResponse.Content.ErrorCode);
         },
         ExpectedAbnormalResponse = true,
         ExpectedCompletionOperation = "Failed",
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     runner.UpgradeVersion = assertAvailableVersion.AvailableVersion.SemanticVersionFormat();
     runner.ExecuteSoftwareUpgradeWaitOperation();
 }
 public void ManagementUpgradeLatestVersionWaitStatusTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
         VerifyUpgradeAction = (response, upgradeParams) =>
         {
             Assert.AreEqual(DeploymentUpgradeMode.Auto, upgradeParams.Mode);
             Assert.IsTrue(upgradeParams.PackageUri.Host.Contains("blob.core.windows.net"));
             var configDoc = XDocument.Parse(upgradeParams.Configuration);
             var settings = AzureServiceConfiguration.GetSettingsProjected(configDoc)
                 .ToDictionary(setting => setting.Item1, setting => setting.Item2);
             Assert.AreEqual("dashtest", settings["AccountName"]);
             Assert.AreEqual("0123456789", settings["AccountKey"]);
             Assert.IsNotNull(settings["ScaleoutStorage0"]);
             Assert.IsNotNull(settings["ScaleoutStorage2"]);
             Assert.AreEqual("", settings["ScaleoutStorage3"]);
         },
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     runner.UpgradeVersion = assertAvailableVersion.AvailableVersion.SemanticVersionFormat();
     runner.ExecuteSoftwareUpgradeWaitStatus();
 }