private string NormalizeParamValue(TestParameterInfo param) { switch (param.Type.ToLower()) { case "datetime": case "date": string retStr = ""; try { retStr = ((DateTime)param.ParseValue()).ToString("yyyy-MM-ddTHH:mm:ss"); } catch { ConsoleWriter.WriteErrLine("incorrect dateTime value format in parameter: " + param.Name); } return retStr; default: return param.Value; } }
private string NormalizeParamValue(TestParameterInfo param) { switch (param.Type.ToLower()) { case "datetime": case "date": string retStr = ""; try { retStr = ((DateTime)param.ParseValue()).ToString("yyyy-MM-ddTHH:mm:ss"); } catch { ConsoleWriter.WriteErrLine("incorrect dateTime value format in parameter: " + param.Name); } return(retStr); default: return(param.Value); } }
/// <summary> /// creates instance of the runner given a source. /// </summary> /// <param name="sources"></param> /// <param name="timeout"></param> /// <param name="backgroundWorker"></param> /// <param name="useUFTLicense"></param> public FileSystemTestsRunner(List<string> sources, TimeSpan timeout, int ControllerPollingInterval, TimeSpan perScenarioTimeOutMinutes, List<string> ignoreErrorStrings, Dictionary<string, string> jenkinsEnvVariables, string fsAppParamName, string appIdentifier, bool useUFTLicense = false ) { _jenkinsEnvVariables = jenkinsEnvVariables; //search if we have any testing tools installed if (!Helper.IsTestingToolsInstalled(TestStorageType.FileSystem)) { ConsoleWriter.WriteErrLine(string.Format(Resources.FileSystemTestsRunner_No_HP_testing_tool_is_installed_on, System.Environment.MachineName)); Environment.Exit((int)Launcher.ExitCodeEnum.Failed); } _timeout = timeout; ConsoleWriter.WriteLine("FileSystemTestRunner timeout is " + _timeout ); _stopwatch = Stopwatch.StartNew(); _pollingInterval = ControllerPollingInterval; _perScenarioTimeOutMinutes = perScenarioTimeOutMinutes; _ignoreErrorStrings = ignoreErrorStrings; _useUFTLicense = useUFTLicense; _tests = new List<TestInfo>(); //go over all sources, and create a list of all tests foreach (string source in sources) { List<TestInfo> testGroup = new List<TestInfo>(); try { //--handle directories which contain test subdirectories (recursively) if (Helper.IsDirectory(source)) { var testsLocations = Helper.GetTestsLocations(source); foreach (var loc in testsLocations) { var test = new TestInfo(loc, loc, source); testGroup.Add(test); } } //--handle mtb files (which contain links to tests) else //file might be LoadRunner scenario or //mtb file (which contain links to tests) //other files are dropped { testGroup = new List<TestInfo>(); FileInfo fi = new FileInfo(source); if (fi.Extension == Helper.LoadRunnerFileExtention) testGroup.Add(new TestInfo(source, source, source)); else if (fi.Extension == ".mtb") //if (source.TrimEnd().EndsWith(".mtb", StringComparison.CurrentCultureIgnoreCase)) { MtbManager manager = new MtbManager(); var paths = manager.Parse(source); foreach (var p in paths) { testGroup.Add(new TestInfo(p, p, source)); } } else if (fi.Extension == ".mtbx") //if (source.TrimEnd().EndsWith(".mtb", StringComparison.CurrentCultureIgnoreCase)) { testGroup = MtbxManager.Parse(source, _jenkinsEnvVariables, source); if (!string.IsNullOrEmpty(fsAppParamName) && !string.IsNullOrEmpty(appIdentifier)) { var testParam = new TestParameterInfo() { Name = fsAppParamName, Type = "string", Value = appIdentifier }; foreach(TestInfo testInfo in testGroup) { testInfo.ParameterList.Add(testParam); } } } } } catch (Exception) { testGroup = new List<TestInfo>(); } //--handle single test dir, add it with no group if (testGroup.Count == 1) { testGroup[0].TestGroup = "<None>"; } _tests.AddRange(testGroup); } if (_tests == null || _tests.Count == 0) { ConsoleWriter.WriteLine(Resources.FsRunnerNoValidTests); Environment.Exit((int)Launcher.ExitCodeEnum.Failed); } ConsoleWriter.WriteLine(string.Format(Resources.FsRunnerTestsFound, _tests.Count)); _tests.ForEach(t => ConsoleWriter.WriteLine("" + t.TestName)); ConsoleWriter.WriteLine(Resources.GeneralDoubleSeperator); }
public static List <TestInfo> LoadMtbx(string xmlContent, Dictionary <string, string> jankinsEnvironmentVars, string testGroupName) { var localEnv = Environment.GetEnvironmentVariables(); foreach (string varName in localEnv.Keys) { string value = (string)localEnv[varName]; xmlContent = ReplaceString(xmlContent, "%" + varName + "%", value, StringComparison.OrdinalIgnoreCase); xmlContent = ReplaceString(xmlContent, "${" + varName + "}", value, StringComparison.OrdinalIgnoreCase); } if (jankinsEnvironmentVars != null) { foreach (string varName in jankinsEnvironmentVars.Keys) { string value = jankinsEnvironmentVars[varName]; xmlContent = ReplaceString(xmlContent, "%" + varName + "%", value, StringComparison.OrdinalIgnoreCase); xmlContent = ReplaceString(xmlContent, "${" + varName + "}", value, StringComparison.OrdinalIgnoreCase); } } List <TestInfo> retval = new List <TestInfo>(); XDocument doc = XDocument.Parse(xmlContent); XmlSchemaSet schemas = new XmlSchemaSet(); var assembly = Assembly.GetExecutingAssembly(); var schemaStream = assembly.GetManifestResourceStream("HpToolsLauncher.MtbxSchema.xsd"); XmlSchema schema = XmlSchema.Read(schemaStream, null); schemas.Add(schema); string validationMessages = ""; doc.Validate(schemas, (o, e) => { validationMessages += e.Message + Environment.NewLine; }); if (!string.IsNullOrWhiteSpace(validationMessages)) { ConsoleWriter.WriteLine("mtbx schema validation errors: " + validationMessages); } try { var root = doc.Root; foreach (var test in GetElements(root, "Test")) { string path = GetAttribute(test, "path").Value; if (!Directory.Exists(path)) { string line = string.Format(Resources.GeneralFileNotFound, path); ConsoleWriter.WriteLine(line); ConsoleWriter.ErrorSummaryLines.Add(line); Launcher.ExitCode = Launcher.ExitCodeEnum.Failed; continue; } XAttribute xname = GetAttribute(test, "name"); string name = "<None>"; if (xname != null) { name = xname.Value; } TestInfo col = new TestInfo(path, name, testGroupName); HashSet <string> paramNames = new HashSet <string>(); foreach (var param in GetElements(test, "Parameter")) { string pname = GetAttribute(param, "name").Value; string pval = GetAttribute(param, "value").Value; XAttribute xptype = GetAttribute(param, "type"); string ptype = "string"; if (xptype != null) { ptype = xptype.Value; } var testParam = new TestParameterInfo() { Name = pname, Type = ptype, Value = pval }; if (!paramNames.Contains(testParam.Name)) { paramNames.Add(testParam.Name); col.ParameterList.Add(testParam); } else { string line = string.Format(Resources.GeneralDuplicateParameterWarning, pname, path); ConsoleWriter.WriteLine(line); } } XElement dataTable = GetElement(test, "DataTable"); if (dataTable != null) { col.DataTablePath = GetAttribute(dataTable, "path").Value; } retval.Add(col); } } catch (Exception ex) { ConsoleWriter.WriteException("Problem while parsing Mtbx file", ex); } return(retval); }
public static List<TestInfo> LoadMtbx(string xmlContent, Dictionary<string, string> jankinsEnvironmentVars, string testGroupName) { var localEnv = Environment.GetEnvironmentVariables(); foreach (string varName in localEnv.Keys) { string value = (string)localEnv[varName]; xmlContent = ReplaceString(xmlContent, "%" + varName + "%", value, StringComparison.OrdinalIgnoreCase); xmlContent = ReplaceString(xmlContent, "${" + varName + "}", value, StringComparison.OrdinalIgnoreCase); } if (jankinsEnvironmentVars != null) { foreach (string varName in jankinsEnvironmentVars.Keys) { string value = jankinsEnvironmentVars[varName]; xmlContent = ReplaceString(xmlContent, "%" + varName + "%", value, StringComparison.OrdinalIgnoreCase); xmlContent = ReplaceString(xmlContent, "${" + varName + "}", value, StringComparison.OrdinalIgnoreCase); } } List<TestInfo> retval = new List<TestInfo>(); XDocument doc = XDocument.Parse(xmlContent); XmlSchemaSet schemas = new XmlSchemaSet(); var assembly = Assembly.GetExecutingAssembly(); var schemaStream = assembly.GetManifestResourceStream("HpToolsLauncher.MtbxSchema.xsd"); XmlSchema schema = XmlSchema.Read(schemaStream, null); schemas.Add(schema); string validationMessages = ""; doc.Validate(schemas, (o, e) => { validationMessages += e.Message + Environment.NewLine; }); if (!string.IsNullOrWhiteSpace(validationMessages)) ConsoleWriter.WriteLine("mtbx schema validation errors: " + validationMessages); try { var root = doc.Root; foreach (var test in GetElements(root, "Test")) { string path = GetAttribute(test, "path").Value; if (!Directory.Exists(path)) { string line = string.Format(Resources.GeneralFileNotFound, path); ConsoleWriter.WriteLine(line); ConsoleWriter.ErrorSummaryLines.Add(line); Launcher.ExitCode = Launcher.ExitCodeEnum.Failed; continue; } XAttribute xname = GetAttribute(test, "name"); string name = "<None>"; if (xname != null) name = xname.Value; TestInfo col = new TestInfo(path, name, testGroupName); HashSet<string> paramNames = new HashSet<string>(); foreach (var param in GetElements(test, "Parameter")) { string pname = GetAttribute(param, "name").Value; string pval = GetAttribute(param, "value").Value; XAttribute xptype = GetAttribute(param, "type"); string ptype = "string"; if (xptype != null) ptype = xptype.Value; var testParam = new TestParameterInfo() { Name = pname, Type = ptype, Value = pval }; if (!paramNames.Contains(testParam.Name)) { paramNames.Add(testParam.Name); col.ParameterList.Add(testParam); } else { string line = string.Format(Resources.GeneralDuplicateParameterWarning, pname, path); ConsoleWriter.WriteLine(line); } } retval.Add(col); } } catch (Exception ex) { ConsoleWriter.WriteException("Problem while parsing Mtbx file", ex); } return retval; }
/// <summary> /// creates instance of the runner given a source. /// </summary> /// <param name="sources"></param> /// <param name="timeout"></param> /// <param name="backgroundWorker"></param> /// <param name="useUFTLicense"></param> public FileSystemTestsRunner(List <string> sources, TimeSpan timeout, int ControllerPollingInterval, TimeSpan perScenarioTimeOutMinutes, List <string> ignoreErrorStrings, Dictionary <string, string> jenkinsEnvVariables, string fsAppParamName, string appIdentifier, bool useUFTLicense = false ) { _jenkinsEnvVariables = jenkinsEnvVariables; //search if we have any testing tools installed if (!Helper.IsTestingToolsInstalled(TestStorageType.FileSystem)) { ConsoleWriter.WriteErrLine(string.Format(Resources.FileSystemTestsRunner_No_HP_testing_tool_is_installed_on, System.Environment.MachineName)); Environment.Exit((int)Launcher.ExitCodeEnum.Failed); } _timeout = timeout; ConsoleWriter.WriteLine("FileSystemTestRunner timeout is " + _timeout); _stopwatch = Stopwatch.StartNew(); _pollingInterval = ControllerPollingInterval; _perScenarioTimeOutMinutes = perScenarioTimeOutMinutes; _ignoreErrorStrings = ignoreErrorStrings; _useUFTLicense = useUFTLicense; _tests = new List <TestInfo>(); //go over all sources, and create a list of all tests foreach (string source in sources) { List <TestInfo> testGroup = new List <TestInfo>(); try { //--handle directories which contain test subdirectories (recursively) if (Helper.IsDirectory(source)) { var testsLocations = Helper.GetTestsLocations(source); foreach (var loc in testsLocations) { var test = new TestInfo(loc, loc, source); testGroup.Add(test); } } //--handle mtb files (which contain links to tests) else //file might be LoadRunner scenario or //mtb file (which contain links to tests) //other files are dropped { testGroup = new List <TestInfo>(); FileInfo fi = new FileInfo(source); if (fi.Extension == Helper.LoadRunnerFileExtention) { testGroup.Add(new TestInfo(source, source, source)); } else if (fi.Extension == ".mtb") //if (source.TrimEnd().EndsWith(".mtb", StringComparison.CurrentCultureIgnoreCase)) { MtbManager manager = new MtbManager(); var paths = manager.Parse(source); foreach (var p in paths) { testGroup.Add(new TestInfo(p, p, source)); } } else if (fi.Extension == ".mtbx") //if (source.TrimEnd().EndsWith(".mtb", StringComparison.CurrentCultureIgnoreCase)) { testGroup = MtbxManager.Parse(source, _jenkinsEnvVariables, source); if (!string.IsNullOrEmpty(fsAppParamName) && !string.IsNullOrEmpty(appIdentifier)) { var testParam = new TestParameterInfo() { Name = fsAppParamName, Type = "string", Value = appIdentifier }; foreach (TestInfo testInfo in testGroup) { testInfo.ParameterList.Add(testParam); } } } } } catch (Exception) { testGroup = new List <TestInfo>(); } //--handle single test dir, add it with no group if (testGroup.Count == 1) { testGroup[0].TestGroup = "<None>"; } _tests.AddRange(testGroup); } if (_tests == null || _tests.Count == 0) { ConsoleWriter.WriteLine(Resources.FsRunnerNoValidTests); Environment.Exit((int)Launcher.ExitCodeEnum.Failed); } ConsoleWriter.WriteLine(string.Format(Resources.FsRunnerTestsFound, _tests.Count)); _tests.ForEach(t => ConsoleWriter.WriteLine("" + t.TestName)); ConsoleWriter.WriteLine(Resources.GeneralDoubleSeperator); }