private void KeepAliveAndDisconnected(bool disconnectFromServer) { using (var server = new PopPseudoServer()) { for (var req = 0; req < 2; req++) { server.Start(); /* * request/response */ var request = WebRequest.Create(string.Format("pop://{0}/", server.HostPort)) as PopWebRequest; request.Timeout = 1000; request.Method = "NOOP"; request.KeepAlive = true; // greeting server.EnqueueResponse("+OK\r\n"); // CAPA server.EnqueueResponse("+OK\r\n" + ".\r\n"); // USER server.EnqueueResponse("+OK\r\n"); // PASS server.EnqueueResponse("+OK\r\n"); // NOOP server.EnqueueResponse("+OK\r\n"); using (var response = request.GetResponse()) { } server.DequeueRequest(); // CAPA server.DequeueRequest(); // USER server.DequeueRequest(); // PASS StringAssert.StartsWith("NOOP", server.DequeueRequest(), "request #{0}", req); if (disconnectFromServer) { server.Stop(); } else { // QUIT server.EnqueueResponse("+OK\r\n"); PopSessionManager.DisconnectFrom(request.RequestUri); server.DequeueRequest(); // QUIT server.Stop(); } } } }
private void TestExceptionWhileCloseSession(string test) { using (var server = new PopPseudoServer()) { server.Start(); var request = WebRequest.Create(string.Format("pop://{0}/", server.HostPort)) as PopWebRequest; request.Timeout = 3000; request.ReadWriteTimeout = 3000; request.Method = PopWebRequestMethods.NoOp; request.KeepAlive = false; // greeting server.EnqueueResponse("+OK\r\n"); // CAPA server.EnqueueResponse("+OK\r\n" + ".\r\n"); // USER server.EnqueueResponse("+OK\r\n"); // PASS server.EnqueueResponse("+OK\r\n"); // NOOP server.EnqueueResponse("+OK\r\n"); var asyncResult = request.BeginGetResponse(null, null); Thread.Sleep(500); server.DequeueRequest(); // CAPA server.DequeueRequest(); // USER server.DequeueRequest(); // PASS StringAssert.StartsWith("NOOP", server.DequeueRequest()); if (test == "not responding") // not respond to QUIT ; else if (test == "disconnected") server.Stop(); using (var response = request.EndGetResponse(asyncResult) as PopWebResponse) { Assert.IsTrue(response.Result.Succeeded); } } }
public void TestGetResponseKeepAliveFalse() { using (var server = new PopPseudoServer()) { for (var req = 0; req < 3; req++) { server.Start(); /* * request/response */ var request = WebRequest.Create(string.Format("pop://{0}/", server.HostPort)) as PopWebRequest; request.Timeout = 1000; request.Method = "NOOP"; request.KeepAlive = false; // greeting server.EnqueueResponse("+OK\r\n"); // CAPA server.EnqueueResponse("+OK\r\n" + ".\r\n"); // USER server.EnqueueResponse("+OK\r\n"); // PASS server.EnqueueResponse("+OK\r\n"); // NOOP server.EnqueueResponse("+OK\r\n"); // QUIT server.EnqueueResponse("+OK\r\n"); using (var response = request.GetResponse()) { } server.DequeueRequest(); // CAPA server.DequeueRequest(); // USER server.DequeueRequest(); // PASS StringAssert.StartsWith("NOOP", server.DequeueRequest(), "request #{0}", req); StringAssert.StartsWith("QUIT", server.DequeueRequest(), "request #{0}", req); server.Stop(); } } }