public void TestTerminatorRequestFilter() { var appServer = new TestServer(); using (appServer as IDisposable) { var setupResult = appServer.Setup("127.0.0.1", 2012, null, new TerminatorReceiveFilterFactory("##", m_Encoding), new ConsoleLogFactory(), null, null); Assert.IsTrue(setupResult); Assert.IsTrue(appServer.Start()); EndPoint serverAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2012); using (var socket = new Socket(serverAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect(serverAddress); var socketStream = new NetworkStream(socket); using (var reader = new StreamReader(socketStream, m_Encoding, true)) using (var writer = new ConsoleWriter(socketStream, m_Encoding, 1024 * 8)) { var welcomeString = reader.ReadLine(); Assert.AreEqual(string.Format(TestSession.WelcomeMessageFormat, appServer.Name), welcomeString); var chars = new char[] { 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H' }; var rd = new Random(1); var sb = new StringBuilder(); for (var i = 0; i < 100; i++) { sb.Append(chars[rd.Next(0, chars.Length - 1)]); var command = sb.ToString(); writer.Write("ECHO " + command); writer.Write("##"); writer.Flush(); var echoMessage = reader.ReadLine(); Console.WriteLine("C:" + echoMessage); Assert.AreEqual(command, echoMessage); } } } } }
public void TestBrokenCommandBlock() { var configSource = StartBootstrap(DefaultServerConfig); var serverConfig = configSource.Servers.FirstOrDefault(); EndPoint serverAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), serverConfig.Port); using (Socket socket = CreateClientSocket()) { socket.Connect(serverAddress); Stream socketStream = GetSocketStream(socket); using (StreamReader reader = new StreamReader(socketStream, m_Encoding, true)) using (ConsoleWriter writer = new ConsoleWriter(socketStream, m_Encoding, 1024 * 8)) { string welcomeString = reader.ReadLine(); Console.WriteLine("Welcome: " + welcomeString); char[] chars = new char[] { 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H' }; Random rd = new Random(1); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 50; i++) { sb.Append(chars[rd.Next(0, chars.Length - 1)]); } string command = sb.ToString(); var commandSource = ("ECHO " + command).ToList(); while (commandSource.Count > 0) { int readLen = rd.Next(1, commandSource.Count); writer.Write(commandSource.Take(readLen).ToArray()); Console.WriteLine(commandSource.Take(readLen).ToArray()); writer.Flush(); commandSource.RemoveRange(0, readLen); Thread.Sleep(200); } writer.WriteLine(); writer.Flush(); string echoMessage = reader.ReadLine(); Console.WriteLine("C:" + echoMessage); Assert.AreEqual(command, echoMessage); } } }
private void SendRequestC(ConsoleWriter writer, string line) { writer.Write("ECHO " + line.Substring(0, line.Length - 1)); writer.Flush(); Thread.Sleep(100); writer.Write(line.Substring(line.Length - 1) + "#"); writer.Flush(); Thread.Sleep(100); writer.Write("#"); writer.Flush(); }
private void SendRequestB(ConsoleWriter writer, string line) { writer.Write("ECHO " + line); writer.Flush(); Thread.Sleep(100); writer.Write("#"); writer.Flush(); Thread.Sleep(100); writer.Write("#"); writer.Flush(); }
public void TestFastSending() { var configSource = StartBootstrap(DefaultServerConfig, c => new ServerConfig(c) { LogBasicSessionActivity = false, SendingQueueSize = 100 }); var serverConfig = configSource.Servers.FirstOrDefault(); EndPoint serverAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), serverConfig.Port); using (Socket socket = CreateClientSocket()) { socket.Connect(serverAddress); Stream socketStream = GetSocketStream(socket); using (StreamReader reader = new StreamReader(socketStream, m_Encoding, true)) using (ConsoleWriter writer = new ConsoleWriter(socketStream, m_Encoding, 1024 * 8)) { reader.ReadLine(); string sendLine = string.Empty; int i = 0; int testRound = 5000; while (i < testRound) { sendLine = Guid.NewGuid().ToString(); writer.Write("ECHO " + sendLine + "\r\n"); writer.Flush(); var line = reader.ReadLine(); //Console.WriteLine("C: {0}, S: {1}", sendLine, line); if (line == null) { //CustomThreadPoolTaskScheduler.Reset(); } Assert.AreEqual(sendLine, line); i++; } Console.WriteLine("Client sent: {0}", i); Console.WriteLine("Server sent: {0}", ECHO.Sent); ECHO.Reset(); Assert.AreEqual(testRound, i); } } }