1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.grinder.plugin.http.tcpproxyfilter;
23
24 import junit.framework.TestCase;
25
26 import net.grinder.testutility.RandomStubFactory;
27 import net.grinder.tools.tcpproxy.ConnectionDetails;
28 import net.grinder.tools.tcpproxy.EndPoint;
29
30
31
32
33
34
35
36 public class TestConnectionCache extends TestCase {
37
38 final RandomStubFactory<ConnectionHandlerFactory>
39 m_connectionHandlerFactoryStubFactory =
40 RandomStubFactory.create(ConnectionHandlerFactory.class);
41 final ConnectionHandlerFactory m_connectionHandlerFactory =
42 m_connectionHandlerFactoryStubFactory.getStub();
43
44 private final ConnectionDetails m_connectionDetails =
45 new ConnectionDetails(
46 new EndPoint("hostA", 80),
47 new EndPoint("hostB", 80),
48 false);
49
50 private final ConnectionDetails m_connectionDetails2 =
51 new ConnectionDetails(
52 new EndPoint("hostA", 8080),
53 new EndPoint("hostB", 80),
54 false);
55
56 public void testConstructAndDispose() throws Exception {
57 final ConnectionCache connectionMap =
58 new ConnectionCache(m_connectionHandlerFactory);
59
60 connectionMap.dispose();
61
62 m_connectionHandlerFactoryStubFactory.assertNoMoreCalls();
63 }
64
65 public void testConnectionCache() throws Exception {
66 final ConnectionCache connectionCache = new ConnectionCache(
67 m_connectionHandlerFactory);
68
69 connectionCache.open(m_connectionDetails);
70 m_connectionHandlerFactoryStubFactory.assertSuccess("create",
71 m_connectionDetails);
72
73 try {
74 connectionCache.open(m_connectionDetails);
75 fail("Expected IllegalArgumentException");
76 }
77 catch (IllegalArgumentException e) {
78 }
79
80 connectionCache.close(m_connectionDetails);
81
82 try {
83 connectionCache.close(m_connectionDetails);
84 fail("Expected IllegalArgumentException");
85 }
86 catch (IllegalArgumentException e) {
87 }
88
89 try {
90 connectionCache.request(m_connectionDetails, new byte[100], 56);
91 fail("Expected IllegalArgumentException");
92 }
93 catch (IllegalArgumentException e) {
94 }
95
96 try {
97 connectionCache.response(m_connectionDetails.getOtherEnd(),
98 new byte[100], 56);
99 fail("Expected IllegalArgumentException");
100 }
101 catch (IllegalArgumentException e) {
102 }
103
104 connectionCache.dispose();
105
106 final ConnectionCache connectionCache2 = new ConnectionCache(
107 m_connectionHandlerFactory);
108
109 connectionCache2.open(m_connectionDetails);
110 m_connectionHandlerFactoryStubFactory.assertSuccess("create",
111 m_connectionDetails);
112
113 connectionCache2.request(m_connectionDetails, new byte[10], 0);
114 connectionCache2.request(m_connectionDetails, new byte[20], 0);
115
116 try {
117 connectionCache.request(m_connectionDetails2, new byte[10], 0);
118 fail("Expected IllegalArgumentException");
119 }
120 catch (IllegalArgumentException e) {
121 }
122
123 connectionCache2.response(m_connectionDetails.getOtherEnd(), new byte[20],
124 0);
125
126 try {
127 connectionCache.response(m_connectionDetails2.getOtherEnd(),
128 new byte[10], 0);
129 fail("Expected IllegalArgumentException");
130 }
131 catch (IllegalArgumentException e) {
132 }
133
134 connectionCache2.dispose();
135
136 try {
137 connectionCache.request(m_connectionDetails, new byte[10], 5);
138 fail("Expected IllegalArgumentException");
139 }
140 catch (IllegalArgumentException e) {
141 }
142
143 try {
144 connectionCache.response(m_connectionDetails.getOtherEnd(), new byte[10],
145 5);
146 fail("Expected IllegalArgumentException");
147 }
148 catch (IllegalArgumentException e) {
149 }
150
151 m_connectionHandlerFactoryStubFactory.assertNoMoreCalls();
152 }
153 }