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); }
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; } }