public void RollForwardTest() { MockupCluster cluster = Utility.DoBaselineUpgrade("ClusterConfig.Unsecured.DevCluster.json"); //Start a simple cluster upgrade to update the MSI version to the ExpectedMsiVersion. Utility.UpdateCluster(cluster, GatekeepingClusterUpgradeTest.ExpectedMsiVersion, GatekeepingClusterUpgradeTest.ExpectedClusterSettingsVersion); Assert.IsTrue(cluster.RunStateMachine()); ClusterUpgradeStateBase upgradeState = cluster.Pending; Utility.RollForwardOneIteration(cluster); Assert.IsFalse(cluster.RunStateMachine()); //Set the MSI version in current to the wrong MSI verion. cluster.Current.WRPConfig.Version.MsiVersion = GatekeepingClusterUpgradeTest.WrongMsiVersion; Assert.AreNotEqual(cluster.Current.WRPConfig.Version.MsiVersion, cluster.Current.ExternalState.MsiVersion); //Sice the MSI version number is not expected. Trigger a GatekeepingClusterUpgrade to rollback the version number to the ExpectedMsiVersion. MockupUpgradeStateActivator mockupUpgradeStateActivator = new MockupUpgradeStateActivator(); cluster.Pending = mockupUpgradeStateActivator.CreateGatekeepingClusterUpgradeState(cluster.Current.CSMConfig, cluster.Current.WRPConfig, cluster.Current.NodeConfig, cluster, new MockupTraceLogger()); bool processingSuccess = cluster.Pending.StartProcessing(); Utility.RollForwardOneIteration(cluster); Assert.IsNull(cluster.Pending); Assert.IsNotNull(cluster.Current); Assert.AreEqual(GatekeepingClusterUpgradeTest.ExpectedMsiVersion, cluster.Current.ExternalState.MsiVersion); }
private void SetStateMachine(ITraceLogger traceLogger) { var stateActivator = new MockupUpgradeStateActivator(); var factory = new ClusterUpgradeStateFactory(this, stateActivator, traceLogger); this.stateMachine = new ClusterResourceStateMachine(this, factory, traceLogger); this.UpgradeFactory = factory; }