Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma / lib / executor.js
1 var log = require('./logger').create()
2
3 var Executor = function (capturedBrowsers, config, emitter) {
4   var self = this
5   var executionScheduled = false
6   var pendingCount = 0
7   var runningBrowsers
8
9   var schedule = function () {
10     var nonReady = []
11
12     if (!capturedBrowsers.length) {
13       log.warn('No captured browser, open http://%s:%s%s', config.hostname, config.port,
14         config.urlRoot)
15       return false
16     }
17
18     if (capturedBrowsers.areAllReady(nonReady)) {
19       log.debug('All browsers are ready, executing')
20       executionScheduled = false
21       capturedBrowsers.clearResults()
22       capturedBrowsers.setAllToExecuting()
23       pendingCount = capturedBrowsers.length
24       runningBrowsers = capturedBrowsers.clone()
25       emitter.emit('run_start', runningBrowsers)
26       self.socketIoSockets.emit('execute', config.client)
27       return true
28     }
29
30     log.info('Delaying execution, these browsers are not ready: ' + nonReady.join(', '))
31     executionScheduled = true
32     return false
33   }
34
35   this.schedule = schedule
36
37   this.onRunComplete = function () {
38     if (executionScheduled) {
39       schedule()
40     }
41   }
42
43   this.onBrowserComplete = function () {
44     pendingCount--
45
46     if (!pendingCount) {
47       emitter.emit('run_complete', runningBrowsers, runningBrowsers.getResults())
48     }
49   }
50
51   // bind all the events
52   emitter.bind(this)
53 }
54
55 module.exports = Executor