Beispiel #1
0
        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);
        }
Beispiel #2
0
        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"));
            }
        }