readMethodUriLine优化
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
package org.redkale.test.httpparser;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.ByteBuffer;
|
||||
import org.junit.jupiter.api.*;
|
||||
import org.redkale.net.http.HttpContext;
|
||||
@@ -23,6 +24,7 @@ public class HttpRequestTest {
|
||||
test.run1();
|
||||
test.run2();
|
||||
test.run3();
|
||||
test.run4();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -40,7 +42,6 @@ public class HttpRequestTest {
|
||||
int r1 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), -1);
|
||||
Assertions.assertEquals(1, r1);
|
||||
Assertions.assertEquals(3, req.headerHalfLen());
|
||||
System.out.println(req.headerHalfLen());
|
||||
|
||||
text1 = REQ_TEXT.substring(sublen, sublen + 7);
|
||||
int r2 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), -1);
|
||||
@@ -68,7 +69,6 @@ public class HttpRequestTest {
|
||||
int r1 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), -1);
|
||||
Assertions.assertEquals(1, r1);
|
||||
Assertions.assertEquals(3, req.headerHalfLen());
|
||||
System.out.println(req.headerHalfLen());
|
||||
|
||||
text1 = REQ_TEXT.substring(sublen, sublen + 7);
|
||||
int r2 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), -1);
|
||||
@@ -98,7 +98,6 @@ public class HttpRequestTest {
|
||||
int r1 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), phLength);
|
||||
Assertions.assertEquals(1, r1);
|
||||
Assertions.assertEquals(3, req.headerHalfLen());
|
||||
System.out.println(req.headerHalfLen());
|
||||
|
||||
text1 = REQ_TEXT.substring(sublen, sublen + 7);
|
||||
int r2 = req.readHeader(ByteBuffer.wrap(text1.getBytes()), phLength);
|
||||
@@ -110,6 +109,57 @@ public class HttpRequestTest {
|
||||
Assertions.assertEquals(0, r3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void run4() throws Exception {
|
||||
HttpContext.HttpContextConfig httpConfig = new HttpContext.HttpContextConfig();
|
||||
httpConfig.lazyHeader = true;
|
||||
httpConfig.sameHeader = true;
|
||||
httpConfig.maxHeader = 16 * 1024;
|
||||
httpConfig.maxBody = 64 * 1024;
|
||||
HttpContext context = new HttpContext(httpConfig);
|
||||
Method method = HttpContext.class.getDeclaredMethod("addUriPath", String.class);
|
||||
method.setAccessible(true);
|
||||
method.invoke(context, "/test/sleep200");
|
||||
method.invoke(context, "/test/aaa");
|
||||
|
||||
HttpRequestX req = new HttpRequestX(context);
|
||||
String text = "GET /test/azzzz HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
int r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/azzzz", req.getRequestPath());
|
||||
|
||||
req = new HttpRequestX(context);
|
||||
text = "GET /test/aaaa HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/aaaa", req.getRequestPath());
|
||||
|
||||
req = new HttpRequestX(context);
|
||||
text = "GET /test/sleep200 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/sleep200", req.getRequestPath());
|
||||
|
||||
req = new HttpRequestX(context);
|
||||
text = "GET /test/sleep201 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/sleep201", req.getRequestPath());
|
||||
|
||||
req = new HttpRequestX(context);
|
||||
text = "GET /test/sleep20? HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/sleep20", req.getRequestPath());
|
||||
|
||||
req = new HttpRequestX(context);
|
||||
text = "GET /test/sleep20?n=haha HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n";
|
||||
r1 = req.readHeader(ByteBuffer.wrap(text.getBytes()), 0);
|
||||
Assertions.assertEquals(0, r1);
|
||||
Assertions.assertEquals("/test/sleep20", req.getRequestPath());
|
||||
Assertions.assertEquals("haha", req.getParameter("n"));
|
||||
}
|
||||
|
||||
public static class HttpRequestX extends HttpRequest {
|
||||
|
||||
public HttpRequestX(HttpContext context) {
|
||||
|
||||
Reference in New Issue
Block a user