Esempio n. 1
0
        internal void InternalRemoveCertTest(string baselineJsonFile, string targetJsonFile)
        {
            MockupCluster cluster = Utility.DoBaselineUpgrade(baselineJsonFile);

            Assert.AreEqual(ClusterCertificateUpgradeTest.BaselineConfigVersion, cluster.Current.CSMConfig.Version.Version);

            Utility.UpdateCluster(targetJsonFile, cluster);

            string originalPrimaryThumbprint   = cluster.Current.CSMConfig.Security.CertificateInformation.ClusterCertificate.Thumbprint;
            string originalSecondaryThumbprint = cluster.Current.CSMConfig.Security.CertificateInformation.ClusterCertificate.ThumbprintSecondary;
            string newPrimaryThumbprint        = cluster.TargetCsmConfig.Security.CertificateInformation.ClusterCertificate.Thumbprint;
            bool   removePrimarythumbprint     = originalPrimaryThumbprint != newPrimaryThumbprint;

            // 1st iteration
            Assert.IsTrue(cluster.RunStateMachine());

            MockupCertificateClusterUpgradeState upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;

            this.VerifyManifestRemoveCertLists(
                cluster.Pending.ExternalState.ClusterManifest,
                originalPrimaryThumbprint,
                originalSecondaryThumbprint,
                removePrimarythumbprint,
                upgradeState.CurrentListIndex);

            Assert.AreEqual(ClusterCertificateUpgradeTest.BaselineDataDeletionAgeInDays, cluster.Current.CSMConfig.DiagnosticsStoreInformation.DataDeletionAgeInDays);
            Assert.AreNotEqual(upgradeState.TargetCsmConfig, cluster.Current.CSMConfig);
            Assert.IsNotNull(cluster.Current);

            Utility.RollForwardOneIteration(cluster);

            // 2nd iteration
            Assert.IsFalse(cluster.RunStateMachine());
            upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;
            this.VerifyManifestRemoveCertLists(
                cluster.Pending.ExternalState.ClusterManifest,
                originalPrimaryThumbprint,
                originalSecondaryThumbprint,
                removePrimarythumbprint,
                upgradeState.CurrentListIndex);

            Assert.AreNotEqual(upgradeState.TargetCsmConfig, cluster.Current.CSMConfig);
            Assert.IsNotNull(cluster.Current);

            Utility.RollForwardOneIteration(cluster);

            // final check
            Assert.IsFalse(cluster.RunStateMachine());

            this.VerifyJsonRemoveCertLists(
                cluster.Current.CSMConfig,
                originalPrimaryThumbprint,
                originalSecondaryThumbprint,
                removePrimarythumbprint);

            Assert.AreEqual(ClusterCertificateUpgradeTest.TargetDataDeletionAgeInDays, cluster.Current.CSMConfig.DiagnosticsStoreInformation.DataDeletionAgeInDays);
            Assert.AreEqual(ClusterCertificateUpgradeTest.TargetConfigVersion, cluster.Current.CSMConfig.Version.Version);
        }
Esempio n. 2
0
        public void InterruptWithSimpleClusterUpgradeAtSecondIteration()
        {
            MockupCluster cluster = Utility.DoBaselineUpgrade("ClusterConfig.X509.DevCluster.Replace.V1.json");

            Assert.AreEqual(ClusterCertificateUpgradeTest.BaselineConfigVersion, cluster.Current.CSMConfig.Version.Version);

            Utility.UpdateCluster("ClusterConfig.X509.DevCluster.Replace.V2.json", cluster);

            string originalThumbprint = cluster.Current.CSMConfig.Security.CertificateInformation.ClusterCertificate.Thumbprint;
            string newThumbprint      = cluster.TargetCsmConfig.Security.CertificateInformation.ClusterCertificate.Thumbprint;

            // 1st iteration
            Assert.IsTrue(cluster.RunStateMachine());

            MockupCertificateClusterUpgradeState upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;

            this.VerifyManifestReplaceCertLists(
                cluster.Pending.ExternalState.ClusterManifest,
                originalThumbprint,
                newThumbprint,
                upgradeState.CurrentListIndex);

            Utility.RollForwardOneIteration(cluster);

            // 2nd iteration
            Assert.IsFalse(cluster.RunStateMachine());
            upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;
            this.VerifyManifestReplaceCertLists(
                cluster.Pending.ExternalState.ClusterManifest,
                originalThumbprint,
                newThumbprint,
                upgradeState.CurrentListIndex);

            Utility.UpdateCluster("ClusterConfig.X509.DevCluster.Replace.V2.Interrupt.json", cluster);
            Assert.IsFalse(cluster.RunStateMachine());

            Utility.RollForwardOneIteration(cluster);

            //3rd iteration
            Assert.IsFalse(cluster.RunStateMachine());
            upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;
            this.VerifyManifestReplaceCertLists(
                cluster.Pending.ExternalState.ClusterManifest,
                originalThumbprint,
                newThumbprint,
                upgradeState.CurrentListIndex);

            Utility.RollForwardOneIteration(cluster);

            // final check
            Assert.IsFalse(cluster.RunStateMachine());

            this.VerifyJsonReplaceCertLists(cluster.Current.CSMConfig, originalThumbprint, newThumbprint);

            Assert.AreEqual(ClusterCertificateUpgradeTest.TargetDataDeletionAgeInDays, cluster.Current.CSMConfig.DiagnosticsStoreInformation.DataDeletionAgeInDays);
            Assert.AreEqual(ClusterCertificateUpgradeTest.TargetConfigVersion, cluster.Current.CSMConfig.Version.Version);
        }
Esempio n. 3
0
        public void InterruptWithSimpleClusterUpgradeAtFirstIteration()
        {
            MockupCluster cluster = Utility.DoBaselineUpgrade("ClusterConfig.X509.DevCluster.Replace.V1.json");

            Utility.UpdateCluster("ClusterConfig.X509.DevCluster.Replace.V2.json", cluster);

            // 1st iteration
            Assert.IsTrue(cluster.RunStateMachine());
            MockupCertificateClusterUpgradeState upgradeState = (MockupCertificateClusterUpgradeState)cluster.Pending;

            //Interrupt with a simple cluster upgrade
            Utility.UpdateCluster("ClusterConfig.X509.DevCluster.Replace.V2.Interrupt.json", cluster);
            Assert.IsTrue(cluster.RunStateMachine());

            Utility.RollForwardOneIteration(cluster);

            Assert.IsFalse(cluster.RunStateMachine());
            Assert.AreEqual(ClusterCertificateUpgradeTest.InterruptedTargetConfigVersion, cluster.Current.CSMConfig.Version.Version);
        }