コード例 #1
0
 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);
 }
コード例 #2
0
 public void Execute(StandardUpgradeRunner runner)
 {
     runner.ExecuteCore(() =>
     {
         var response = runner.UpgradeController.IsUpdateAvailable().Result as OkNegotiatedContentResult<AvailableUpgrade>;
         Assert.IsNotNull(response);
         var availableUpgrade = response.Content;
         Assert.IsNotNull(availableUpgrade);
         Assert.IsTrue(availableUpgrade.AvailableUpdate);
         Assert.IsNotNull(availableUpgrade.HighestSeverity);
         Assert.IsNotNull(availableUpgrade.UpdateVersion);
         this.AvailableVersion = VersionUtils.ParseVersion(availableUpgrade.UpdateVersion);
         return new StandardUpgradeRunner.ExecuteCoreOutputs();
     });
 }
コード例 #3
0
 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();
 }
コード例 #4
0
 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();
 }
コード例 #5
0
 public void ManagementUpgradeLatestVersionWaitOperationTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
     };
     var assertAvailableVersion = new GetAndAssertAvailableVersion();
     assertAvailableVersion.Execute(runner);
     runner.UpgradeVersion = assertAvailableVersion.AvailableVersion.SemanticVersionFormat();
     runner.ExecuteSoftwareUpgradeWaitOperation();
 }
コード例 #6
0
 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();
 }
コード例 #7
0
 public void ManagementUpgradeGetAvailableUpgradesTest()
 {
     var runner = new StandardUpgradeRunner
     {
         CurrentVersion = "0.1",
     };
     Func<bool, StandardUpgradeRunner.ExecuteCoreOutputs> executeAndAssertAvailableUpgrades = (expectAvailableUpdates) =>
     {
         var response = runner.UpgradeController.Updates().Result as OkNegotiatedContentResult<UpgradePackages>;
         Assert.IsNotNull(response);
         var packages = response.Content;
         Assert.IsNotNull(packages);
         Assert.AreEqual(Version.Parse(runner.CurrentVersion), VersionUtils.ParseVersion(packages.CurrentVersion));
         Assert.IsNotNull(packages.AvailableUpdates);
         if (expectAvailableUpdates)
         {
             Assert.IsTrue(packages.AvailableUpdates.Any());
             var update = packages.AvailableUpdates.Last();
             Assert.IsNotNull(update.Description);
             Assert.IsNotNull(update.Severity);
             Assert.IsTrue(Version.Parse(runner.CurrentVersion) < update.Version);
             Assert.IsNotNull(update.AvailablePackages);
             Assert.IsTrue(update.AvailablePackages.Any());
             var package = update.AvailablePackages.First();
             Assert.IsNotNull(package.PackageName);
             Assert.IsTrue(package.FileInformations.Any());
             Assert.AreEqual(package.Files.Count(), package.FileInformations.Count());
             var fileInfo = package.FileInformations.First();
             Assert.IsNotNull(fileInfo.Name);
             Assert.IsNotNull(fileInfo.SasUri);
         }
         else
         {
             Assert.IsFalse(packages.AvailableUpdates.Any());
         }
         return new StandardUpgradeRunner.ExecuteCoreOutputs();
     };
     runner.ExecuteCore(() => executeAndAssertAvailableUpgrades(true));
     runner.CurrentVersion = "50.0";
     runner.ExecuteCore(() => executeAndAssertAvailableUpgrades(false));
 }