1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.http.impl.client;
28
29 import org.apache.http.HttpResponse;
30 import org.apache.http.HttpStatus;
31 import org.apache.http.HttpVersion;
32 import org.apache.http.conn.ConnectionKeepAliveStrategy;
33 import org.apache.http.message.BasicHttpResponse;
34 import org.apache.http.message.BasicStatusLine;
35 import org.apache.http.protocol.BasicHttpContext;
36 import org.apache.http.protocol.HttpContext;
37 import org.junit.Assert;
38 import org.junit.Test;
39
40
41
42
43 public class TestDefaultConnKeepAliveStrategy {
44
45 @Test(expected=IllegalArgumentException.class)
46 public void testIllegalResponseArg() throws Exception {
47 final HttpContext context = new BasicHttpContext(null);
48 final ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy();
49 keepAliveStrat.getKeepAliveDuration(null, context);
50 }
51
52 @Test
53 public void testNoKeepAliveHeader() throws Exception {
54 final HttpContext context = new BasicHttpContext(null);
55 final HttpResponse response = new BasicHttpResponse(
56 new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"));
57 final ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy();
58 final long d = keepAliveStrat.getKeepAliveDuration(response, context);
59 Assert.assertEquals(-1, d);
60 }
61
62 @Test
63 public void testEmptyKeepAliveHeader() throws Exception {
64 final HttpContext context = new BasicHttpContext(null);
65 final HttpResponse response = new BasicHttpResponse(
66 new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"));
67 response.addHeader("Keep-Alive", "timeout, max=20");
68 final ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy();
69 final long d = keepAliveStrat.getKeepAliveDuration(response, context);
70 Assert.assertEquals(-1, d);
71 }
72
73 @Test
74 public void testInvalidKeepAliveHeader() throws Exception {
75 final HttpContext context = new BasicHttpContext(null);
76 final HttpResponse response = new BasicHttpResponse(
77 new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"));
78 response.addHeader("Keep-Alive", "timeout=whatever, max=20");
79 final ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy();
80 final long d = keepAliveStrat.getKeepAliveDuration(response, context);
81 Assert.assertEquals(-1, d);
82 }
83
84 @Test
85 public void testKeepAliveHeader() throws Exception {
86 final HttpContext context = new BasicHttpContext(null);
87 final HttpResponse response = new BasicHttpResponse(
88 new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"));
89 response.addHeader("Keep-Alive", "timeout=300, max=20");
90 final ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy();
91 final long d = keepAliveStrat.getKeepAliveDuration(response, context);
92 Assert.assertEquals(300000, d);
93 }
94
95 }