/// <summary> /// Tests a single client connecting to a server, and sending a message to that client. /// </summary> static void Stress_test_6(bool remote, ILogger logger) { if (!remote) { Console.WriteLine("This test is only for a remote setup"); return; } Console.WriteLine("Enter the port number for this test: "); string port = Console.ReadLine(); if (!Int32.TryParse(port, out int finalPort)) { Console.WriteLine("Invalid port, exiting program!"); return; } Console.WriteLine("Enter the IP Address for this test: "); string ipAddress = Console.ReadLine(); ChatServer server = new ChatServer(logger); server.StartServerTest(finalPort, ipAddress); Thread.Sleep(1000); for (int i = 0; i < 20; i++) { ChatClient client = new ChatClient(finalPort); client.ConnectToServer(ipAddress); } Thread.Sleep(5000); server.SendMessage("Hello, everyone!"); Thread.Sleep(3000); server.SendMessage("Goodbye, everyone!"); }
/// <summary> /// Tests a single client connecting to a server, and sending a message to that client. /// </summary> static void Stress_test_1(bool local, ILogger logger1, ILogger logger2) { if (!local) { Console.WriteLine("This test is only for a local setup"); return; } ChatServer server = new ChatServer(logger1); server.StartServerTest(-1, ""); Thread.Sleep(1000); ChatClient client = new ChatClient(11000, logger2); client.ConnectToServer("127.0.0.1"); Thread.Sleep(1000); server.SendMessage("Hello, world!"); }
static void Main(string[] args) { int testID; if (args.Length == 0) { Console.WriteLine("Usage: [server] | [client] | [local #] | [remote #["); return; } if (args[0].Equals("server")) { ChatServer.Main(args); return; } else if (args[0].Equals("client")) { ChatClient.Main(args); return; } else if (!(args[0].Equals("local") || args[0].Equals("remote")) || !Int32.TryParse(args[1], out testID)) { Console.WriteLine($"Your input is invalid somewhere: {args[0]} {args[1]}"); Console.WriteLine("Exiting"); return; } ServiceCollection services = new ServiceCollection(); using (CustomFileLogProvider provider = new CustomFileLogProvider()) { services.AddLogging(configure => { configure.AddConsole(); configure.AddProvider(provider); configure.SetMinimumLevel(LogLevel.Trace); }); using (ServiceProvider serviceProvider = services.BuildServiceProvider()) { ILogger logger = serviceProvider.GetRequiredService <ILogger <ChatServer> >(); ILogger logger2 = serviceProvider.GetRequiredService <ILogger <StressTests> >(); ILogger logger3 = serviceProvider.GetRequiredService <ILogger <ChatClient> >(); switch (testID) { case 1: Stress_test_1(args[0].Equals("local"), logger, logger2); break; case 2: Stress_test_2(args[0].Equals("local"), logger, logger2, logger3); break; case 3: Stress_test_3(args[0].Equals("local"), logger); break; case 4: Stress_test_4(args[0].Equals("local"), logger); break; case 5: Stress_test_5(args[0].Equals("remote"), logger, logger2); break; case 6: Stress_test_6(args[0].Equals("remote"), logger); break; } } } }