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); } }
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)); }
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()); }