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);
        }
Beispiel #2
0
        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;
        }