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(); }