Writes console output to a richtextbox
Inheritance: TextWriter
 internal static void IntroduceBunnies(List<Bunny> bunnies, ConsoleWriter consoleWriter)
 {
     foreach (var bunny in bunnies)
     {
         bunny.Introduce(consoleWriter);
     }
 }
Beispiel #2
0
        public static void WriteLine(object value, ConsoleType type, ConsoleWriter writer)
        {
            switch (type)
            {
                case ConsoleType.Info:
                    WriteLine("  [INFO] " + value, ConsoleColor.Yellow, writer); break;

                case ConsoleType.Error:
                    WriteLine("  [ERROR] " + value, ConsoleColor.Red, writer); break;

                case ConsoleType.Connect:
                    if (!GlobalConfig.Debug) return;
                    WriteLine("    [CONNECTION] " + value, ConsoleColor.Cyan, writer); break;

                case ConsoleType.Disconnect:
                    if (!GlobalConfig.Debug) return;
                    WriteLine("    [DISCONNNECTION] " + value, ConsoleColor.DarkCyan, writer); break;

                case ConsoleType.Receive:
                    if (!GlobalConfig.Debug) return;
                    WriteLine("      [RECV] " + value, ConsoleColor.Green, writer); break;

                case ConsoleType.Send:
                    if (!GlobalConfig.Debug) return;
                    WriteLine("      [SEND] " + value, ConsoleColor.DarkGreen, writer); break;

                default:
                    WriteLine(value, ConsoleColor.White, writer); break;
            }
        }
Beispiel #3
0
        public static int Main(string[] args)
        {
            var consoleWriter = new ConsoleWriter();

             try
             {
            var settings = new SaucySettings();

            ILogger logger = new VerboseLogger();

            var restoreVerb = new SaucyCommandLine(
               new PackagesRestorer(
                  new JsonLoader(),
                  new ProviderMatcher(new GitHubProvider(new FolderSync(logger))),
                  consoleWriter,
                  settings),
               settings);

            var runner = new Runner();
            runner.Register(restoreVerb);

            var exitCode = runner.Run(args);
            return exitCode;
             }
             catch (Exception e)
             {
            consoleWriter.Write(e.Message);
            consoleWriter.Write(e.StackTrace);
            return -1;
             }
        }
        public void TestBatchRequest()
        {
            using (var socket = CreateClient())
            {
                var socketStream = new NetworkStream(socket);
                using (var reader = new StreamReader(socketStream, Encoding.ASCII, true))
                using (var writer = new ConsoleWriter(socketStream, Encoding.ASCII, 1024 * 8))
                {
                    reader.ReadLine();

                    int size = 100;

                    var lines = new string[size];

                    for (var i = 0; i < size; i++)
                    {
                        var line = Guid.NewGuid().ToString();
                        lines[i] = line;
                        var request = CreateRequest(line);
                        writer.Write(request);
                    }

                    writer.Flush();

                    for (var i = 0; i < size; i++)
                    {
                        var receivedLine = reader.ReadLine();
                        Assert.AreEqual(lines[i], receivedLine);
                    }
                }
            }
        }
Beispiel #5
0
        public DebugWindow()
        {
            InitializeComponent();

            _cw = new ConsoleWriter(this);

            Console.SetOut(_cw);
        }
Beispiel #6
0
        public LogWPF()
        {
            InitializeComponent();

            var console = new ConsoleWriter();
            console.OnText += console_OnText;
            Console.SetOut(console);
        }
Beispiel #7
0
 public static void Clear()
 {
     if (cw == null)
     {
         cw = new ConsoleWriter ();//will do a clear
     }
     cw.Clear ();
 }
        static void Main()
        {
            IReader reader = new ConsoleReader();
            IWriter writer = new ConsoleWriter();

            var engine = new Engine(reader, writer);
            engine.Run();
        }
        public static void Main()
        {
            IWritter consoleWriter = new ConsoleWriter();
            IReader consoleReader = new ConsoleReader();
            IPowerPlant powerPlant = new PowerPlant(consoleWriter, consoleReader);

            powerPlant.Run();
        }
 public static void Main(string[] args)
 {
     IReader reader = new ConsoleReader();
     IWriter writer = new ConsoleWriter();
     IEventHolder events = new EventHolder();
     IEventLogger logger = new EventLogger();
     IEventEngine eventEngine = new EventEngine(reader, writer, events, logger);
     eventEngine.Run();
 }
