1 package be
.nikiroo
.utils
.test_code
;
5 import be
.nikiroo
.utils
.Version
;
6 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientObject
;
7 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientString
;
8 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerObject
;
9 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerString
;
10 import be
.nikiroo
.utils
.serial
.server
.ServerBridge
;
11 import be
.nikiroo
.utils
.serial
.server
.ServerObject
;
12 import be
.nikiroo
.utils
.serial
.server
.ServerString
;
13 import be
.nikiroo
.utils
.test
.TestCase
;
14 import be
.nikiroo
.utils
.test
.TestLauncher
;
16 class SerialServerTest
extends TestLauncher
{
17 public SerialServerTest(String
[] args
) {
18 super("SerialServer test", args
);
20 for (String key
: new String
[] { null, "",
21 "some real key with a few bytes in it" }) {
22 for (boolean bridge
: new Boolean
[] { false, true }) {
23 final String skey
= (key
!= null ?
"(encrypted)"
25 final String sbridge
= (bridge ?
" with bridge" : "");
27 addSeries(new SerialServerTest(args
, key
, skey
, bridge
,
28 sbridge
, "ServerString"));
30 addSeries(new SerialServerTest(args
, key
, skey
, bridge
,
31 sbridge
, new Object() {
33 public String
toString() {
34 return "ServerObject";
41 private SerialServerTest(final String
[] args
, final String key
,
42 final String skey
, final boolean bridge
, final String sbridge
,
45 super(title
+ " " + skey
+ sbridge
, args
);
47 addTest(new TestCase("Simple connection " + skey
) {
49 public void test() throws Exception
{
50 final String
[] rec
= new String
[1];
52 ServerString server
= new ServerString(this.getName(), 0, key
) {
54 protected String
onRequest(
55 ConnectActionServerString action
,
56 Version clientVersion
, String data
)
62 protected void onError(Exception e
) {
66 int port
= server
.getPort();
67 assertEquals("A port should have been assigned", true, port
> 0);
71 ServerBridge br
= null;
73 br
= new ServerBridge(0, key
, "", port
, key
);
74 br
.setTraceHandler(null);
78 "A port should have been assigned to the bridge",
86 new ConnectActionClientObject(null, port
, key
) {
88 public void action(Version serverVersion
)
102 assertNotNull("The client action was not run", rec
[0]);
103 assertEquals("ok", rec
[0]);
107 addTest(new TestCase("Simple exchange " + skey
) {
108 final String
[] sent
= new String
[1];
109 final String
[] recd
= new String
[1];
110 final Exception
[] err
= new Exception
[1];
113 public void test() throws Exception
{
114 ServerString server
= new ServerString(this.getName(), 0, key
) {
116 protected String
onRequest(
117 ConnectActionServerString action
,
118 Version clientVersion
, String data
)
125 protected void onError(Exception e
) {
130 int port
= server
.getPort();
134 ServerBridge br
= null;
136 br
= new ServerBridge(0, key
, "", port
, key
);
137 br
.setTraceHandler(null);
144 new ConnectActionClientString(null, port
, key
) {
146 public void action(Version serverVersion
)
148 recd
[0] = send("ping");
160 if (err
[0] != null) {
161 fail("An exception was thrown: " + err
[0].getMessage());
164 assertEquals("ping", sent
[0]);
165 assertEquals("pong", recd
[0]);
169 addTest(new TestCase("Multiple exchanges " + skey
) {
170 final String
[] sent
= new String
[3];
171 final String
[] recd
= new String
[3];
172 final Exception
[] err
= new Exception
[1];
175 public void test() throws Exception
{
176 ServerString server
= new ServerString(this.getName(), 0, key
) {
178 protected String
onRequest(
179 ConnectActionServerString action
,
180 Version clientVersion
, String data
)
184 sent
[1] = action
.rec();
189 protected void onError(Exception e
) {
194 int port
= server
.getPort();
198 ServerBridge br
= null;
200 br
= new ServerBridge(0, key
, "", port
, key
);
201 br
.setTraceHandler(null);
208 new ConnectActionClientString(null, port
, key
) {
210 public void action(Version serverVersion
)
212 recd
[0] = send("ping");
213 recd
[1] = send("ping2");
225 if (err
[0] != null) {
226 fail("An exception was thrown: " + err
[0].getMessage());
229 assertEquals("ping", sent
[0]);
230 assertEquals("pong", recd
[0]);
231 assertEquals("ping2", sent
[1]);
232 assertEquals("pong2", recd
[1]);
236 addTest(new TestCase("Multiple call from client " + skey
) {
237 final String
[] sent
= new String
[3];
238 final String
[] recd
= new String
[3];
239 final Exception
[] err
= new Exception
[1];
242 public void test() throws Exception
{
243 ServerString server
= new ServerString(this.getName(), 0, key
) {
245 protected String
onRequest(
246 ConnectActionServerString action
,
247 Version clientVersion
, String data
)
249 sent
[Integer
.parseInt(data
)] = data
;
250 return "" + (Integer
.parseInt(data
) * 2);
254 protected void onError(Exception e
) {
259 int port
= server
.getPort();
263 ServerBridge br
= null;
265 br
= new ServerBridge(0, key
, "", port
, key
);
266 br
.setTraceHandler(null);
273 new ConnectActionClientString(null, port
, key
) {
275 public void action(Version serverVersion
)
277 for (int i
= 0; i
< 3; i
++) {
278 recd
[i
] = send("" + i
);
291 if (err
[0] != null) {
292 fail("An exception was thrown: " + err
[0].getMessage());
295 assertEquals("0", sent
[0]);
296 assertEquals("0", recd
[0]);
297 assertEquals("1", sent
[1]);
298 assertEquals("2", recd
[1]);
299 assertEquals("2", sent
[2]);
300 assertEquals("4", recd
[2]);
305 private SerialServerTest(final String
[] args
, final String key
,
306 final String skey
, final boolean bridge
, final String sbridge
,
307 final Object title
) {
309 super(title
+ " " + skey
+ sbridge
, args
);
311 addTest(new TestCase("Simple connection " + skey
) {
313 public void test() throws Exception
{
314 final Object
[] rec
= new Object
[1];
316 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
318 protected Object
onRequest(
319 ConnectActionServerObject action
,
320 Version clientVersion
, Object data
)
326 protected void onError(Exception e
) {
330 int port
= server
.getPort();
331 assertEquals("A port should have been assigned", true, port
> 0);
335 ServerBridge br
= null;
337 br
= new ServerBridge(0, key
, "", port
, key
);
338 br
.setTraceHandler(null);
345 new ConnectActionClientObject(null, port
, key
) {
347 public void action(Version serverVersion
)
353 protected void onError(Exception e
) {
365 assertNotNull("The client action was not run", rec
[0]);
366 assertEquals(true, (boolean) ((Boolean
) rec
[0]));
370 addTest(new TestCase("Simple exchange " + skey
) {
371 final Object
[] sent
= new Object
[1];
372 final Object
[] recd
= new Object
[1];
373 final Exception
[] err
= new Exception
[1];
376 public void test() throws Exception
{
377 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
379 protected Object
onRequest(
380 ConnectActionServerObject action
,
381 Version clientVersion
, Object data
)
388 protected void onError(Exception e
) {
393 int port
= server
.getPort();
397 ServerBridge br
= null;
399 br
= new ServerBridge(0, key
, "", port
, key
);
400 br
.setTraceHandler(null);
407 new ConnectActionClientObject(null, port
, key
) {
409 public void action(Version serverVersion
)
411 recd
[0] = send("ping");
423 if (err
[0] != null) {
424 fail("An exception was thrown: " + err
[0].getMessage());
427 assertEquals("ping", sent
[0]);
428 assertEquals("pong", recd
[0]);
432 addTest(new TestCase("Multiple exchanges " + skey
) {
433 final Object
[] sent
= new Object
[3];
434 final Object
[] recd
= new Object
[3];
435 final Exception
[] err
= new Exception
[1];
438 public void test() throws Exception
{
439 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
441 protected Object
onRequest(
442 ConnectActionServerObject action
,
443 Version clientVersion
, Object data
)
447 sent
[1] = action
.rec();
452 protected void onError(Exception e
) {
457 int port
= server
.getPort();
461 ServerBridge br
= null;
463 br
= new ServerBridge(0, key
, "", port
, key
);
464 br
.setTraceHandler(null);
471 new ConnectActionClientObject(null, port
, key
) {
473 public void action(Version serverVersion
)
475 recd
[0] = send("ping");
476 recd
[1] = send("ping2");
488 if (err
[0] != null) {
489 fail("An exception was thrown: " + err
[0].getMessage());
492 assertEquals("ping", sent
[0]);
493 assertEquals("pong", recd
[0]);
494 assertEquals("ping2", sent
[1]);
495 assertEquals("pong2", recd
[1]);
499 addTest(new TestCase("Object array of URLs " + skey
) {
500 final Object
[] sent
= new Object
[1];
501 final Object
[] recd
= new Object
[1];
502 final Exception
[] err
= new Exception
[1];
505 public void test() throws Exception
{
506 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
508 protected Object
onRequest(
509 ConnectActionServerObject action
,
510 Version clientVersion
, Object data
)
513 return new Object
[] { "ACK" };
517 protected void onError(Exception e
) {
522 int port
= server
.getPort();
526 ServerBridge br
= null;
528 br
= new ServerBridge(0, key
, "", port
, key
);
529 br
.setTraceHandler(null);
536 new ConnectActionClientObject(null, port
, key
) {
538 public void action(Version serverVersion
)
540 recd
[0] = send(new Object
[] {
543 "https://example.com/from_client"),
544 "https://example.com/from_client" });
556 if (err
[0] != null) {
557 fail("An exception was thrown: " + err
[0].getMessage());
560 Object
[] sento
= (Object
[]) (sent
[0]);
561 Object
[] recdo
= (Object
[]) (recd
[0]);
563 assertEquals("key", sento
[0]);
564 assertEquals("https://example.com/from_client",
565 ((URL
) sento
[1]).toString());
566 assertEquals("https://example.com/from_client", sento
[2]);
567 assertEquals("ACK", recdo
[0]);
571 addTest(new TestCase("Multiple call from client " + skey
) {
572 final Object
[] sent
= new Object
[3];
573 final Object
[] recd
= new Object
[3];
574 final Exception
[] err
= new Exception
[1];
577 public void test() throws Exception
{
578 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
580 protected Object
onRequest(
581 ConnectActionServerObject action
,
582 Version clientVersion
, Object data
)
584 sent
[(Integer
) data
] = data
;
585 return ((Integer
) data
) * 2;
589 protected void onError(Exception e
) {
594 int port
= server
.getPort();
598 ServerBridge br
= null;
600 br
= new ServerBridge(0, key
, "", port
, key
);
601 br
.setTraceHandler(null);
608 new ConnectActionClientObject(null, port
, key
) {
610 public void action(Version serverVersion
)
612 for (int i
= 0; i
< 3; i
++) {
626 if (err
[0] != null) {
627 fail("An exception was thrown: " + err
[0].getMessage());
630 assertEquals(0, sent
[0]);
631 assertEquals(0, recd
[0]);
632 assertEquals(1, sent
[1]);
633 assertEquals(2, recd
[1]);
634 assertEquals(2, sent
[2]);
635 assertEquals(4, recd
[2]);