Skip to content

Commit afb7248

Browse files
committed
rewriting tests to use parse_url instead of callbacks
1 parent 0e24932 commit afb7248

File tree

5 files changed

+52
-8
lines changed

5 files changed

+52
-8
lines changed

src/Http-parser.java.iml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
5+
<content url="file://$MODULE_DIR$">
6+
<sourceFolder url="file://$MODULE_DIR$/impl" isTestSource="false" />
7+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
8+
</content>
9+
<orderEntry type="inheritedJdk" />
10+
<orderEntry type="sourceFolder" forTests="false" />
11+
<orderEntry type="module-library">
12+
<library>
13+
<CLASSES>
14+
<root url="jar://$MODULE_DIR$/../ext/primitives.jar!/" />
15+
</CLASSES>
16+
<JAVADOC />
17+
<SOURCES />
18+
</library>
19+
</orderEntry>
20+
</component>
21+
</module>
22+

src/impl/http_parser/HTTPParserUrl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package http_parser;
22

3+
import http_parser.lolevel.*;
4+
import http_parser.lolevel.HTTPParser;
5+
6+
import java.io.UnsupportedEncodingException;
7+
import java.nio.ByteBuffer;
38
import java.util.Arrays;
49

510
/**
@@ -26,6 +31,17 @@ public HTTPParserUrl(int field_set, int port, FieldData[] field_data){
2631
this.field_data = field_data;
2732
}
2833

34+
public String getFieldValue(HTTPParser.UrlFields field, ByteBuffer data) throws UnsupportedEncodingException {
35+
FieldData fd = this.field_data[field.getIndex()];
36+
if(fd.off == 0 & fd.len == 0) return "";
37+
byte[] dst = new byte[fd.len];
38+
int current_pos = data.position();
39+
data.position(fd.off);
40+
data.get(dst,0,fd.len);
41+
data.position(current_pos);
42+
String v = new String(dst, "UTF8");
43+
return v;
44+
}
2945

3046
@Override
3147
public boolean equals(Object o) {

src/impl/http_parser/lolevel/HTTPParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2110,7 +2110,7 @@ enum HState {
21102110
, connection_keep_alive
21112111
, connection_close
21122112
}
2113-
enum UrlFields {
2113+
public enum UrlFields {
21142114
UF_SCHEMA(0)
21152115
, UF_HOST(1)
21162116
, UF_PORT(2)

src/test/http_parser/lolevel/Message.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.*;
66

77
import http_parser.HTTPMethod;
8+
import http_parser.HTTPParserUrl;
89
import http_parser.ParserType;
910
import http_parser.lolevel.TestLoaderNG.Header;
1011
import http_parser.lolevel.TestLoaderNG.LastHeader;
@@ -50,6 +51,7 @@ public class Message {
5051

5152
public String toString() {
5253
StringBuilder b = new StringBuilder();
54+
b.append("NAME: "); b.append(name);b.append("\n");
5355
b.append("type: "); b.append(type);b.append("\n");
5456
b.append("method: "); b.append(method);b.append("\n");
5557
b.append("status_code: "); b.append(status_code);b.append("\n");
@@ -168,10 +170,7 @@ void parse(HTTPParser p, ParserSettings s, ByteBuffer b) {
168170

169171
TestSettings settings() {
170172
final TestSettings s = new TestSettings();
171-
s.on_path = getCB(request_path, "path", s);
172-
s.on_query_string = getCB(query_string, "query_string", s);
173173
s.on_url = getCB(request_url, "url", s);
174-
s.on_fragment = getCB(fragment, "fragment", s);
175174
s.on_message_begin = new HTTPCallback() {
176175
public int cb (HTTPParser p) {
177176
message_begin_called = true;
@@ -219,10 +218,17 @@ public int cb (HTTPParser p) {
219218
String parsed_frag = null;
220219

221220
try {
222-
parsed_path = new String(s.map.get("path").toArray(), "UTF8");
223-
parsed_query = new String(s.map.get("query_string").toArray(), "UTF8");
224221
parsed_url = new String(s.map.get("url").toArray(), "UTF8");
225-
parsed_frag = new String(s.map.get("fragment").toArray(), "UTF8");
222+
223+
HTTPParserUrl u = new HTTPParserUrl();
224+
HTTPParser pp = new HTTPParser();
225+
ByteBuffer data = Util.buffer(parsed_url);
226+
pp.parse_url(data,false, u);
227+
228+
parsed_path = u.getFieldValue(HTTPParser.UrlFields.UF_PATH, data);
229+
parsed_query = u.getFieldValue(HTTPParser.UrlFields.UF_QUERY, data);
230+
parsed_frag = u.getFieldValue(HTTPParser.UrlFields.UF_FRAGMENT, data);
231+
226232
} catch (java.io.UnsupportedEncodingException uee) {
227233
throw new RuntimeException(uee);
228234
}

src/test/http_parser/lolevel/Util.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static void test_multiple3(Message r1, Message r2, Message r3) {
122122
}
123123

124124
check(0 == read);
125-
check(settings.numCalled == message_count);
125+
check(settings.numCalled == message_count);
126126
}
127127
static void p (Object o) {
128128
System.out.println(o);

0 commit comments

Comments
 (0)