internal static LauncherArgs ProcessArgs(string[] args, TestGroup group) { LauncherArgs result = new LauncherArgs(); result.ConfigFile = args[0]; string testPath = Path.GetDirectoryName(Path.GetFullPath(result.ConfigFile)); result.TestRange = new TestRange(0, group.ParallelTests.Count - 1); result.FailedConfigFile = Path.Combine(testPath, "smokefailed.conf"); result.ResultLogFile = Path.Combine(testPath, SMOKE_RESULT_FILE); result.ErrorLogFile = Path.Combine(testPath, SMOKE_ERRORS_FILE); if (args.Length <= 1) { return(result); } foreach (string arg in args) { if (arg.StartsWith("--result=")) { result.ResultFile = Path.GetFullPath(arg.Substring(9)); continue; } if (arg.StartsWith("--failed=")) { result.FailedConfigFile = Path.GetFullPath(arg.Substring(9)); continue; } if (arg.StartsWith("--retry=")) { result.RetryOnFailure = int.Parse(arg.Substring("--retry=".Length)); mLog.InfoFormat("Retry on failure activated. {0} retries", result.RetryOnFailure); result.MaxRetry = result.RetryOnFailure; continue; } if (arg.StartsWith("--max_barrier_wait_time=")) { int maxBarrierTime = int.Parse(arg.Substring("--max_barrier_wait_time=".Length)); mLog.InfoFormat("Max Barrier wait time set to: {0} seconds", maxBarrierTime); Barrier.SetMaxWaitTime(maxBarrierTime); continue; } if (arg.Equals("--shell")) { result.ShellMode = true; continue; } if (arg.StartsWith("--test=")) { result.TestRange = LaunchATest(arg, group); continue; } if (arg.StartsWith("--range=")) { result.TestRange = LaunchARange(arg, group); continue; } if (arg.StartsWith("--pattern=")) { LaunchAPattern(arg, group); //update test range result.TestRange.SetTestRange(0, group.ParallelTests.Count - 1); continue; } if (arg.StartsWith("--timeout")) { result.TestsTimeout = SetTestTimeout(arg); } if (arg.StartsWith("--testslist=")) { result.ListTestsFile = Path.GetFullPath(arg.Substring("--testslist=".Length)); } if (arg.StartsWith("--usefilereport=")) { result.UseFileReport = Path.GetFullPath(arg.Substring("--usefilereport=".Length)); continue; } } return(result); }
static void RunLauncher(string customLogFolder, string[] args) { TestGroup group = TestConfLoader.LoadFromFile(args[0], args); LauncherArgs launcherArgs = CliArgsReader.ProcessArgs(args, group); if ((group == null) || (group.ParallelTests.Count == 0)) { Console.WriteLine("No tests to run"); return; } TestSuiteLoggerParams loggerParams = CliArgsReader.ProcessTestSuiteLoggerArgs(args); NUnitResultCollector nunitReport = new NUnitResultCollector(); LogWriter logWriter = new LogWriter(launcherArgs.ResultLogFile, launcherArgs.ErrorLogFile); try { string portValue = CliArgsReader.GetArgumentValue("--port=", args); int port = portValue == null ? DEFAULT_LAUNCHER_PORT : int.Parse(portValue); string ipToBind = CliArgsReader.GetArgumentValue("--iptobind=", args); Configurator.ConfigureRemoting(port, ipToBind ?? string.Empty); DateTime beginTimeStamp = DateTime.Now; TestSuiteLogger testSuiteLogger = null; if (loggerParams.IsInitialized()) { testSuiteLogger = new TestSuiteLogger(loggerParams); testSuiteLogger.SaveBuild(); testSuiteLogger.CreateSuite(); } Hashtable userValues = CliArgsReader.GetUserValues(args); Launcher launcher = new Launcher(); string listenAddress = string.Format("{0}:{1}", ipToBind ?? Environment.MachineName, port); List <string> testList = string.IsNullOrEmpty(launcherArgs.ListTestsFile) ? null : LoadTestsToRunFromFile(launcherArgs.ListTestsFile); Runner[] runners = launcher.RunTests( group, testList, launcherArgs.MaxRetry, launcherArgs.ShellMode, launcherArgs.RetryOnFailure, launcherArgs.FailedConfigFile, testSuiteLogger, launcherArgs.TestsTimeout, launcherArgs.TestRange, userValues, logWriter, listenAddress, launcherArgs.UseFileReport); DateTime endTimeStamp = DateTime.Now; FillNunitReport(nunitReport, runners); if (CliArgsReader.GetArgumentValue("--skipsummarylog", args) != null) { return; } LogWriter.PrintResults( runners, beginTimeStamp, endTimeStamp, logWriter); } finally { logWriter.WriteFullLog(launcherArgs.ResultFile); nunitReport.SaveResults(Path.Combine(customLogFolder, "pnunit-results.xml")); } }