Example #1
0
        private void ProcessScriptLine(int lineNumber, string line)
        {
            // Comment/empty lines
            if (line.StartsWith("#") || string.IsNullOrWhiteSpace(line))
            {
                return;
            }

            // Clear configuration
            if (line.StartsWith("!clear"))
            {
                configStore.ClearKeys();
                Console.WriteLine("Config cleared");
                return;
            }

            // Set configuration
            var match = Regex.Match(line, @"^!set (?<key>[^=]+)=(?<value>.*)");

            if (match.Success)
            {
                string configKey   = match.Groups["key"].Value;
                string configValue = match.Groups["value"].Value;
                configStore.UpdateKey(ConfigSectionName, configKey, configValue);
                Console.WriteLine("Set config: {0}={1}", configKey, configValue);
                return;
            }

            // Run test case

            var fields = line.Split(',');

            var impact = new MockImpactDetail()
            {
                ComputeImpact = (ResourceImpactEnum)Enum.Parse(typeof(ResourceImpactEnum), fields[0]),
                DiskImpact    = (ResourceImpactEnum)Enum.Parse(typeof(ResourceImpactEnum), fields[1]),
                NetworkImpact = (ResourceImpactEnum)Enum.Parse(typeof(ResourceImpactEnum), fields[2]),
                OsImpact      = (ResourceImpactEnum)Enum.Parse(typeof(ResourceImpactEnum), fields[3]),
                EstimatedImpactDurationInSeconds = long.Parse(fields[4]),
            };

            string expectedResultString = fields[5];
            string message = string.Format("Line {0}: {1}", lineNumber, line);

            if (expectedResultString.StartsWith("!"))
            {
                Verify.Throws <Exception>(() => translator.TranslateImpactDetailToNodeTask(impact), message);
            }
            else
            {
                NodeTask actualResult   = translator.TranslateImpactDetailToNodeTask(impact);
                NodeTask expectedResult = (NodeTask)Enum.Parse(typeof(NodeTask), expectedResultString);

                Verify.AreEqual(expectedResult, actualResult, message);
            }
        }
Example #2
0
        public void Restart()
        {
            var impact = new MockImpactDetail()
            {
                ComputeImpact = ResourceImpactEnum.Reset,
                DiskImpact    = ResourceImpactEnum.None,
                NetworkImpact = ResourceImpactEnum.None,
                OsImpact      = ResourceImpactEnum.None,
                EstimatedImpactDurationInSeconds = -1,
            };

            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = 0;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = 10;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            configStore.UpdateKey(
                ConfigSectionName,
                ImpactTranslator.ConfigKeyRestartDurationThreshold,
                "10");

            impact.EstimatedImpactDurationInSeconds = -1;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = 0;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = 9;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = 10;
            Verify.AreEqual(NodeTask.Restart, translator.TranslateImpactDetailToNodeTask(impact));

            impact.EstimatedImpactDurationInSeconds = long.MaxValue;
            Verify.AreEqual(NodeTask.Relocate, translator.TranslateImpactDetailToNodeTask(impact));
        }
Example #3
0
        public void ImpactToString()
        {
            var impact = new MockImpactDetail()
            {
                ComputeImpact = ResourceImpactEnum.None,
                DiskImpact    = ResourceImpactEnum.Freeze,
                NetworkImpact = ResourceImpactEnum.Reset,
                OsImpact      = ResourceImpactEnum.Unknown,
                EstimatedImpactDurationInSeconds = 42,
            };

            var instance = new ImpactedInstance(
                "Role_IN_42",
                new[] { ImpactReason.ApplicationUpdate, ImpactReason.OSUpdate },
                impact);

            Verify.AreEqual(
                "Role_IN_42[ApplicationUpdate,OSUpdate][Compute=None,Disk=Freeze,Network=Reset,OS=Unknown,Duration=42]",
                instance.ToString());

            instance = new ImpactedInstance(
                "Role_IN_42",
                new[] { ImpactReason.ApplicationUpdate, ImpactReason.OSUpdate },
                null);

            Verify.AreEqual(
                "Role_IN_42[ApplicationUpdate,OSUpdate]",
                instance.ToString());

            instance = new ImpactedInstance(
                "Role_IN_42",
                new ImpactReason[0],
                impact);

            Verify.AreEqual(
                "Role_IN_42[][Compute=None,Disk=Freeze,Network=Reset,OS=Unknown,Duration=42]",
                instance.ToString());
        }