Beispiel #11
0
		static public void WriteLine(string format, params Object[] arg)
		{
			if (cw == null)
				cw = new ConsoleWriter();
		    lock (cw)
		    {
		        cw.WriteLine(string.Format(format, arg));
		    }
		}
Beispiel #12
0
        static void Main(string[] args)
        {
            var writer = new ConsoleWriter();
            writer.X = 2;
            var test = writer.X;

            writer.X2 = 6;
            var test2 = writer.X2;
        }
Beispiel #13
0
        public static void Main()
        {
            IReader consoleReader = new ConsoleReader();
            IWriter consoleWriter = new ConsoleWriter();
            IPerformanceDatabase database = new PerformanceDatabase();
            IEngine engine = new Engine(consoleReader, consoleWriter, database);

            engine.Run();
        }
Beispiel #14
0
        static void Main(string[] args)
        {
            var blobFactory = new BlobFactory();
            var reader =  new ConsoleReader();
            var writer = new ConsoleWriter();
            var data = new BlobData();

            var engine = new Engine(blobFactory, data, reader, writer);
            engine.Run();
        }
        public static void Main()
        {
            var blopFactory = new BlobFactory();
            var reader = new ConsoleReader();
            var writer = new ConsoleWriter();
            var data = new Data();

            var engine = new Engine(blopFactory, data, reader, writer);
            engine.Run();
        }
        public static void Main()
        {
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();
            IGameData data = new GameData();
            IBlobFactory blobFactory = new BlobFactory();

            IRunnable engine = new GameEngine(reader, writer, data, blobFactory);
            engine.Run();
        }
Beispiel #17
0
        public static void Main(string[] args)
        {
            IBlobFactory blobFactory = new BlobFactory();
            IAttackFactory attackFactory = new AttackFactory();
            IBehaviorFactory behaviorFactory = new BehaviorFactory();
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();

            IEngine engine = new Engine(blobFactory, attackFactory, behaviorFactory, reader, writer);
            engine.Run();
        }
        public static void Main()
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

            IHotelBookingSystemData database = new HotelBookingSystemData();
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();

            var engine = new Engine(database, reader, writer);
            engine.StartOperation();
        }
        static void Main()
        {
            var buildingFactory = new BuildingFactory();
            var unitFactory = new UnitFactory();
            var resourceFactory = new ResourceFactory();
            var reader = new ConsoleReader();
            var writer = new ConsoleWriter();
            var data = new EmpiresData();

            var engine = new Engine(buildingFactory,resourceFactory,unitFactory,data,reader,writer);
            engine.Run();
        }
Beispiel #20
0
        public static void Main(string[] args)
        {
            IBuildingFactory buildingFactory = new BuildingFactory();
            IUnitFactory unitFactory = new UnitFactory();
            IResourceFactory resourceFactory = new ResourceFactory();
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();
            IEmpiresData database = new Database();

            IEngine engine = new Engine(unitFactory, resourceFactory, buildingFactory, reader, writer, database);
            engine.Run();
        }
        public static void Main()
        {
            IGameDatabase gameDatabase = new GameDatabase();
            IInputReader reader = new ConsoleReader();
            IOutputWriter writer = new ConsoleWriter();

            var engine = new GameEngine(
                gameDatabase,
                reader,
                writer);

            engine.Start();
        }
Beispiel #22
0
 /// <summary>
 /// Initializes console properties and sets up environment.
 /// </summary>
 internal virtual void Start()
 {
     Initialize();
     In = string.Empty;
     Out = new ConsoleWriter();
     consoleBuffer = Header;
     if (consoleBuffer != "")
         Out.WriteLine(consoleBuffer);
     scrollPosition = Vector2.zero;
     ID = IDCount++;
     this.consoleID = "window" + ID;
     history = new List<string>();
 }
