1 package be
.nikiroo
.utils
.test_code
;
5 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientObject
;
6 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientString
;
7 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerObject
;
8 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerString
;
9 import be
.nikiroo
.utils
.serial
.server
.ServerBridge
;
10 import be
.nikiroo
.utils
.serial
.server
.ServerObject
;
11 import be
.nikiroo
.utils
.serial
.server
.ServerString
;
12 import be
.nikiroo
.utils
.test
.TestCase
;
13 import be
.nikiroo
.utils
.test
.TestLauncher
;
15 class SerialServerTest
extends TestLauncher
{
16 public SerialServerTest(String
[] args
) {
17 super("SerialServer test", args
);
19 for (String key
: new String
[] { null,
20 "some super secret encryption key" }) {
21 for (boolean bridge
: new Boolean
[] { false, true }) {
22 final String skey
= (key
!= null ?
"(encrypted)"
24 final String sbridge
= (bridge ?
" with bridge" : "");
26 addSeries(new SerialServerTest(args
, key
, skey
, bridge
,
27 sbridge
, "ServerString"));
29 addSeries(new SerialServerTest(args
, key
, skey
, bridge
,
30 sbridge
, new Object() {
32 public String
toString() {
33 return "ServerObject";
40 private SerialServerTest(final String
[] args
, final String key
,
41 final String skey
, final boolean bridge
, final String sbridge
,
44 super(title
+ " " + skey
+ sbridge
, args
);
46 addTest(new TestCase("Simple connection " + skey
) {
48 public void test() throws Exception
{
49 final String
[] rec
= new String
[1];
51 ServerString server
= new ServerString(this.getName(), 0, key
) {
53 protected String
onRequest(
54 ConnectActionServerString action
, String data
)
60 protected void onError(Exception e
) {
64 int port
= server
.getPort();
65 assertEquals("A port should have been assigned", true, port
> 0);
69 ServerBridge br
= null;
71 br
= new ServerBridge(0, key
, "", port
, key
);
72 br
.setTraceHandler(null);
76 "A port should have been assigned to the bridge",
84 new ConnectActionClientObject(null, port
, key
) {
86 public void action() throws Exception
{
99 assertNotNull("The client action was not run", rec
[0]);
100 assertEquals("ok", rec
[0]);
104 addTest(new TestCase("Simple exchange " + skey
) {
105 final String
[] sent
= new String
[1];
106 final String
[] recd
= new String
[1];
107 final Exception
[] err
= new Exception
[1];
110 public void test() throws Exception
{
111 ServerString server
= new ServerString(this.getName(), 0, key
) {
113 protected String
onRequest(
114 ConnectActionServerString action
, String data
)
121 protected void onError(Exception e
) {
126 int port
= server
.getPort();
130 ServerBridge br
= null;
132 br
= new ServerBridge(0, key
, "", port
, key
);
133 br
.setTraceHandler(null);
140 new ConnectActionClientString(null, port
, key
) {
142 public void action() throws Exception
{
143 recd
[0] = send("ping");
155 if (err
[0] != null) {
156 fail("An exception was thrown: " + err
[0].getMessage(),
160 assertEquals("ping", sent
[0]);
161 assertEquals("pong", recd
[0]);
165 addTest(new TestCase("Multiple exchanges " + skey
) {
166 final String
[] sent
= new String
[3];
167 final String
[] recd
= new String
[3];
168 final Exception
[] err
= new Exception
[1];
171 public void test() throws Exception
{
172 ServerString server
= new ServerString(this.getName(), 0, key
) {
174 protected String
onRequest(
175 ConnectActionServerString action
, String data
)
179 sent
[1] = action
.rec();
184 protected void onError(Exception e
) {
189 int port
= server
.getPort();
193 ServerBridge br
= null;
195 br
= new ServerBridge(0, key
, "", port
, key
);
196 br
.setTraceHandler(null);
203 new ConnectActionClientString(null, port
, key
) {
205 public void action() throws Exception
{
206 recd
[0] = send("ping");
207 recd
[1] = send("ping2");
219 if (err
[0] != null) {
220 fail("An exception was thrown: " + err
[0].getMessage(),
224 assertEquals("ping", sent
[0]);
225 assertEquals("pong", recd
[0]);
226 assertEquals("ping2", sent
[1]);
227 assertEquals("pong2", recd
[1]);
231 addTest(new TestCase("Multiple call from client " + skey
) {
232 final String
[] sent
= new String
[3];
233 final String
[] recd
= new String
[3];
234 final Exception
[] err
= new Exception
[1];
237 public void test() throws Exception
{
238 ServerString server
= new ServerString(this.getName(), 0, key
) {
240 protected String
onRequest(
241 ConnectActionServerString action
, String data
)
243 sent
[Integer
.parseInt(data
)] = data
;
244 return "" + (Integer
.parseInt(data
) * 2);
248 protected void onError(Exception e
) {
253 int port
= server
.getPort();
257 ServerBridge br
= null;
259 br
= new ServerBridge(0, key
, "", port
, key
);
260 br
.setTraceHandler(null);
267 new ConnectActionClientString(null, port
, key
) {
269 public void action() throws Exception
{
270 for (int i
= 0; i
< 3; i
++) {
271 recd
[i
] = send("" + i
);
284 if (err
[0] != null) {
285 fail("An exception was thrown: " + err
[0].getMessage(),
289 assertEquals("0", sent
[0]);
290 assertEquals("0", recd
[0]);
291 assertEquals("1", sent
[1]);
292 assertEquals("2", recd
[1]);
293 assertEquals("2", sent
[2]);
294 assertEquals("4", recd
[2]);
299 private SerialServerTest(final String
[] args
, final String key
,
300 final String skey
, final boolean bridge
, final String sbridge
,
301 final Object title
) {
303 super(title
+ " " + skey
+ sbridge
, args
);
305 addTest(new TestCase("Simple connection " + skey
) {
307 public void test() throws Exception
{
308 final Object
[] rec
= new Object
[1];
310 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
312 protected Object
onRequest(
313 ConnectActionServerObject action
, Object data
)
319 protected void onError(Exception e
) {
323 int port
= server
.getPort();
324 assertEquals("A port should have been assigned", true, port
> 0);
328 ServerBridge br
= null;
330 br
= new ServerBridge(0, key
, "", port
, key
);
331 br
.setTraceHandler(null);
338 new ConnectActionClientObject(null, port
, key
) {
340 public void action() throws Exception
{
345 protected void onError(Exception e
) {
357 assertNotNull("The client action was not run", rec
[0]);
358 assertEquals(true, (boolean) ((Boolean
) rec
[0]));
362 addTest(new TestCase("Simple exchange " + skey
) {
363 final Object
[] sent
= new Object
[1];
364 final Object
[] recd
= new Object
[1];
365 final Exception
[] err
= new Exception
[1];
368 public void test() throws Exception
{
369 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
371 protected Object
onRequest(
372 ConnectActionServerObject action
, Object data
)
379 protected void onError(Exception e
) {
384 int port
= server
.getPort();
388 ServerBridge br
= null;
390 br
= new ServerBridge(0, key
, "", port
, key
);
391 br
.setTraceHandler(null);
398 new ConnectActionClientObject(null, port
, key
) {
400 public void action() throws Exception
{
401 recd
[0] = send("ping");
413 if (err
[0] != null) {
414 fail("An exception was thrown: " + err
[0].getMessage(),
418 assertEquals("ping", sent
[0]);
419 assertEquals("pong", recd
[0]);
423 addTest(new TestCase("Multiple exchanges " + skey
) {
424 final Object
[] sent
= new Object
[3];
425 final Object
[] recd
= new Object
[3];
426 final Exception
[] err
= new Exception
[1];
429 public void test() throws Exception
{
430 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
432 protected Object
onRequest(
433 ConnectActionServerObject action
, Object data
)
437 sent
[1] = action
.rec();
442 protected void onError(Exception e
) {
447 int port
= server
.getPort();
451 ServerBridge br
= null;
453 br
= new ServerBridge(0, key
, "", port
, key
);
454 br
.setTraceHandler(null);
461 new ConnectActionClientObject(null, port
, key
) {
463 public void action() throws Exception
{
464 recd
[0] = send("ping");
465 recd
[1] = send("ping2");
477 if (err
[0] != null) {
478 fail("An exception was thrown: " + err
[0].getMessage(),
482 assertEquals("ping", sent
[0]);
483 assertEquals("pong", recd
[0]);
484 assertEquals("ping2", sent
[1]);
485 assertEquals("pong2", recd
[1]);
489 addTest(new TestCase("Object array of URLs " + skey
) {
490 final Object
[] sent
= new Object
[1];
491 final Object
[] recd
= new Object
[1];
492 final Exception
[] err
= new Exception
[1];
495 public void test() throws Exception
{
496 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
498 protected Object
onRequest(
499 ConnectActionServerObject action
, Object data
)
502 return new Object
[] { "ACK" };
506 protected void onError(Exception e
) {
511 int port
= server
.getPort();
515 ServerBridge br
= null;
517 br
= new ServerBridge(0, key
, "", port
, key
);
518 br
.setTraceHandler(null);
525 new ConnectActionClientObject(null, port
, key
) {
527 public void action() throws Exception
{
528 recd
[0] = send(new Object
[] {
531 "https://example.com/from_client"),
532 "https://example.com/from_client" });
544 if (err
[0] != null) {
545 fail("An exception was thrown: " + err
[0].getMessage(),
549 Object
[] sento
= (Object
[]) (sent
[0]);
550 Object
[] recdo
= (Object
[]) (recd
[0]);
552 assertEquals("key", sento
[0]);
553 assertEquals("https://example.com/from_client",
554 ((URL
) sento
[1]).toString());
555 assertEquals("https://example.com/from_client", sento
[2]);
556 assertEquals("ACK", recdo
[0]);
560 addTest(new TestCase("Multiple call from client " + skey
) {
561 final Object
[] sent
= new Object
[3];
562 final Object
[] recd
= new Object
[3];
563 final Exception
[] err
= new Exception
[1];
566 public void test() throws Exception
{
567 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
569 protected Object
onRequest(
570 ConnectActionServerObject action
, Object data
)
572 sent
[(Integer
) data
] = data
;
573 return ((Integer
) data
) * 2;
577 protected void onError(Exception e
) {
582 int port
= server
.getPort();
586 ServerBridge br
= null;
588 br
= new ServerBridge(0, key
, "", port
, key
);
589 br
.setTraceHandler(null);
596 new ConnectActionClientObject(null, port
, key
) {
598 public void action() throws Exception
{
599 for (int i
= 0; i
< 3; i
++) {
613 if (err
[0] != null) {
614 fail("An exception was thrown: " + err
[0].getMessage(),
618 assertEquals(0, sent
[0]);
619 assertEquals(0, recd
[0]);
620 assertEquals(1, sent
[1]);
621 assertEquals(2, recd
[1]);
622 assertEquals(2, sent
[2]);
623 assertEquals(4, recd
[2]);