Пример #1
0
        internal static MockupJsonModel CreateMockupJsonModel(
            int nodeTypeCount,
            int vmInstancePerNodeType,
            List <SettingsSectionDescription> fabricSettings,
            Security security = null,
            EncryptableDiagnosticStoreInformation diagnosticsStore = null,
            CertificateDescription certificate = null,
            DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig = null)
        {
            MockupJsonModel jsonModel = new MockupJsonModel();

            jsonModel.Name = "TestJsonConfig";
            jsonModel.ClusterConfigurationVersion = "1.0.0";
            jsonModel.ApiVersion = "2016-09-26";
            jsonModel.Nodes      = new List <NodeDescription>();

            jsonModel.Properties = new MockupProperty();
            jsonModel.Properties.DiagnosticsStore = diagnosticsStore;
            jsonModel.Properties.FabricSettings   = fabricSettings;
            jsonModel.Properties.Security         = security;
            jsonModel.Properties.NodeTypes        = new List <NodeTypeDescription>();
            jsonModel.Properties.DiagnosticsStorageAccountConfig = diagnosticsStorageAccountConfig;

            for (int i = 0; i < nodeTypeCount; i++)
            {
                jsonModel.Properties.NodeTypes.Add(CreateNodeType("NodeType" + i, vmInstancePerNodeType, i == 0));
            }

            for (int j = 0; j < vmInstancePerNodeType * nodeTypeCount; j++)
            {
                jsonModel.Nodes.Add(CreateNodeDescription("Node" + j, "NodeType0", "localhost", "fd:/dc1/r0", "UD0"));
            }

            return(jsonModel);
        }
Пример #2
0
        /** Update the CSM config of a cluster */
        internal static void UpdateCluster(string targetJsonFilePath, MockupCluster existingCluster)
        {
            MockupJsonModel targetJsonConfig = Utility.GetJsonConfigFromFile(Path.Combine(Constant.TestDirectory, targetJsonFilePath));

            existingCluster.TargetCsmConfig = targetJsonConfig.GetUserConfig();
            existingCluster.Topology        = targetJsonConfig.GetClusterTopology();
        }
Пример #3
0
        internal void InternalUpdateCertificateTest(string v1clusterConfigPath, string v2clusterConfigPath, string[] targetClusterManifests)
        {
            MockupJsonModel jsonConfig = Utility.GetJsonConfigFromFile(Path.Combine(Constant.TestDirectory, v1clusterConfigPath));

            var userConfig      = jsonConfig.GetUserConfig();
            var clusterTopology = jsonConfig.GetClusterTopology();
            var adminConfig     = new MockupAdminConfig();
            var logger          = new MockupTraceLogger();

            List <NodeStatus> nodesStatus = new List <NodeStatus>();

            foreach (NodeDescription node in clusterTopology.Nodes.Values)
            {
                NodeStatus nodeStatus = new NodeStatus()
                {
                    NodeName               = node.NodeName,
                    InstanceId             = 0,
                    NodeDeactivationIntent = WrpNodeDeactivationIntent.Invalid,
                    NodeState              = NodeState.Enabled,
                    NodeType               = node.NodeTypeRef
                };

                nodesStatus.Add(nodeStatus);
            }

            MockupCluster clusterResource = new MockupCluster(adminConfig, userConfig, clusterTopology, logger);
            MockupClusterManifestBuilder v1mockupClusterManifestBuilder = new MockupClusterManifestBuilder(
                clusterTopology,
                clusterResource.SeedNodeSelector,
                userConfig,
                adminConfig,
                new ClusterNodeConfig(nodesStatus, 2),
                new MockupManifestVersionGenerator(),
                clusterResource.FabricSettingsActivator,
                clusterResource.ClusterManifestGeneratorSettings,
                new MockupTraceLogger());

            MockupJsonModel v2JsonConfig = Utility.GetJsonConfigFromFile(Path.Combine(Constant.TestDirectory, v2clusterConfigPath));
            var             v2generatedClusterManifests = v1mockupClusterManifestBuilder.UpdateCertificateInClusterManifest(v1mockupClusterManifestBuilder.GenerateClusterManifest(), v2JsonConfig.Properties.Security, new MockupAdminConfig().GetFabricSettingsMetadata());

            XmlSerializer xmlSerializer = new XmlSerializer(typeof(ClusterManifestType));

            int i = 0;

            foreach (string path in targetClusterManifests)
            {
                StringWriter generatedClusterManifestWriter = new StringWriter();
                xmlSerializer.Serialize(generatedClusterManifestWriter, v2generatedClusterManifests[i++]);
                string generatedClusterManifestString = generatedClusterManifestWriter.ToString();

                var          targetClusterManifest       = System.Fabric.Interop.Utility.ReadXml <ClusterManifestType>(Path.Combine(Constant.TestDirectory, path), SchemaLocation.GetWindowsFabricSchemaLocation());
                StringWriter targetClusterManifestWriter = new StringWriter();
                xmlSerializer.Serialize(targetClusterManifestWriter, targetClusterManifest);
                string targetClusterManifestString = targetClusterManifestWriter.ToString();

                Assert.AreEqual(Utility.RemoveRandomGuid(generatedClusterManifestString), Utility.RemoveRandomGuid(targetClusterManifestString));
            }
        }