Beispiel #23
0
        public static void Main()
        {
            ICity city = new City();
            IRenderer renderer = new ConsoleRenderer();
            IWriter writer = new ConsoleWriter();
            
            ICityBuilder cityBuilder = new CityBuilder(
                city,
                renderer,
                writer);

            cityBuilder.Run();
        }
        public static void Main()
        {
            IBangaloreUniversityData data = new BangaloreUniversityData();

            IInputReader reader = new ConsoleReader();

            IOutputWriter writer = new ConsoleWriter
            {
                AutoFlush = true
            };

            IEngine engine = new BangaloreUniversityEngine(reader, writer, data);
            engine.Run();
        }
Beispiel #25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BartForm"/> class.
        /// </summary>
        public BartForm( )
        {
            InitializeComponent ( );
              cwOut = new ConsoleWriter ( ref this.console );
            cwError = new ConsoleWriter ( ref this.console );

            this.console.ReadOnly = true;

            BartExecutor.Instance.ConsoleOutput = cwOut;
            BartExecutor.Instance.ConsoleError = cwError;
            BartExecutor.Instance.Complete += delegate ( object sender, EventArgs e ) {
                backups.DataSource = BartExecutor.Instance.List ( );
            };

            backups.DataSource = BartExecutor.Instance.List ( );
        }
        public override void Run()
        {
            ConsoleWriter writer = new ConsoleWriter();
            ResultPrinter resultPrinter = new ResultPrinter(new StreamWriter(results), writer);
            SnapshotLoader loader = new SnapshotLoader(snapshotPath);
            IList<HistorySnapshot> shapshots = loader.LoadSnapshots();

            for (int snapshotLength = 100; snapshotLength >= 80; snapshotLength = snapshotLength - 10)
            {
                ExperimentWatcher experiment = new ExperimentWatcher(writer, snapshotLength, name, shapshots);
                experiment.Start();
                resultPrinter.Prefix = snapshotLength + ", ";
                resultPrinter.PrintResult(experiment.Results);
            }
            resultPrinter.Close();
        }
        public static void Main()
        {
            ITicketCatalog catalog = new TicketCatalog();

            ICommandManager commandManager = new CommandManager(catalog);

            IInputReader reader = new ConsoleReader();

            IOutputWriter writer = new ConsoleWriter
            {
                AutoFlush = true
            };

            IEngine engine = new Engine(commandManager, reader, writer);

            engine.Run();
        }
        public static void Main()
        {
            IDataBase db = new DataBase();

            ICommandManager commandManager = new CommandManager();

            IInputReader reader = new ConsoleReader();

            IOutputWriter writer = new ConsoleWriter
            {
                AutoFlush = true
            };

            IEngine engine = new EmpiresEngine(db, commandManager, reader, writer);

            engine.Run();
        }
