aboutsummaryrefslogtreecommitdiff
path: root/test/org/gnunet/util/ClientServerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/org/gnunet/util/ClientServerTest.java')
-rw-r--r--test/org/gnunet/util/ClientServerTest.java171
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 @@
1package org.gnunet.util; 1package org.gnunet.util;
2 2
3import com.google.common.collect.Lists;
4import org.gnunet.construct.UInt32;
5import org.gnunet.construct.UnionCase;
3import org.gnunet.testing.TestingServer; 6import org.gnunet.testing.TestingServer;
4import org.gnunet.testing.TestingSetup; 7import org.gnunet.testing.TestingSetup;
5import org.junit.Assert; 8import org.junit.Assert;
6import org.junit.Test; 9import org.junit.Test;
7 10
11import java.net.*;
12import java.util.ArrayList;
13
8/** 14/**
9 * ... 15 * ...
10 * 16 *
@@ -12,20 +18,26 @@ import org.junit.Test;
12 */ 18 */
13public class ClientServerTest { 19public 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}