summaryrefslogtreecommitdiff
path: root/js/test/Common/ControllerI.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/test/Common/ControllerI.js')
-rw-r--r--js/test/Common/ControllerI.js126
1 files changed, 78 insertions, 48 deletions
diff --git a/js/test/Common/ControllerI.js b/js/test/Common/ControllerI.js
index f83b3fc7083..17433db22d6 100644
--- a/js/test/Common/ControllerI.js
+++ b/js/test/Common/ControllerI.js
@@ -33,17 +33,40 @@ function isWindows()
return navigator.userAgent.indexOf("Windows") != -1;
}
+class Logger extends Ice.Logger
+{
+ constructor(out)
+ {
+ super()
+ this._out = out
+ }
+
+ write(message, indent)
+ {
+ if(indent)
+ {
+ message = message.replace(/\n/g, "\n ");
+ }
+ this._out.writeLine(message);
+ }
+}
+
class ProcessI extends Test.Common.Process
{
- constructor(promise, output)
+ constructor(promise, output, ready)
{
super();
this._promise = promise;
this._output = output;
+ this._ready = ready;
}
waitReady(timeout, current)
{
+ if(this._ready)
+ {
+ return this._ready;
+ }
}
waitSuccess(timeout, current)
@@ -66,11 +89,11 @@ class ProcessI extends Test.Common.Process
class ProcessControllerI extends Test.Common.ProcessController
{
- constructor(output, logger, useWorker, scripts)
+ constructor(clientOutput, serverOutput, useWorker, scripts)
{
super();
- this._output = output;
- this._logger = logger;
+ this._clientOutput = clientOutput;
+ this._serverOutput = serverOutput;
this._useWorker = useWorker;
this._scripts = scripts;
}
@@ -78,9 +101,13 @@ class ProcessControllerI extends Test.Common.ProcessController
start(testSuite, exe, args, current)
{
let promise;
+ let ready = null;
+ if(exe === "Server" || exe === "ServerAMD")
+ {
+ ready = new Ice.Promise();
+ }
if(this._useWorker)
{
- let out = this._output;
let scripts = this._scripts;
promise = new Promise((resolve, reject) => {
let worker;
@@ -96,11 +123,23 @@ class ProcessControllerI extends Test.Common.ProcessController
worker.onmessage = function(e) {
if(e.data.type == "write")
{
- out.write(e.data.message);
+ this._clientOutput.write(e.data.message);
}
else if(e.data.type == "writeLine")
{
- out.writeLine(e.data.message);
+ this._clientOutput.writeLine(e.data.message);
+ }
+ if(e.data.type == "serverWrite")
+ {
+ this._serverOutput.write(e.data.message);
+ }
+ else if(e.data.type == "serverWriteLine")
+ {
+ this._serverOutput.writeLine(e.data.message);
+ }
+ else if(e.data.type == "ready" && (exe === "Server" || exe === "ServerAMD"))
+ {
+ ready.resolve();
}
else if(e.data.type == "finished")
{
@@ -121,19 +160,22 @@ class ProcessControllerI extends Test.Common.ProcessController
else
{
let initData = new Ice.InitializationData();
- initData.logger = this._logger;
initData.properties = Ice.createProperties(args);
process.argv = args
- if(exe === "ClientBidir")
+ if(exe === "Server" || exe === "ServerAMD")
{
- promise = _testBidir(this._output, initData);
+ initData.logger = new Logger(this._serverOutput);
+ let test = exe === "Server" ? _server : _serveramd;
+ promise = test(this._serverOutput, initData, ready);
}
else
{
- promise = _test(this._output, initData);
+ initData.logger = new Logger(this._clientOutput);
+ promise = _test(this._clientOutput, initData);
}
}
- return Test.Common.ProcessPrx.uncheckedCast(current.adapter.addWithUUID(new ProcessI(promise, this._output)));
+ let out = exe === "Server" || exe === "ServerAMD" ? this._serverOutput : this._clientOutput;
+ return Test.Common.ProcessPrx.uncheckedCast(current.adapter.addWithUUID(new ProcessI(promise, out, ready)));
}
getHost(protocol, ipv6, current)
@@ -142,25 +184,31 @@ class ProcessControllerI extends Test.Common.ProcessController
}
};
-function runController(output, scripts)
+function runController(clientOutput, serverOutput, scripts)
{
- let out =
+ function wrapOutput(output)
{
- write: function(msg)
- {
- let text = output.val();
- output.val((text === "") ? msg : (text + msg));
- },
- writeLine: function(msg)
- {
- out.write(msg + "\n");
- output.scrollTop(output.get(0).scrollHeight);
- },
- get: function()
- {
- return output.val()
- }
- };
+ return {
+ write: function(msg)
+ {
+ let text = output.val();
+ output.val((text === "") ? msg : (text + msg));
+ },
+ writeLine: function(msg)
+ {
+ msg = msg + "\n";
+ let text = output.val();
+ output.val((text === "") ? msg : (text + msg));
+ output.scrollTop(output.get(0).scrollHeight);
+ },
+ get: function()
+ {
+ return output.val()
+ }
+ };
+ }
+ let out = wrapOutput(clientOutput);
+ let serverOut = wrapOutput(serverOutput);
window.onerror = function(msg, url, line, column, err)
{
@@ -173,24 +221,6 @@ function runController(output, scripts)
return false;
};
- class Logger extends Ice.Logger
- {
- constructor(out)
- {
- super()
- this._out = out
- }
-
- write(message, indent)
- {
- if(indent)
- {
- message = message.replace(/\n/g, "\n ");
- }
- out.writeLine(message);
- }
- }
-
let uri = new URI(document.location.href)
let initData = new Ice.InitializationData();
let protocol = uri.protocol() === "http" ? "ws" : "wss";
@@ -226,7 +256,7 @@ function runController(output, scripts)
let registry = Test.Common.ProcessControllerRegistryPrx.uncheckedCast(comm.stringToProxy(str));
comm.createObjectAdapter("").then(adapter => {
let ident = new Ice.Identity("ProcessController", "Browser");
- let processController = adapter.add(new ProcessControllerI(out, initData.logger, worker, scripts), ident);
+ let processController = adapter.add(new ProcessControllerI(out, serverOut, worker, scripts), ident);
adapter.activate();
registerProcessController(adapter, registry, processController);
}).catch(ex => {