Beispiel #29
0
        public void Can_deploy_to_directory()
        {
            // setup
            var deployDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DeploymentDirectory");
            if (Directory.Exists(deployDirectory))
                Directory.Delete(deployDirectory, true);
            Directory.CreateDirectory(deployDirectory);
            var writer = new ConsoleWriter();
            var runContext = new RunContext();
            var runner = new CommandLineRunner(writer,
                new PackageProcessor(new ActionExecutor(writer, runContext), writer, new NuGetProcess(writer), runContext),
                new NullActionExecutor(),
                runContext);
            SetDefinitions(new Packages
            {
                Items = new object[]
                {
                    new Package
                    {
                        BasePath = _baseDirectory,
                        name = "package 1",
                        NuSpecPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestData/TestNuSpec.nuspec"),
                        OutputDirectory = _outputDirectory,
                        Version = "",
                        Deployments = new PackageDeployments
                        {
                            Deployment = new[]
                            {
                                new Deployment
                                {
                                    name = "test deployment",
                                    path = deployDirectory
                                }
                            }
                        }
                    }
                }
            });

            // act
            runner.Run(_rootDirectory, _nugetLocation, _defintionsFileLocation, "", new Dictionary<string, string>());

            // assert
            Assert.IsTrue(File.Exists(Path.Combine(deployDirectory, "package1.1.2.3.nupkg")));
        }
        public override void Run()
        {
            ConsoleWriter writer = new ConsoleWriter();
            ResultPrinter resultPrinter = new ResultPrinter(new StreamWriter(results), writer);
            SnapshotLoader loader = new SnapshotLoader(source);
            IList<HistorySnapshot> snapshots = loader.LoadSnapshots();
            ISet<string> names = ProcessNamesExtractor.GetProcessNames(snapshots);

            foreach (string name in names)
            {
                //Console.WriteLine(name);
                ExperimentWatcher experiment = new ExperimentWatcher(writer, 20, name, snapshots);
                experiment.Start();
                resultPrinter.Prefix = name + ": ";
                resultPrinter.PrintResult(experiment.Results);
            }
            resultPrinter.Close();
        }
