2222import static org .assertj .core .api .Assertions .assertThat ;
2323
2424public class UserRequestParserTest {
25+ static final String HEADER_NAME = "X-LB-SSL" ;
2526
2627 @ Test
2728 public void parse () {
2829 UserRequestParser parser = new UserRequestParser ();
2930 String value = "t=1625212448369 D=123" ;
30- ProxyRequestHeader proxyHttpHeader = parser .parseHeader (" HEADER_NAME" , value );
31+ ProxyRequestHeader proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
3132 assertThat (proxyHttpHeader .isValid ()).isTrue ();
3233 assertThat (1625212448369L ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
3334 assertThat (123L ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
34- assertThat ("HEADER_NAME" ).isEqualTo (proxyHttpHeader .getApp ());
35+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
36+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
37+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
38+
39+ // apache
40+ final long currentTimeMillis = System .currentTimeMillis ();
41+ value = "t=" + currentTimeMillis + "999" + " D=12345" ;
42+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
43+ assertThat (proxyHttpHeader .isValid ()).isTrue ();
44+ assertThat (currentTimeMillis ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
45+ assertThat (12345 ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
46+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
47+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
48+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
49+
50+ // nginx
51+ value = "t=1504248328.423 D=0.123" ;
52+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
53+ assertThat (proxyHttpHeader .isValid ()).isTrue ();
54+ assertThat (1504248328423L ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
55+ assertThat (123000L ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
56+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
3557 assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
3658 assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
3759 }
@@ -40,10 +62,31 @@ public void parse() {
4062 public void parseOnlyReceivedTime () {
4163 UserRequestParser parser = new UserRequestParser ();
4264 String value = "t=1625212448369" ;
43- ProxyRequestHeader proxyHttpHeader = parser .parseHeader (" HEADER_NAME" , value );
65+ ProxyRequestHeader proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
4466 assertThat (proxyHttpHeader .isValid ()).isTrue ();
4567 assertThat (1625212448369L ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
4668 assertThat (-1 ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
69+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
70+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
71+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
72+
73+ // apache
74+ final long currentTimeMillis = System .currentTimeMillis ();
75+ value = "t=" + currentTimeMillis + "999" ;
76+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
77+ assertThat (currentTimeMillis ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
78+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
79+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
80+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
81+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
82+
83+ // nginx
84+ value = "t=1504248328.423" ;
85+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
86+ assertThat (proxyHttpHeader .isValid ()).isTrue ();
87+ assertThat (1504248328423L ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
88+ assertThat (-1 ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
89+ assertThat (HEADER_NAME ).isEqualTo (proxyHttpHeader .getApp ());
4790 assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
4891 assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
4992 }
@@ -52,26 +95,35 @@ public void parseOnlyReceivedTime() {
5295 public void parseNotFoundReceived () {
5396 UserRequestParser parser = new UserRequestParser ();
5497 String value = "D=123" ;
55- ProxyRequestHeader proxyHttpHeader = parser .parseHeader (" HEADER_NAME" , value );
98+ ProxyRequestHeader proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
5699 assertThat (proxyHttpHeader .isValid ()).isFalse ();
57100 }
58101
59- @ Test
60- public void parseReceivedSeconds () {
61- UserRequestParser parser = new UserRequestParser ();
62- String value = "t=1625212448.369" ;
63- ProxyRequestHeader proxyHttpHeader = parser .parseHeader ("HEADER_NAME" , value );
64- assertThat (1625212448369L ).isEqualTo (proxyHttpHeader .getReceivedTimeMillis ());
65- assertThat (-1 ).isEqualTo (proxyHttpHeader .getDurationTimeMicroseconds ());
66- assertThat (-1 ).isEqualTo (proxyHttpHeader .getIdlePercent ());
67- assertThat (-1 ).isEqualTo (proxyHttpHeader .getBusyPercent ());
68- }
69-
70102 @ Test
71103 public void parseInvalidReceived () {
72104 UserRequestParser parser = new UserRequestParser ();
73105 String value = "t=1625212448:369" ;
74- ProxyRequestHeader proxyHttpHeader = parser .parseHeader ("HEADER_NAME" , value );
106+ ProxyRequestHeader proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
107+ assertThat (proxyHttpHeader .isValid ()).isFalse ();
108+
109+ value = "t=alpha-1625212448369" ;
110+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
111+ assertThat (proxyHttpHeader .isValid ()).isFalse ();
112+
113+ value = "t=-1625212448369" ;
114+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
115+ assertThat (proxyHttpHeader .isValid ()).isFalse ();
116+
117+ value = "t=1000" ;
118+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
119+ assertThat (proxyHttpHeader .isValid ()).isFalse ();
120+
121+ value = "t=-16252124483691784578975972957897594795479379" ;
122+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
123+ assertThat (proxyHttpHeader .isValid ()).isFalse ();
124+
125+ value = "t=123.456" ;
126+ proxyHttpHeader = parser .parseHeader (HEADER_NAME , value );
75127 assertThat (proxyHttpHeader .isValid ()).isFalse ();
76128 }
77129}
0 commit comments