aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/executor.js
diff options
context:
space:
mode:
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.js55
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