package be.nikiroo.utils.test;
+import java.net.URL;
+
import be.nikiroo.utils.Version;
import be.nikiroo.utils.serial.server.ConnectActionClientObject;
import be.nikiroo.utils.serial.server.ConnectActionClientString;
class SerialServerTest extends TestLauncher {
private TestLauncher createServerStringTestCases(final String[] args,
- final boolean ssl, final boolean bridge) {
- final String ssls = (ssl ? "(ssl)" : "(plain text)");
+ final String key, final boolean bridge) {
+ final String skey = (key != null ? "(encrypted)" : "(plain text)");
final String bridges = (bridge ? " with bridge" : "");
TestLauncher series = new TestLauncher(
- "ServerString " + ssls + bridges, args);
+ "ServerString " + skey + bridges, args);
- series.addTest(new TestCase("Simple connection " + ssls) {
+ series.addTest(new TestCase("Simple connection " + skey) {
@Override
public void test() throws Exception {
final String[] rec = new String[1];
- ServerString server = new ServerString(this.getName(), 0, ssl) {
+ ServerString server = new ServerString(this.getName(), 0, key) {
@Override
protected String onRequest(
ConnectActionServerString action,
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
assertEquals(
try {
try {
- new ConnectActionClientObject(null, port, ssl) {
+ new ConnectActionClientObject(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Simple exchange " + ssls) {
+ series.addTest(new TestCase("Simple exchange " + skey) {
final String[] sent = new String[1];
final String[] recd = new String[1];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerString server = new ServerString(this.getName(), 0, ssl) {
+ ServerString server = new ServerString(this.getName(), 0, key) {
@Override
protected String onRequest(
ConnectActionServerString action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientString(null, port, ssl) {
+ new ConnectActionClientString(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Multiple exchanges " + ssls) {
+ series.addTest(new TestCase("Multiple exchanges " + skey) {
final String[] sent = new String[3];
final String[] recd = new String[3];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerString server = new ServerString(this.getName(), 0, ssl) {
+ ServerString server = new ServerString(this.getName(), 0, key) {
@Override
protected String onRequest(
ConnectActionServerString action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientString(null, port, ssl) {
+ new ConnectActionClientString(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Multiple call from client " + ssls) {
+ series.addTest(new TestCase("Multiple call from client " + skey) {
final String[] sent = new String[3];
final String[] recd = new String[3];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerString server = new ServerString(this.getName(), 0, ssl) {
+ ServerString server = new ServerString(this.getName(), 0, key) {
@Override
protected String onRequest(
ConnectActionServerString action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientString(null, port, ssl) {
+ new ConnectActionClientString(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
private TestLauncher createServerObjectTestCases(final String[] args,
- final boolean ssl, final boolean bridge) {
- final String ssls = (ssl ? "(ssl)" : "(plain text)");
+ final String key, final boolean bridge) {
+ final String skey = (key != null ? "(encrypted)" : "(plain text)");
final String bridges = (bridge ? " with bridge" : "");
TestLauncher series = new TestLauncher(
- "ServerObject " + ssls + bridges, args);
+ "ServerObject " + skey + bridges, args);
- series.addTest(new TestCase("Simple connection " + ssls) {
+ series.addTest(new TestCase("Simple connection " + skey) {
@Override
public void test() throws Exception {
final Object[] rec = new Object[1];
- ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+ ServerObject server = new ServerObject(this.getName(), 0, key) {
@Override
protected Object onRequest(
ConnectActionServerObject action,
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl) {
- @Override
- protected void onError(Exception e) {
- }
- };
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientObject(null, port, ssl) {
+ new ConnectActionClientObject(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Simple exchange " + ssls) {
+ series.addTest(new TestCase("Simple exchange " + skey) {
final Object[] sent = new Object[1];
final Object[] recd = new Object[1];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+ ServerObject server = new ServerObject(this.getName(), 0, key) {
@Override
protected Object onRequest(
ConnectActionServerObject action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientObject(null, port, ssl) {
+ new ConnectActionClientObject(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Multiple exchanges " + ssls) {
+ series.addTest(new TestCase("Multiple exchanges " + skey) {
final Object[] sent = new Object[3];
final Object[] recd = new Object[3];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+ ServerObject server = new ServerObject(this.getName(), 0, key) {
@Override
protected Object onRequest(
ConnectActionServerObject action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientObject(null, port, ssl) {
+ new ConnectActionClientObject(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
}
});
- series.addTest(new TestCase("Multiple call from client " + ssls) {
+ series.addTest(new TestCase("Object array of URLs " + skey) {
+ final Object[] sent = new Object[1];
+ final Object[] recd = new Object[1];
+ final Exception[] err = new Exception[1];
+
+ @Override
+ public void test() throws Exception {
+ ServerObject server = new ServerObject(this.getName(), 0, key) {
+ @Override
+ protected Object onRequest(
+ ConnectActionServerObject action,
+ Version clientVersion, Object data)
+ throws Exception {
+ sent[0] = data;
+ return new Object[] { "ACK" };
+ }
+
+ @Override
+ protected void onError(Exception e) {
+ err[0] = e;
+ }
+ };
+
+ int port = server.getPort();
+
+ server.start();
+
+ ServerBridge br = null;
+ if (bridge) {
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
+ port = br.getPort();
+ br.start();
+ }
+
+ try {
+ try {
+ new ConnectActionClientObject(null, port, key) {
+ @Override
+ public void action(Version serverVersion)
+ throws Exception {
+ recd[0] = send(new Object[] {
+ "key",
+ new URL(
+ "https://example.com/from_client"),
+ "https://example.com/from_client" });
+ }
+ }.connect();
+ } finally {
+ server.stop();
+ }
+ } finally {
+ if (br != null) {
+ br.stop();
+ }
+ }
+
+ if (err[0] != null) {
+ fail("An exception was thrown: " + err[0].getMessage());
+ }
+
+ Object[] sento = (Object[]) (sent[0]);
+ Object[] recdo = (Object[]) (recd[0]);
+
+ assertEquals("key", sento[0]);
+ assertEquals("https://example.com/from_client",
+ ((URL) sento[1]).toString());
+ assertEquals("https://example.com/from_client", sento[2]);
+ assertEquals("ACK", recdo[0]);
+ }
+ });
+
+ series.addTest(new TestCase("Multiple call from client " + skey) {
final Object[] sent = new Object[3];
final Object[] recd = new Object[3];
final Exception[] err = new Exception[1];
@Override
public void test() throws Exception {
- ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+ ServerObject server = new ServerObject(this.getName(), 0, key) {
@Override
protected Object onRequest(
ConnectActionServerObject action,
@Override
protected void onError(Exception e) {
- super.onError(e);
err[0] = e;
}
};
ServerBridge br = null;
if (bridge) {
- br = new ServerBridge(0, ssl, "", port, ssl);
+ br = new ServerBridge(0, key, "", port, key);
+ br.setTraceHandler(null);
port = br.getPort();
br.start();
}
try {
try {
- new ConnectActionClientObject(null, port, ssl) {
+ new ConnectActionClientObject(null, port, key) {
@Override
public void action(Version serverVersion)
throws Exception {
public SerialServerTest(String[] args) {
super("SerialServer test", args);
- for (boolean ssl : new Boolean[] { false, true }) {
+ for (String key : new String[] { null, "" }) {
for (boolean bridge : new Boolean[] { false, true }) {
- addSeries(createServerObjectTestCases(args, ssl, bridge));
- addSeries(createServerStringTestCases(args, ssl, bridge));
+ addSeries(createServerObjectTestCases(args, key, bridge));
+ addSeries(createServerStringTestCases(args, key, bridge));
}
}
}