Пример #4
0
        internal static MockupCluster PopulateClusterWithBaselineJson(string jsonFilePath)
        {
            MockupJsonModel jsonConfig = Utility.GetJsonConfigFromFile(Path.Combine(Constant.TestDirectory, jsonFilePath));

            var userConfig      = jsonConfig.GetUserConfig();
            var clusterTopology = jsonConfig.GetClusterTopology();
            var adminConfig     = new MockupAdminConfig();
            var logger          = new MockupTraceLogger();

            return(new MockupCluster(
                       adminConfig,
                       userConfig,
                       clusterTopology,
                       logger));
        }
        private static void RunValidation(MockupJsonModel jsonConfig, Dictionary <string, HashSet <string> > requiredParameters = null, bool failureExpected = true)
        {
            IUserConfig userConfig = jsonConfig.GetUserConfig();

            var settingsValidator = new SettingsValidator(
                userConfig,
                new MockupAdminConfig().GetFabricSettingsMetadata(),
                requiredParameters == null ? new Dictionary <string, HashSet <string> >() : requiredParameters,
                clusterManifestGeneratorSettings);

            if (failureExpected)
            {
                Verify.Throws <ValidationException>(() => settingsValidator.Validate(true));
            }
            else
            {
                Verify.NoThrow(() => settingsValidator.Validate(true));
            }
        }
Пример #6
0
        internal void InternalGenerateClusterManifestTest(string clusterConfigPath, string clusterManifestPath)
        {
            MockupJsonModel jsonConfig = Utility.GetJsonConfigFromFile(Path.Combine(Constant.TestDirectory, clusterConfigPath));

            var userConfig      = jsonConfig.GetUserConfig();
            var clusterTopology = jsonConfig.GetClusterTopology();
            var adminConfig     = new MockupAdminConfig();
            var logger          = new MockupTraceLogger();

            List <NodeStatus> nodesStatus = new List <NodeStatus>();

            foreach (NodeDescription node in clusterTopology.Nodes.Values)
            {
                NodeStatus nodeStatus = new NodeStatus()
                {
                    NodeName               = node.NodeName,
                    InstanceId             = 0,
                    NodeDeactivationIntent = WrpNodeDeactivationIntent.Invalid,
                    NodeState              = NodeState.Enabled,
                    NodeType               = node.NodeTypeRef
                };

                nodesStatus.Add(nodeStatus);
            }

            MockupCluster clusterResource = new MockupCluster(adminConfig, userConfig, clusterTopology, logger);
            MockupClusterManifestBuilder mockupClusterManifestBuilder = new MockupClusterManifestBuilder(
                clusterTopology,
                clusterResource.SeedNodeSelector,
                userConfig,
                adminConfig,
                new ClusterNodeConfig(nodesStatus, 2),
                new MockupManifestVersionGenerator(),
                clusterResource.FabricSettingsActivator,
                clusterResource.ClusterManifestGeneratorSettings,
                new MockupTraceLogger());

            var generatedClusterManifest = mockupClusterManifestBuilder.GenerateClusterManifest();
            var expectedClusterManifest  = System.Fabric.Interop.Utility.ReadXml <ClusterManifestType>(Path.Combine(Constant.TestDirectory, clusterManifestPath), SchemaLocation.GetWindowsFabricSchemaLocation());

            Assert.AreEqual(Utility.RemoveRandomGuid(Utility.GetClusterManifestXMLString(generatedClusterManifest)), Utility.RemoveRandomGuid(Utility.GetClusterManifestXMLString(expectedClusterManifest)));
        }