예제 #1
0
        public void Run()
        {
            ConsoleWriter.ShowMaximum();

            ConsoleWriter.WriteLine("Welcome to SignalR Test Tool !!", Color.Yellow);

            ConsoleWriter.WriteLine();

            ConsolePosition.MainMenuLastPosition = new Point(Console.CursorLeft, Console.CursorTop);

            var consoleFlow = new ConsoleWizard
            {
                CursorPositionChanged = OnCursorPositionChanged
            };

            var menuSelectionPage = new ConsoleOptionsPage("What would you like to do ?", ConsoleColor.Cyan);

            menuSelectionPage.AddOption("Start a new load test");
            menuSelectionPage.AddOption("Start sending message on an running load");
            menuSelectionPage.AddOption("Stop the load test");
            menuSelectionPage.AddOption("Stop sending message on an running load");
            consoleFlow.AddPage(menuSelectionPage);

            menuSelectionPage.EnableOption(0);
            menuSelectionPage.DisableOption(1);
            menuSelectionPage.DisableOption(2);
            menuSelectionPage.DisableOption(3);

            MenuSelectedCommand command = null;

            do
            {
                ConsoleWriter.ClearConsole(ConsolePosition.MainMenuLastPosition.Y);

                ConsoleWriter.WriteLine();

                var data = consoleFlow.Run();

                var selecteIndex = data.GetMainMenuSelectedIndex();

                if (selecteIndex == 0)
                {
                    command = new MenuSelectedCommand(menuSelectionPage);
                }

                if (selecteIndex.HasValue)
                {
                    command.Execute(selecteIndex.Value);
                }
            } while (true);
        }
예제 #2
0
        public void Execute(int selectedIndex)
        {
            var operationType = Enum.Parse(typeof(OperationType), selectedIndex.ToString());

            switch (operationType)
            {
            case OperationType.StartLoadTest:

                var loadTestFlow       = new LoadTestFlow();
                var loadTestFlowResult = loadTestFlow.Run();
                var loadArgument       = loadTestFlowResult.ConvertToLoadArgument();
                var loadTestCommand    = new NewLoadTestCommand();
                agent = loadTestCommand.Execute(loadArgument);

                optionsPage.DisableOption(0);
                optionsPage.EnableOption(1);
                optionsPage.EnableOption(2);
                optionsPage.DisableOption(3);

                break;

            case OperationType.StartStressTest:

                if (agent != null)
                {
                    var stressTestFlow       = new StressTestFlow(agent.RegisteredMethods);
                    var stressTestFlowResult = stressTestFlow.Run();
                    if (stressTestFlowResult != null)
                    {
                        var messageSendArgument = stressTestFlowResult.ConvertToStressArgument();
                        var stressTestCommand   = new NewStressTestCommand(agent);
                        stressTestCommand.Execute(messageSendArgument);

                        optionsPage.DisableOption(0);
                        optionsPage.DisableOption(1);
                        optionsPage.EnableOption(2);
                        optionsPage.EnableOption(3);
                    }
                }

                break;

            case OperationType.StopLoadTest:

                if (agent != null)
                {
                    var exitCommand = new StopLoadTestCommand(agent);
                    optionsPage.DisableOption(0);
                    optionsPage.DisableOption(1);
                    optionsPage.DisableOption(2);
                    optionsPage.DisableOption(3);

                    exitCommand.Execute();

                    optionsPage.EnableOption(0);
                }
                break;

            case OperationType.StopStressTest:

                if (agent != null)
                {
                    var exitCommand = new StopStressTestCommand(agent);

                    optionsPage.DisableOption(1);
                    optionsPage.DisableOption(3);

                    exitCommand.Execute();

                    optionsPage.EnableOption(1);
                    optionsPage.DisableOption(3);
                }
                break;
            }
        }