示例#1
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"));
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            ProcessNameSetter.SetProcessName("launcher");
            NUnitResultCollector nunitReport = new NUnitResultCollector();
            string resultfile = null;
            string failedfile = null;

            int retryOnFailure = 0;
            int maxRetry = DEFAULT_TEST_RETRY;

            ConfigureLogging();

            try
            {
                if( args.Length == 0 )
                {
                    Console.WriteLine(
                        "Usage: launcher configfile [--result=filename] [--failed=filename] "+
                        "[--max_barrier_wait_time=number_of_seconds] "+
                        "[-D:var=value] [-val:variable=value] [--retry=number] [--range=from-to] "+
                        "[--test=testname] [--shell]");
                    return;
                }

                string configfile = args[0];

                mTestPath = Path.GetDirectoryName(configfile);
                TestGroup group = TestConfLoader.LoadFromFile(configfile, args);

                mEndTest = group.ParallelTests.Count - 1;

                failedfile = Path.Combine(mTestPath, "smokefailed.conf");

                bool bShellMode = false;

                if( args.Length > 1 )
                {
                    foreach( string arg in args )
                    {
                        if( arg.StartsWith("--result=") )
                        {
                            resultfile = Path.GetFullPath(arg.Substring(9));
                        }

                        if( arg.StartsWith("--failed=") )
                        {
                            failedfile = Path.GetFullPath(arg.Substring(9));
                        }

                        if( arg.StartsWith("--retry=") )
                        {
                            retryOnFailure = int.Parse(arg.Substring("--retry=".Length));
                            log.InfoFormat("Retry on failure activated. {0} retries", retryOnFailure);
                            maxRetry = retryOnFailure;
                        }

                        if (arg.StartsWith("--max_barrier_wait_time="))
                        {
                            int maxBarrierTime = int.Parse(arg.Substring("--max_barrier_wait_time=".Length));
                            log.InfoFormat("Max Barrier wait time set to: {0} seconds", maxBarrierTime);
                            Barrier.SetMaxWaitTime(maxBarrierTime);
                        }

                        if (arg.Equals("--shell"))
                        {
                            bShellMode = true;
                        }

                        if(arg.StartsWith("--test="))
                        {
                            LaunchATest(arg, group);
                        }

                        if( arg.StartsWith("--range=") )
                        {
                            LaunchARange(arg, group);
                        }

                        if (arg.StartsWith("--pattern="))
                        {
                            LaunchAPattern(arg, group);

                            //update test range
                            SetTestRange(0, group.ParallelTests.Count - 1);
                        }

                    }
                }

                if( (group == null) || (group.ParallelTests.Count == 0) )
                {
                    Console.WriteLine("No tests to run");
                    return;
                }

                ConfigureRemoting();

                DateTime beginTimeStamp = DateTime.Now;

                Runner[] runners = RunTests(args, group, maxRetry, bShellMode,
                    retryOnFailure, failedfile);

                DateTime endTimeStamp = DateTime.Now;

                PrintResults(runners, beginTimeStamp, endTimeStamp, nunitReport);
            }
            finally
            {
                WriteResult(resultfile);
                nunitReport.SaveResults("pnunit-results.xml");
            }
        }