diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js')
-rw-r--r-- | vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js new file mode 100644 index 00000000..a56fa1c1 --- /dev/null +++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js @@ -0,0 +1,55 @@ +var log = require('./logger').create() + +var Executor = function (capturedBrowsers, config, emitter) { + var self = this + var executionScheduled = false + var pendingCount = 0 + var runningBrowsers + + var schedule = function () { + var nonReady = [] + + if (!capturedBrowsers.length) { + log.warn('No captured browser, open http://%s:%s%s', config.hostname, config.port, + config.urlRoot) + return false + } + + if (capturedBrowsers.areAllReady(nonReady)) { + log.debug('All browsers are ready, executing') + executionScheduled = false + capturedBrowsers.clearResults() + capturedBrowsers.setAllToExecuting() + pendingCount = capturedBrowsers.length + runningBrowsers = capturedBrowsers.clone() + emitter.emit('run_start', runningBrowsers) + self.socketIoSockets.emit('execute', config.client) + return true + } + + log.info('Delaying execution, these browsers are not ready: ' + nonReady.join(', ')) + executionScheduled = true + return false + } + + this.schedule = schedule + + this.onRunComplete = function () { + if (executionScheduled) { + schedule() + } + } + + this.onBrowserComplete = function () { + pendingCount-- + + if (!pendingCount) { + emitter.emit('run_complete', runningBrowsers, runningBrowsers.getResults()) + } + } + + // bind all the events + emitter.bind(this) +} + +module.exports = Executor |