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 // TODO: re-add bridge
22 for (boolean bridge
: new Boolean
[] { false }) {
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
, String data
)
61 protected void onError(Exception e
) {
65 int port
= server
.getPort();
66 assertEquals("A port should have been assigned", true, port
> 0);
70 ServerBridge br
= null;
72 br
= new ServerBridge(0, key
, "", port
, key
);
73 br
.setTraceHandler(null);
77 "A port should have been assigned to the bridge",
85 new ConnectActionClientObject(null, port
, key
) {
87 public void action() throws Exception
{
100 assertNotNull("The client action was not run", rec
[0]);
101 assertEquals("ok", rec
[0]);
105 addTest(new TestCase("Simple exchange " + skey
) {
106 final String
[] sent
= new String
[1];
107 final String
[] recd
= new String
[1];
108 final Exception
[] err
= new Exception
[1];
111 public void test() throws Exception
{
112 ServerString server
= new ServerString(this.getName(), 0, key
) {
114 protected String
onRequest(
115 ConnectActionServerString action
, String data
)
122 protected void onError(Exception e
) {
127 int port
= server
.getPort();
131 ServerBridge br
= null;
133 br
= new ServerBridge(0, key
, "", port
, key
);
134 br
.setTraceHandler(null);
141 new ConnectActionClientString(null, port
, key
) {
143 public void action() throws Exception
{
144 recd
[0] = send("ping");
156 if (err
[0] != null) {
157 fail("An exception was thrown: " + err
[0].getMessage(),
161 assertEquals("ping", sent
[0]);
162 assertEquals("pong", recd
[0]);
166 addTest(new TestCase("Multiple exchanges " + skey
) {
167 final String
[] sent
= new String
[3];
168 final String
[] recd
= new String
[3];
169 final Exception
[] err
= new Exception
[1];
172 public void test() throws Exception
{
173 ServerString server
= new ServerString(this.getName(), 0, key
) {
175 protected String
onRequest(
176 ConnectActionServerString action
, String data
)
180 sent
[1] = action
.rec();
185 protected void onError(Exception e
) {
190 int port
= server
.getPort();
194 ServerBridge br
= null;
196 br
= new ServerBridge(0, key
, "", port
, key
);
197 br
.setTraceHandler(null);
204 new ConnectActionClientString(null, port
, key
) {
206 public void action() throws Exception
{
207 recd
[0] = send("ping");
208 recd
[1] = send("ping2");
220 if (err
[0] != null) {
221 fail("An exception was thrown: " + err
[0].getMessage(),
225 assertEquals("ping", sent
[0]);
226 assertEquals("pong", recd
[0]);
227 assertEquals("ping2", sent
[1]);
228 assertEquals("pong2", recd
[1]);
232 addTest(new TestCase("Multiple call from client " + skey
) {
233 final String
[] sent
= new String
[3];
234 final String
[] recd
= new String
[3];
235 final Exception
[] err
= new Exception
[1];
238 public void test() throws Exception
{
239 ServerString server
= new ServerString(this.getName(), 0, key
) {
241 protected String
onRequest(
242 ConnectActionServerString action
, String data
)
244 sent
[Integer
.parseInt(data
)] = data
;
245 return "" + (Integer
.parseInt(data
) * 2);
249 protected void onError(Exception e
) {
254 int port
= server
.getPort();
258 ServerBridge br
= null;
260 br
= new ServerBridge(0, key
, "", port
, key
);
261 br
.setTraceHandler(null);
268 new ConnectActionClientString(null, port
, key
) {
270 public void action() throws Exception
{
271 for (int i
= 0; i
< 3; i
++) {
272 recd
[i
] = send("" + i
);
285 if (err
[0] != null) {
286 fail("An exception was thrown: " + err
[0].getMessage(),
290 assertEquals("0", sent
[0]);
291 assertEquals("0", recd
[0]);
292 assertEquals("1", sent
[1]);
293 assertEquals("2", recd
[1]);
294 assertEquals("2", sent
[2]);
295 assertEquals("4", recd
[2]);
300 private SerialServerTest(final String
[] args
, final String key
,
301 final String skey
, final boolean bridge
, final String sbridge
,
302 final Object title
) {
304 super(title
+ " " + skey
+ sbridge
, args
);
306 addTest(new TestCase("Simple connection " + skey
) {
308 public void test() throws Exception
{
309 final Object
[] rec
= new Object
[1];
311 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
313 protected Object
onRequest(
314 ConnectActionServerObject action
, Object data
)
320 protected void onError(Exception e
) {
324 int port
= server
.getPort();
325 assertEquals("A port should have been assigned", true, port
> 0);
329 ServerBridge br
= null;
331 br
= new ServerBridge(0, key
, "", port
, key
);
332 br
.setTraceHandler(null);
339 new ConnectActionClientObject(null, port
, key
) {
341 public void action() throws Exception
{
346 protected void onError(Exception e
) {
358 assertNotNull("The client action was not run", rec
[0]);
359 assertEquals(true, (boolean) ((Boolean
) rec
[0]));
363 addTest(new TestCase("Simple exchange " + skey
) {
364 final Object
[] sent
= new Object
[1];
365 final Object
[] recd
= new Object
[1];
366 final Exception
[] err
= new Exception
[1];
369 public void test() throws Exception
{
370 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
372 protected Object
onRequest(
373 ConnectActionServerObject action
, Object data
)
380 protected void onError(Exception e
) {
385 int port
= server
.getPort();
389 ServerBridge br
= null;
391 br
= new ServerBridge(0, key
, "", port
, key
);
392 br
.setTraceHandler(null);
399 new ConnectActionClientObject(null, port
, key
) {
401 public void action() throws Exception
{
402 recd
[0] = send("ping");
414 if (err
[0] != null) {
415 fail("An exception was thrown: " + err
[0].getMessage(),
419 assertEquals("ping", sent
[0]);
420 assertEquals("pong", recd
[0]);
424 addTest(new TestCase("Multiple exchanges " + skey
) {
425 final Object
[] sent
= new Object
[3];
426 final Object
[] recd
= new Object
[3];
427 final Exception
[] err
= new Exception
[1];
430 public void test() throws Exception
{
431 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
433 protected Object
onRequest(
434 ConnectActionServerObject action
, Object data
)
438 sent
[1] = action
.rec();
443 protected void onError(Exception e
) {
448 int port
= server
.getPort();
452 ServerBridge br
= null;
454 br
= new ServerBridge(0, key
, "", port
, key
);
455 br
.setTraceHandler(null);
462 new ConnectActionClientObject(null, port
, key
) {
464 public void action() throws Exception
{
465 recd
[0] = send("ping");
466 recd
[1] = send("ping2");
478 if (err
[0] != null) {
479 fail("An exception was thrown: " + err
[0].getMessage(),
483 assertEquals("ping", sent
[0]);
484 assertEquals("pong", recd
[0]);
485 assertEquals("ping2", sent
[1]);
486 assertEquals("pong2", recd
[1]);
490 addTest(new TestCase("Object array of URLs " + skey
) {
491 final Object
[] sent
= new Object
[1];
492 final Object
[] recd
= new Object
[1];
493 final Exception
[] err
= new Exception
[1];
496 public void test() throws Exception
{
497 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
499 protected Object
onRequest(
500 ConnectActionServerObject action
, Object data
)
503 return new Object
[] { "ACK" };
507 protected void onError(Exception e
) {
512 int port
= server
.getPort();
516 ServerBridge br
= null;
518 br
= new ServerBridge(0, key
, "", port
, key
);
519 br
.setTraceHandler(null);
526 new ConnectActionClientObject(null, port
, key
) {
528 public void action() throws Exception
{
529 recd
[0] = send(new Object
[] {
532 "https://example.com/from_client"),
533 "https://example.com/from_client" });
545 if (err
[0] != null) {
546 fail("An exception was thrown: " + err
[0].getMessage(),
550 Object
[] sento
= (Object
[]) (sent
[0]);
551 Object
[] recdo
= (Object
[]) (recd
[0]);
553 assertEquals("key", sento
[0]);
554 assertEquals("https://example.com/from_client",
555 ((URL
) sento
[1]).toString());
556 assertEquals("https://example.com/from_client", sento
[2]);
557 assertEquals("ACK", recdo
[0]);
561 addTest(new TestCase("Multiple call from client " + skey
) {
562 final Object
[] sent
= new Object
[3];
563 final Object
[] recd
= new Object
[3];
564 final Exception
[] err
= new Exception
[1];
567 public void test() throws Exception
{
568 ServerObject server
= new ServerObject(this.getName(), 0, key
) {
570 protected Object
onRequest(
571 ConnectActionServerObject action
, Object data
)
573 sent
[(Integer
) data
] = data
;
574 return ((Integer
) data
) * 2;
578 protected void onError(Exception e
) {
583 int port
= server
.getPort();
587 ServerBridge br
= null;
589 br
= new ServerBridge(0, key
, "", port
, key
);
590 br
.setTraceHandler(null);
597 new ConnectActionClientObject(null, port
, key
) {
599 public void action() throws Exception
{
600 for (int i
= 0; i
< 3; i
++) {
614 if (err
[0] != null) {
615 fail("An exception was thrown: " + err
[0].getMessage(),
619 assertEquals(0, sent
[0]);
620 assertEquals(0, recd
[0]);
621 assertEquals(1, sent
[1]);
622 assertEquals(2, recd
[1]);
623 assertEquals(2, sent
[2]);
624 assertEquals(4, recd
[2]);