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
28 package org.apache.http.impl.client;
29
30 import java.util.concurrent.TimeUnit;
31
32 import org.apache.http.conn.HttpClientConnectionManager;
33 import org.junit.Assert;
34 import org.junit.Test;
35 import org.mockito.Matchers;
36 import org.mockito.Mockito;
37
38
39
40
41 public class TestIdleConnectionEvictor {
42
43 @Test
44 public void testEvictExpiredAndIdle() throws Exception {
45 final HttpClientConnectionManager cm = Mockito.mock(HttpClientConnectionManager.class);
46 final IdleConnectionEvictor connectionEvictor = new IdleConnectionEvictor(cm,
47 500, TimeUnit.MILLISECONDS, 3, TimeUnit.SECONDS);
48 connectionEvictor.start();
49
50 Thread.sleep(1000);
51
52 Mockito.verify(cm, Mockito.atLeast(1)).closeExpiredConnections();
53 Mockito.verify(cm, Mockito.atLeast(1)).closeIdleConnections(3000, TimeUnit.MILLISECONDS);
54
55 Assert.assertTrue(connectionEvictor.isRunning());
56
57 connectionEvictor.shutdown();
58 connectionEvictor.awaitTermination(1, TimeUnit.SECONDS);
59 Assert.assertFalse(connectionEvictor.isRunning());
60 }
61
62 @Test
63 public void testEvictExpiredOnly() throws Exception {
64 final HttpClientConnectionManager cm = Mockito.mock(HttpClientConnectionManager.class);
65 final IdleConnectionEvictor connectionEvictor = new IdleConnectionEvictor(cm,
66 500, TimeUnit.MILLISECONDS, 0, TimeUnit.SECONDS);
67 connectionEvictor.start();
68
69 Thread.sleep(1000);
70
71 Mockito.verify(cm, Mockito.atLeast(1)).closeExpiredConnections();
72 Mockito.verify(cm, Mockito.never()).closeIdleConnections(Matchers.anyLong(), Matchers.<TimeUnit>any());
73
74 Assert.assertTrue(connectionEvictor.isRunning());
75
76 connectionEvictor.shutdown();
77 connectionEvictor.awaitTermination(1, TimeUnit.SECONDS);
78 Assert.assertFalse(connectionEvictor.isRunning());
79 }
80
81 }