diff options
Diffstat (limited to 'js/test/Common/ControllerI.js')
-rw-r--r-- | js/test/Common/ControllerI.js | 126 |
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 => { |