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 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(); }); }
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 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 ManagementUpgradeLatestVersionWaitOperationTest() { var runner = new StandardUpgradeRunner { CurrentVersion = "0.1", }; 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(); }
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)); }