diff options
Diffstat (limited to 'test/org/gnunet/util/ClientServerTest.java')
-rw-r--r-- | test/org/gnunet/util/ClientServerTest.java | 171 |
1 files changed, 162 insertions, 9 deletions
diff --git a/test/org/gnunet/util/ClientServerTest.java b/test/org/gnunet/util/ClientServerTest.java index f073a3c..f8b5d4e 100644 --- a/test/org/gnunet/util/ClientServerTest.java +++ b/test/org/gnunet/util/ClientServerTest.java | |||
@@ -1,10 +1,16 @@ | |||
1 | package org.gnunet.util; | 1 | package org.gnunet.util; |
2 | 2 | ||
3 | import com.google.common.collect.Lists; | ||
4 | import org.gnunet.construct.UInt32; | ||
5 | import org.gnunet.construct.UnionCase; | ||
3 | import org.gnunet.testing.TestingServer; | 6 | import org.gnunet.testing.TestingServer; |
4 | import org.gnunet.testing.TestingSetup; | 7 | import org.gnunet.testing.TestingSetup; |
5 | import org.junit.Assert; | 8 | import org.junit.Assert; |
6 | import org.junit.Test; | 9 | import org.junit.Test; |
7 | 10 | ||
11 | import java.net.*; | ||
12 | import java.util.ArrayList; | ||
13 | |||
8 | /** | 14 | /** |
9 | * ... | 15 | * ... |
10 | * | 16 | * |
@@ -12,20 +18,26 @@ import org.junit.Test; | |||
12 | */ | 18 | */ |
13 | public class ClientServerTest { | 19 | public class ClientServerTest { |
14 | 20 | ||
21 | @Test | ||
22 | public void test_start_stop() { | ||
23 | Program.configureLogging("DEBUG", null); | ||
24 | final TestingServer srv = new TestingServer(); | ||
25 | srv.server.stopListening(); | ||
26 | } | ||
27 | |||
15 | /** | 28 | /** |
16 | * Test if the server receives a message sent by a client. | 29 | * Test if the server receives a message sent by a client. |
17 | */ | 30 | */ |
18 | @Test(timeout = 1000) | 31 | @Test |
19 | public void test_testing_server() { | 32 | public void test_testing_server() { |
20 | final TestingSetup setup = new TestingSetup(); | ||
21 | Program.configureLogging("DEBUG", null); | 33 | Program.configureLogging("DEBUG", null); |
22 | 34 | ||
23 | final TestingServer srv = setup.createServer(); | 35 | final TestingServer srv = new TestingServer(); |
24 | 36 | ||
25 | final Wrapper<Boolean> gotMessage = new Wrapper<Boolean>(false); | 37 | final Wrapper<Boolean> gotMessage = new Wrapper<Boolean>(false); |
26 | 38 | ||
27 | srv.server.setHandler(new Server.MessageRunabout() { | 39 | srv.server.setHandler(new Server.MessageRunabout() { |
28 | public void visit(TESTMessage tm) { | 40 | public void visit(TestMessage tm) { |
29 | gotMessage.set(true); | 41 | gotMessage.set(true); |
30 | srv.server.destroy(); | 42 | srv.server.destroy(); |
31 | } | 43 | } |
@@ -39,7 +51,7 @@ public class ClientServerTest { | |||
39 | @Override | 51 | @Override |
40 | public void transmit(Connection.MessageSink sink) { | 52 | public void transmit(Connection.MessageSink sink) { |
41 | System.out.println("ntr!"); | 53 | System.out.println("ntr!"); |
42 | sink.send(new TESTMessage()); | 54 | sink.send(new TestMessage()); |
43 | } | 55 | } |
44 | 56 | ||
45 | @Override | 57 | @Override |
@@ -57,13 +69,12 @@ public class ClientServerTest { | |||
57 | 69 | ||
58 | /** | 70 | /** |
59 | * Test what happens when a client calls notifyTransmitReady, but does not send | 71 | * Test what happens when a client calls notifyTransmitReady, but does not send |
60 | * a message in the callback but disconnects. | 72 | * a message in the callback and disconnects. |
61 | */ | 73 | */ |
62 | @Test(timeout = 1000) | 74 | @Test(timeout = 1000) |
63 | public void test_premature_disconnect() { | 75 | public void test_premature_disconnect() { |
64 | final TestingSetup setup = new TestingSetup(); | ||
65 | Program.configureLogging("DEBUG", null); | 76 | Program.configureLogging("DEBUG", null); |
66 | final TestingServer srv = setup.createServer(); | 77 | final TestingServer srv = new TestingServer(); |
67 | 78 | ||
68 | srv.server.notifyDisconnect(new Server.DisconnectHandler() { | 79 | srv.server.notifyDisconnect(new Server.DisconnectHandler() { |
69 | @Override | 80 | @Override |
@@ -79,7 +90,7 @@ public class ClientServerTest { | |||
79 | cli.notifyTransmitReady(RelativeTime.FOREVER,true, 0, new MessageTransmitter() { | 90 | cli.notifyTransmitReady(RelativeTime.FOREVER,true, 0, new MessageTransmitter() { |
80 | @Override | 91 | @Override |
81 | public void transmit(Connection.MessageSink sink) { | 92 | public void transmit(Connection.MessageSink sink) { |
82 | sink.send(new TESTMessage()); | 93 | sink.send(new TestMessage()); |
83 | cli.disconnect(); | 94 | cli.disconnect(); |
84 | } | 95 | } |
85 | 96 | ||
@@ -91,4 +102,146 @@ public class ClientServerTest { | |||
91 | } | 102 | } |
92 | }); | 103 | }); |
93 | } | 104 | } |
105 | |||
106 | |||
107 | @Test | ||
108 | public void test_receiveDone() { | ||
109 | Program.configureLogging("DEBUG", null); | ||
110 | final TestingServer srv = new TestingServer(); | ||
111 | |||
112 | final Wrapper<Integer> msgCount = new Wrapper<Integer>(0); | ||
113 | |||
114 | srv.server.setHandler(new Server.MessageRunabout() { | ||
115 | public void visit(TestMessage tm) { | ||
116 | msgCount.set(msgCount.get() + 1); | ||
117 | if (msgCount.get() == 3) { | ||
118 | getSender().receiveDone(false); | ||
119 | srv.server.stopListening(); | ||
120 | } else { | ||
121 | getSender().receiveDone(true); | ||
122 | } | ||
123 | } | ||
124 | }); | ||
125 | |||
126 | Scheduler.run(new Scheduler.Task() { | ||
127 | @Override | ||
128 | public void run(Scheduler.RunContext ctx) { | ||
129 | final Client cli = srv.createClient(); | ||
130 | |||
131 | cli.transmitWhenReady(RelativeTime.FOREVER, new TestMessage(), new Continuation() { | ||
132 | @Override | ||
133 | public void cont(boolean success) { | ||
134 | cli.transmitWhenReady(RelativeTime.FOREVER, new TestMessage(), new Continuation() { | ||
135 | @Override | ||
136 | public void cont(boolean success) { | ||
137 | cli.transmitWhenReady(RelativeTime.FOREVER, new TestMessage(), null); | ||
138 | } | ||
139 | }); | ||
140 | } | ||
141 | }); | ||
142 | } | ||
143 | }); | ||
144 | } | ||
145 | |||
146 | @Test | ||
147 | public void test_acceptFromAddresses() { | ||
148 | Program.configureLogging("DEBUG", null); | ||
149 | |||
150 | InetAddress localhost = null; | ||
151 | try { | ||
152 | localhost = Inet4Address.getLocalHost(); | ||
153 | } catch (UnknownHostException e) { | ||
154 | Assert.fail(); | ||
155 | } | ||
156 | |||
157 | // does this work on all operating systems? | ||
158 | SocketAddress addr = new InetSocketAddress(localhost, 0); | ||
159 | |||
160 | Server server = new Server(Lists.newArrayList(addr), RelativeTime.FOREVER, false); | ||
161 | |||
162 | server.destroy(); | ||
163 | |||
164 | } | ||
165 | |||
166 | |||
167 | @Test | ||
168 | public void test_keep_drop() { | ||
169 | Program.configureLogging("DEBUG", null); | ||
170 | final TestingServer srv = new TestingServer(); | ||
171 | |||
172 | final Wrapper<Integer> msgCount = new Wrapper<Integer>(0); | ||
173 | |||
174 | |||
175 | |||
176 | srv.server.setHandler(new Server.MessageRunabout() { | ||
177 | public void visit(TestMessage tm) { | ||
178 | srv.server.stopListening(); | ||
179 | if (msgCount.get() == 0) { | ||
180 | getSender().keep(); | ||
181 | getSender().drop(); | ||
182 | getSender().receiveDone(true); | ||
183 | } else if (msgCount.get() == 1) { | ||
184 | getSender().receiveDone(false); | ||
185 | |||
186 | } else { | ||
187 | Assert.fail(); | ||
188 | } | ||
189 | |||
190 | msgCount.set(msgCount.get() + 1); | ||
191 | } | ||
192 | }); | ||
193 | |||
194 | Scheduler.run(new Scheduler.Task() { | ||
195 | @Override | ||
196 | public void run(Scheduler.RunContext ctx) { | ||
197 | final Client cli = srv.createClient(); | ||
198 | cli.transmitWhenReady(new TestMessage(), new Continuation() { | ||
199 | @Override | ||
200 | public void cont(boolean success) { | ||
201 | cli.transmitWhenReady(new TestMessage(), null); | ||
202 | } | ||
203 | }); | ||
204 | } | ||
205 | }); | ||
206 | } | ||
207 | |||
208 | |||
209 | |||
210 | /** | ||
211 | * test if markMonitor / soft shutdown works. | ||
212 | */ | ||
213 | @Test | ||
214 | public void test_monitor_clients() { | ||
215 | Program.configureLogging("DEBUG", null); | ||
216 | final TestingServer srv = new TestingServer(); | ||
217 | |||
218 | final Wrapper<Integer> msgCount = new Wrapper<Integer>(0); | ||
219 | |||
220 | srv.server.setHandler(new Server.MessageRunabout() { | ||
221 | public void visit(TestMessage tm) { | ||
222 | if (msgCount.get() == 0) { | ||
223 | getSender().markMonitor(); | ||
224 | getSender().receiveDone(true); | ||
225 | } else if (msgCount.get() == 1) { | ||
226 | srv.server.stopListening(); | ||
227 | getSender().receiveDone(false); | ||
228 | } else { | ||
229 | Assert.fail(); | ||
230 | } | ||
231 | |||
232 | msgCount.set(msgCount.get() + 1); | ||
233 | } | ||
234 | }); | ||
235 | |||
236 | Scheduler.run(new Scheduler.Task() { | ||
237 | @Override | ||
238 | public void run(Scheduler.RunContext ctx) { | ||
239 | final Client cli1 = srv.createClient(); | ||
240 | final Client cli2 = srv.createClient(); | ||
241 | |||
242 | cli1.transmitWhenReady(new TestMessage(), null); | ||
243 | cli2.transmitWhenReady(new TestMessage(), null); | ||
244 | } | ||
245 | }); | ||
246 | } | ||
94 | } | 247 | } |