Beispiel #31
0
 public void Execute(params object[] list)
 {
     this.game.RestoreState();
     ConsoleWriter.PrintMatrix(this.game.Board);
 }
        private void generateAnalysisReport(TestRunResults runDesc)
        {
            string lrrLocation  = Path.Combine(runDesc.ReportLocation, LRR_FOLDER, LRR_FOLDER + ".lrr");
            string lraLocation  = Path.Combine(runDesc.ReportLocation, LRA_FOLDER, LRA_FOLDER + ".lra");
            string htmlLocation = Path.Combine(runDesc.ReportLocation, HTML_FOLDER, HTML_FOLDER + ".html");

            ProcessStartInfo analysisRunner = new ProcessStartInfo();

            analysisRunner.FileName               = ANALYSIS_LAUNCHER;
            analysisRunner.Arguments              = "\"" + lrrLocation + "\" \"" + lraLocation + "\" \"" + htmlLocation + "\" \"" + _analysisTemplate + "\"";
            analysisRunner.UseShellExecute        = false;
            analysisRunner.RedirectStandardOutput = true;

            ConsoleWriter.WriteLine("executing Analysis launcher with arguments : " + analysisRunner.Arguments);
            ConsoleWriter.WriteLine("time for analysis: " + _perScenarioTimeOutMinutes.ToString(@"dd\:\:hh\:mm\:ss"));
            analysisRunner.RedirectStandardOutput = true;
            analysisRunner.RedirectStandardError  = true;
            Process runner = Process.Start(analysisRunner);

            if (runner != null)
            {
                runner.OutputDataReceived += runner_OutputDataReceived;
                runner.ErrorDataReceived  += runner_ErrorDataReceived;
                runner.BeginOutputReadLine();
                runner.BeginErrorReadLine();
                Stopwatch analysisStopWatch = Stopwatch.StartNew();

                while (!runner.WaitForExit(_pollingInterval * 1000) && analysisStopWatch.Elapsed < _perScenarioTimeOutMinutes)
                {
                    ;
                }

                analysisStopWatch.Stop();
                runner.CancelOutputRead();
                runner.CancelErrorRead();
                ConsoleWriter.WriteLine("time passed: " + analysisStopWatch.Elapsed.ToString(@"dd\:\:hh\:mm\:ss"));
                if (analysisStopWatch.Elapsed > _perScenarioTimeOutMinutes)
                {
                    runDesc.ErrorDesc = Resources.LrAnalysisTimeOut;
                    ConsoleWriter.WriteErrLine(runDesc.ErrorDesc);
                    runDesc.TestState = TestState.Error;
                    if (!runner.HasExited)
                    {
                        runner.Kill();
                    }
                }
                //ConsoleWriter.WriteLine("checking error code");
                if (runner.ExitCode != (int)Launcher.ExitCodeEnum.Passed)
                {
                    runDesc.ErrorDesc = Resources.LrAnalysisRunTimeError;
                    ConsoleWriter.WriteErrLine(runDesc.ErrorDesc);
                    runDesc.TestState = TestState.Error;
                }
                //using (StreamReader reader = runner.StandardOutput)
                //{
                //    string result = reader.ReadToEnd();
                //    ConsoleWriter.WriteLine(Resources.LrAnlysisResults);
                //    ConsoleWriter.WriteLine("");
                //    ConsoleWriter.WriteLine(result);
                //}
            }
            else
            {
                runDesc.ErrorDesc = Resources.LrAnlysisInitFail;
                ConsoleWriter.WriteErrLine(runDesc.ErrorDesc);
                runDesc.TestState = TestState.Error;
            }
        }
        private bool waitForScenario(ref string errorReason)
        {
            ConsoleWriter.WriteLine("Scenario run has started");

            ThreadPool.QueueUserWorkItem(DoTask, autoEvent);

            //wait for the scenario to end gracefully:
            int time = _pollingInterval * 1000;

            if (_summaryDataLogger.IsAnyDataLogged())
            {
                LogDataDuringScenarioExecution();
            }
            while (_stopWatch.Elapsed <= _perScenarioTimeOutMinutes)
            {
                if (_runCancelled())
                {
                    errorReason = Resources.GeneralTimedOut;
                    return(false);
                }
                if (autoEvent.WaitOne(time))
                {
                    break;
                }
            }

            if (_stopWatch.Elapsed > _perScenarioTimeOutMinutes)
            {
                _stopWatch.Stop();
                errorReason = string.Format(Resources.LrScenarioTimeOut, _stopWatch.Elapsed.ToString("dd\\:hh\\:mm\\:ss"));
                ConsoleWriter.WriteErrLine(errorReason);
            }

            if (_scenarioEndedEvent)
            {
                try
                {
                    //ConsoleWriter.WriteLine("unregistering event");
                    _engine.Events.ScenarioEvents.OnScenarioEnded -= ScenarioEvents_OnScenarioEnded;
                    _scenarioEndedEvent = false;
                }
                catch { }
            }

            //if scenario not ended until now, force stop it.
            if (!_scenarioEnded)
            {
                int ret = _engine.Scenario.StopNow();
                if (ret != 0)
                {
                    errorReason = string.Format(Resources.LrStopScenarioEnded);
                    return(false);
                }

                int tries = 2;
                while (_engine.Scenario.IsActive() && tries > 0)
                {
                    //ConsoleWriter.WriteLine("\t\tScenario is still running. Waiting for the scenario to stop...");
                    Stopper wlrunStopper = new Stopper(_pollingInterval * 1000);
                    wlrunStopper.Start();
                    tries--;
                }

                if (_engine.Scenario.IsActive())
                {
                    errorReason = Resources.LrControllerFailedToStop;
                    return(false);
                }
            }

            return(true);
        }
        private void checkForErrors()
        {
            //init variables
            string message = null;

            XmlDocument errorsXML = new XmlDocument();

            errorsXML.Load(Path.Combine(_resultsFolder, "errors.xml"));

            _errors = new Dictionary <string, ControllerError>();

            //new unseen error(s)
            foreach (XmlNode errorNode in errorsXML.DocumentElement.ChildNodes)
            {
                message = errorNode.InnerText;

                //ControllerError cerror;
                //if error exist, just update the count:
                bool added = false;
                //check if the error is ignorable
                foreach (string ignoreError in _ignoreErrorStrings)
                {
                    if (message.ToLowerInvariant().Contains(ignoreError.ToLowerInvariant()))
                    {
                        ConsoleWriter.WriteLine(string.Format(Resources.LrErrorIgnored, message, ignoreError));
                        if (_errors.ContainsKey(message))
                        {
                            _errors[message].occurences++;
                        }
                        else
                        {
                            _errors.Add(message, new ControllerError {
                                state = ERRORState.Ignore, occurences = 1
                            });
                        }
                        added = true;
                        _errorsCount++;
                    }
                }

                //error was not ignored, and was not added yet. add it now.
                if (!added)
                {
                    // non ignorable error message,
                    ConsoleWriter.WriteErrLine(message);//+ ", time " + time + ", host: " + host + ", VuserID: " + vuserId + ", script: " + script + ", line: " + line);

                    if (_errors.ContainsKey(message))
                    {
                        _errors[message].occurences++;
                    }
                    else
                    {
                        _errors.Add(message, new ControllerError {
                            state = ERRORState.Error, occurences = 1
                        });
                    }
                    _errorsCount++;
                    //if the scenario ended event was not registered, we need to provide the opportunity to check the vuser status.
                    //if (!_scenarioEndedEvent)
                    //{
                    break;
                    //}
                }
            }
            ConsoleWriter.WriteErrLine("total number of errors: " + _errorsCount);
        }
        public TestRunResults RunTest(TestInfo scenarioInf, ref string errorReason, RunCancelledDelegate runCancelled)
        {
            string scenarioPath = scenarioInf.TestPath;
            //prepare the instance that will contain test results for JUnit
            TestRunResults runDesc = new TestRunResults();

            ConsoleWriter.ActiveTestRun = runDesc;
            ConsoleWriter.WriteLine(DateTime.Now.ToString(Launcher.DateFormat) + " Running: " + scenarioPath);

            runDesc.TestType = TestType.LoadRunner.ToString();
            _resultsFolder   = Helper.GetTempDir();
            if (!string.IsNullOrWhiteSpace(scenarioInf.ReportPath))
            {
                _resultsFolder = scenarioInf.ReportPath;
                ConsoleWriter.WriteLine(DateTime.Now.ToString(Launcher.DateFormat) + " Result folder is set explicitly: " + _resultsFolder);
            }
            else if (!string.IsNullOrWhiteSpace(scenarioInf.ReportBaseDirectory))
            {
                _resultsFolder = Path.Combine(scenarioInf.ReportBaseDirectory,
                                              scenarioInf.TestName.Substring(scenarioInf.TestName.LastIndexOf('\\') + 1));
                ConsoleWriter.WriteLine(DateTime.Now.ToString(Launcher.DateFormat) + " Result folder is generated under base directory: " + _resultsFolder);
            }
            else
            {
                ConsoleWriter.WriteLine(DateTime.Now.ToString(Launcher.DateFormat) + " Result folder is automatically generated: " + _resultsFolder);
            }

            //a directory with this name may already exist. try to delete it.
            if (Directory.Exists(_resultsFolder))
            {
                try
                {
                    // Directory.Delete(_resultsFolder, true);
                    DirectoryInfo dir = new DirectoryInfo(_resultsFolder);
                    dir.GetFiles().ToList().ForEach(file => file.Delete());
                    dir.GetDirectories().ToList().ForEach(subdir => subdir.Delete());
                }
                catch (Exception)
                {
                    Console.WriteLine(string.Format(Resources.CannotDeleteReportFolder, _resultsFolder));
                }
            }
            else
            {
                try
                {
                    Directory.CreateDirectory(_resultsFolder);
                }
                catch (Exception)
                {
                    errorReason       = string.Format(Resources.FailedToCreateTempDirError, _resultsFolder);
                    runDesc.TestState = TestState.Error;
                    runDesc.ErrorDesc = errorReason;

                    Environment.ExitCode = (int)Launcher.ExitCodeEnum.Failed;
                    return(runDesc);
                }
            }
            //create LRR folder:
            _controller_result_dir = Path.Combine(_resultsFolder, LRR_FOLDER);


            Directory.CreateDirectory(_controller_result_dir);

            //init result params
            runDesc.ErrorDesc = errorReason;
            runDesc.TestPath  = scenarioPath;
            ConsoleWriter.WriteLine(runDesc.TestPath);
            runDesc.TestState = TestState.Unknown;

            if (!Helper.isLoadRunnerInstalled())
            {
                runDesc.TestState = TestState.Error;
                runDesc.ErrorDesc = string.Format(Resources.LoadRunnerNotInstalled, System.Environment.MachineName);
                ConsoleWriter.WriteErrLine(runDesc.ErrorDesc);
                Environment.ExitCode = (int)Launcher.ExitCodeEnum.Failed;
                return(runDesc);
            }

            //from here on, we may delegate runCancelled().
            _runCancelled = runCancelled;

            //start scenario stop watch
            Stopwatch scenarioStopWatch = Stopwatch.StartNew();

            //set state to running
            runDesc.TestState = TestState.Running;

            //and run the scenario
            bool res = runScenario(scenarioPath, ref errorReason, runCancelled);

            if (!res)
            {
                //runScenario failed. print the error and set test as failed
                ConsoleWriter.WriteErrLine(errorReason);
                runDesc.TestState = TestState.Error;
                runDesc.ErrorDesc = errorReason;
                runDesc.Runtime   = scenarioStopWatch.Elapsed;

                //and try to close the controller
                closeController();
                return(runDesc);
            }
            else
            {
                try
                {
                    ConsoleWriter.WriteLine(Resources.GeneralDoubleSeperator);
                    runDesc.ReportLocation = _resultsFolder;
                    ConsoleWriter.WriteLine(Resources.LrAnalysingResults);

                    //close the controller, so Analysis can be opened
                    ConsoleWriter.WriteLine("closing Controller");
                    closeController();
                    ConsoleWriter.WriteLine("Controller closed");

                    //generate report using Analysis:
                    ConsoleWriter.WriteLine("calling analysis report generator");
                    generateAnalysisReport(runDesc);
                    ConsoleWriter.WriteLine("analysis report generator finished");


                    //check for errors:
                    if (File.Exists(Path.Combine(_resultsFolder, "errors.xml")))
                    {
                        checkForErrors();
                    }

                    ConsoleWriter.WriteLine(Resources.LRErrorsSummary);

                    //count how many ignorable errors and how many fatal errors occured.
                    int ignore = getErrorsCount(ERRORState.Ignore);
                    int fatal  = getErrorsCount(ERRORState.Error);
                    runDesc.FatalErrors = fatal;
                    ConsoleWriter.WriteLine(String.Format(Resources.LrErrorSummeryNum, ignore, fatal));
                    ConsoleWriter.WriteLine("");
                    if (_errors != null && _errors.Count > 0)
                    {
                        foreach (ERRORState state in Enum.GetValues(typeof(ERRORState)))
                        {
                            ConsoleWriter.WriteLine(printErrorSummary(state));
                        }
                    }

                    //if scenario ended with fatal errors, change test state
                    if (fatal > 0)
                    {
                        ConsoleWriter.WriteErrLine(string.Format(Resources.LRTestFailDueToFatalErrors, fatal));
                        errorReason       = buildErrorReasonForErrors();
                        runDesc.TestState = TestState.Failed;
                    }
                    else if (ignore > 0)
                    {
                        ConsoleWriter.WriteLine(string.Format(Resources.LRTestWarningDueToIgnoredErrors, ignore));
                        runDesc.HasWarnings = true;
                        runDesc.TestState   = TestState.Warning;
                    }
                    else
                    {
                        Console.WriteLine(Resources.LRTestPassed);
                        runDesc.TestState = TestState.Passed;
                    }
                }
                catch (Exception e)
                {
                    ConsoleWriter.WriteException(Resources.LRExceptionInAnalysisRunner, e);
                    runDesc.TestState = TestState.Error;
                    runDesc.ErrorDesc = Resources.LRExceptionInAnalysisRunner;
                    runDesc.Runtime   = scenarioStopWatch.Elapsed;
                }

                //runDesc.ReportLocation = _resultsFolder;
            }

            runDesc.Runtime = scenarioStopWatch.Elapsed;
            if (!string.IsNullOrEmpty(errorReason))
            {
                runDesc.ErrorDesc = errorReason;
            }
            KillController();
            return(runDesc);
        }
        private bool runScenario(string scenario, ref string errorReason, RunCancelledDelegate runCancelled)
        {
            cleanENV();

            ConsoleWriter.WriteLine(string.Format(Resources.LrInitScenario, scenario));

            //start controller
            _engine = new LrEngine();
            if (_engine == null)
            {
                errorReason = string.Format(Resources.LrFailToOpenController, scenario);
                return(false);
            }

            //try to register the end scenario event:
            _scenarioEndedEvent = false;
            try
            {
                _engine.Events.ScenarioEvents.OnScenarioEnded += ScenarioEvents_OnScenarioEnded;
                _scenarioEndedEvent = true;
            }
            catch (Exception e)
            {
                ConsoleWriter.WriteException(Resources.LrFailToRegisterEndScenarioEvent, e);
                _scenarioEndedEvent = false;
            }


            if (_displayController == true)
            {
                _engine.ShowMainWindow(1);
            }
            else
            {
                _engine.ShowMainWindow(0);
            }

            //pointer to the scenario object:
            LrScenario currentScenario = _engine.Scenario;

            //try to open the scenario and validate the scenario and connect to load generators
            if (openScenario(scenario, ref errorReason) && validateScenario(currentScenario, ref errorReason))
            {
                //apply rts to scripts
                foreach (ScriptRTSModel scriptRTS in _scriptRTSSet)
                {
                    try
                    {
                        LrScripts currentScripts  = currentScenario.Scripts;
                        LrScript  currentScript   = currentScripts.Item[scriptRTS.GetScriptName()];
                        string    runtimeSettings = "",
                                  actionLogic     = "";
                        currentScript.GetScriptRunTimeSettings(ref runtimeSettings, ref actionLogic);
                        RTSHelper rtsHelper = new RTSHelper(runtimeSettings, RTSHelper.COMMAND_ARGUMENTS, scriptRTS.GetKeyValuePairs());
                        string    updatedRuntimeSettings = rtsHelper.GetUpdatedIniFileText();
                        currentScript.SetScriptRunTimeSettings(updatedRuntimeSettings, actionLogic);
                    }
                    catch (Exception e)
                    {
                        errorReason = string.Format(Resources.LrRTSError, scriptRTS.GetScriptName(), e.Message);
                        return(false);
                    }
                }

                //set the result dir:
                ConsoleWriter.WriteLine("setting scenario result folder to " + Path.Combine(_resultsFolder, LRR_FOLDER));
                currentScenario.ResultDir = Path.Combine(_resultsFolder, LRR_FOLDER);
                ConsoleWriter.WriteLine("scenario result folder: " + currentScenario.ResultDir);

                //check if canceled or timedOut:
                if (_runCancelled())
                {
                    errorReason = Resources.GeneralTimedOut;
                    return(false);
                }

                _scenarioEnded = false;

                ConsoleWriter.WriteLine(Resources.LrStartScenario);

                int ret = currentScenario.Start();

                if (!currentScenario.ResultDir.Equals(Path.Combine(_resultsFolder, LRR_FOLDER)))
                {
                    ConsoleWriter.WriteLine("controller failed to write to " + Path.Combine(_resultsFolder, LRR_FOLDER) + " setting result folder to " + currentScenario.ResultDir);
                    _controller_result_dir = new DirectoryInfo(currentScenario.ResultDir).Name;
                    ConsoleWriter.WriteLine("controller reult dir: " + _controller_result_dir);
                }


                if (ret != 0)
                {
                    errorReason = string.Format(Resources.LrStartScenarioFail, scenario, ret);
                    return(false);
                }
                //per scenario timeout stopwatch
                _stopWatch = Stopwatch.StartNew();
                //wait for scenario to end:
                if (!waitForScenario(ref errorReason))
                {
                    //something went wrong during scenario execution, error reason set in errorReason string
                    return(false);
                }
                else
                {//scenario has ended
                    Console.WriteLine(string.Format(Resources.LrScenarioEnded, scenario, _stopWatch.Elapsed.Hours, _stopWatch.Elapsed.Minutes, _stopWatch.Elapsed.Seconds));

                    //collate results
                    collateResults();
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }