1 package be
.nikiroo
.utils
.test
;
3 import be
.nikiroo
.utils
.Version
;
4 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientObject
;
5 import be
.nikiroo
.utils
.serial
.server
.ConnectActionClientString
;
6 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerObject
;
7 import be
.nikiroo
.utils
.serial
.server
.ConnectActionServerString
;
8 import be
.nikiroo
.utils
.serial
.server
.ServerBridge
;
9 import be
.nikiroo
.utils
.serial
.server
.ServerObject
;
10 import be
.nikiroo
.utils
.serial
.server
.ServerString
;
12 class SerialServerTest
extends TestLauncher
{
13 private TestLauncher
createServerStringTestCases(final String
[] args
,
14 final boolean ssl
, final boolean bridge
) {
15 final String ssls
= (ssl ?
"(ssl)" : "(plain text)");
16 final String bridges
= (bridge ?
" with bridge" : "");
17 TestLauncher series
= new TestLauncher(
18 "ServerString " + ssls
+ bridges
, args
);
20 series
.addTest(new TestCase("Simple connection " + ssls
) {
22 public void test() throws Exception
{
23 final String
[] rec
= new String
[1];
25 ServerString server
= new ServerString(this.getName(), 0, ssl
) {
27 protected String
onRequest(
28 ConnectActionServerString action
,
29 Version clientVersion
, String data
)
35 protected void onError(Exception e
) {
39 int port
= server
.getPort();
40 assertEquals("A port should have been assigned", true, port
> 0);
44 ServerBridge br
= null;
46 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
50 "A port should have been assigned to the bridge",
58 new ConnectActionClientObject(null, port
, ssl
) {
60 public void action(Version serverVersion
)
74 assertNotNull("The client action was not run", rec
[0]);
75 assertEquals("ok", rec
[0]);
79 series
.addTest(new TestCase("Simple exchange " + ssls
) {
80 final String
[] sent
= new String
[1];
81 final String
[] recd
= new String
[1];
82 final Exception
[] err
= new Exception
[1];
85 public void test() throws Exception
{
86 ServerString server
= new ServerString(this.getName(), 0, ssl
) {
88 protected String
onRequest(
89 ConnectActionServerString action
,
90 Version clientVersion
, String data
)
97 protected void onError(Exception e
) {
103 int port
= server
.getPort();
107 ServerBridge br
= null;
109 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
116 new ConnectActionClientString(null, port
, ssl
) {
118 public void action(Version serverVersion
)
120 recd
[0] = send("ping");
132 if (err
[0] != null) {
133 fail("An exception was thrown: " + err
[0].getMessage());
136 assertEquals("ping", sent
[0]);
137 assertEquals("pong", recd
[0]);
141 series
.addTest(new TestCase("Multiple exchanges " + ssls
) {
142 final String
[] sent
= new String
[3];
143 final String
[] recd
= new String
[3];
144 final Exception
[] err
= new Exception
[1];
147 public void test() throws Exception
{
148 ServerString server
= new ServerString(this.getName(), 0, ssl
) {
150 protected String
onRequest(
151 ConnectActionServerString action
,
152 Version clientVersion
, String data
)
156 sent
[1] = action
.rec();
161 protected void onError(Exception e
) {
167 int port
= server
.getPort();
171 ServerBridge br
= null;
173 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
180 new ConnectActionClientString(null, port
, ssl
) {
182 public void action(Version serverVersion
)
184 recd
[0] = send("ping");
185 recd
[1] = send("ping2");
197 if (err
[0] != null) {
198 fail("An exception was thrown: " + err
[0].getMessage());
201 assertEquals("ping", sent
[0]);
202 assertEquals("pong", recd
[0]);
203 assertEquals("ping2", sent
[1]);
204 assertEquals("pong2", recd
[1]);
208 series
.addTest(new TestCase("Multiple call from client " + ssls
) {
209 final String
[] sent
= new String
[3];
210 final String
[] recd
= new String
[3];
211 final Exception
[] err
= new Exception
[1];
214 public void test() throws Exception
{
215 ServerString server
= new ServerString(this.getName(), 0, ssl
) {
217 protected String
onRequest(
218 ConnectActionServerString action
,
219 Version clientVersion
, String data
)
221 sent
[Integer
.parseInt(data
)] = data
;
222 return "" + (Integer
.parseInt(data
) * 2);
226 protected void onError(Exception e
) {
232 int port
= server
.getPort();
236 ServerBridge br
= null;
238 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
245 new ConnectActionClientString(null, port
, ssl
) {
247 public void action(Version serverVersion
)
249 for (int i
= 0; i
< 3; i
++) {
250 recd
[i
] = send("" + i
);
263 if (err
[0] != null) {
264 fail("An exception was thrown: " + err
[0].getMessage());
267 assertEquals("0", sent
[0]);
268 assertEquals("0", recd
[0]);
269 assertEquals("1", sent
[1]);
270 assertEquals("2", recd
[1]);
271 assertEquals("2", sent
[2]);
272 assertEquals("4", recd
[2]);
279 private TestLauncher
createServerObjectTestCases(final String
[] args
,
280 final boolean ssl
, final boolean bridge
) {
281 final String ssls
= (ssl ?
"(ssl)" : "(plain text)");
282 final String bridges
= (bridge ?
" with bridge" : "");
283 TestLauncher series
= new TestLauncher(
284 "ServerObject " + ssls
+ bridges
, args
);
286 series
.addTest(new TestCase("Simple connection " + ssls
) {
288 public void test() throws Exception
{
289 final Object
[] rec
= new Object
[1];
291 ServerObject server
= new ServerObject(this.getName(), 0, ssl
) {
293 protected Object
onRequest(
294 ConnectActionServerObject action
,
295 Version clientVersion
, Object data
)
301 protected void onError(Exception e
) {
305 int port
= server
.getPort();
306 assertEquals("A port should have been assigned", true, port
> 0);
310 ServerBridge br
= null;
312 br
= new ServerBridge(0, ssl
, "", port
, ssl
) {
314 protected void onError(Exception e
) {
323 new ConnectActionClientObject(null, port
, ssl
) {
325 public void action(Version serverVersion
)
331 protected void onError(Exception e
) {
343 assertNotNull("The client action was not run", rec
[0]);
344 assertEquals(true, (boolean) ((Boolean
) rec
[0]));
348 series
.addTest(new TestCase("Simple exchange " + ssls
) {
349 final Object
[] sent
= new Object
[1];
350 final Object
[] recd
= new Object
[1];
351 final Exception
[] err
= new Exception
[1];
354 public void test() throws Exception
{
355 ServerObject server
= new ServerObject(this.getName(), 0, ssl
) {
357 protected Object
onRequest(
358 ConnectActionServerObject action
,
359 Version clientVersion
, Object data
)
366 protected void onError(Exception e
) {
372 int port
= server
.getPort();
376 ServerBridge br
= null;
378 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
385 new ConnectActionClientObject(null, port
, ssl
) {
387 public void action(Version serverVersion
)
389 recd
[0] = send("ping");
401 if (err
[0] != null) {
402 fail("An exception was thrown: " + err
[0].getMessage());
405 assertEquals("ping", sent
[0]);
406 assertEquals("pong", recd
[0]);
410 series
.addTest(new TestCase("Multiple exchanges " + ssls
) {
411 final Object
[] sent
= new Object
[3];
412 final Object
[] recd
= new Object
[3];
413 final Exception
[] err
= new Exception
[1];
416 public void test() throws Exception
{
417 ServerObject server
= new ServerObject(this.getName(), 0, ssl
) {
419 protected Object
onRequest(
420 ConnectActionServerObject action
,
421 Version clientVersion
, Object data
)
425 sent
[1] = action
.rec();
430 protected void onError(Exception e
) {
436 int port
= server
.getPort();
440 ServerBridge br
= null;
442 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
449 new ConnectActionClientObject(null, port
, ssl
) {
451 public void action(Version serverVersion
)
453 recd
[0] = send("ping");
454 recd
[1] = send("ping2");
466 if (err
[0] != null) {
467 fail("An exception was thrown: " + err
[0].getMessage());
470 assertEquals("ping", sent
[0]);
471 assertEquals("pong", recd
[0]);
472 assertEquals("ping2", sent
[1]);
473 assertEquals("pong2", recd
[1]);
477 series
.addTest(new TestCase("Multiple call from client " + ssls
) {
478 final Object
[] sent
= new Object
[3];
479 final Object
[] recd
= new Object
[3];
480 final Exception
[] err
= new Exception
[1];
483 public void test() throws Exception
{
484 ServerObject server
= new ServerObject(this.getName(), 0, ssl
) {
486 protected Object
onRequest(
487 ConnectActionServerObject action
,
488 Version clientVersion
, Object data
)
490 sent
[(Integer
) data
] = data
;
491 return ((Integer
) data
) * 2;
495 protected void onError(Exception e
) {
501 int port
= server
.getPort();
505 ServerBridge br
= null;
507 br
= new ServerBridge(0, ssl
, "", port
, ssl
);
514 new ConnectActionClientObject(null, port
, ssl
) {
516 public void action(Version serverVersion
)
518 for (int i
= 0; i
< 3; i
++) {
532 if (err
[0] != null) {
533 fail("An exception was thrown: " + err
[0].getMessage());
536 assertEquals(0, sent
[0]);
537 assertEquals(0, recd
[0]);
538 assertEquals(1, sent
[1]);
539 assertEquals(2, recd
[1]);
540 assertEquals(2, sent
[2]);
541 assertEquals(4, recd
[2]);
548 public SerialServerTest(String
[] args
) {
549 super("SerialServer test", args
);
551 for (boolean ssl
: new Boolean
[] { false, true }) {
552 for (boolean bridge
: new Boolean
[] { false, true }) {
553 addSeries(createServerObjectTestCases(args
, ssl
, bridge
));
554 addSeries(createServerStringTestCases(args
, ssl
, bridge
));