| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/readjs/node_modules/karma/lib/ |
Upload File : |
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 %s//%s:%s%s', config.protocol, config.hostname,
config.port, config.urlRoot)
return false
}
if (capturedBrowsers.areAllReady(nonReady)) {
log.debug('All browsers are ready, executing')
log.debug('Captured %s browsers', capturedBrowsers.length)
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) {
// Ensure run_complete is emitted in the next tick
// so it is never emitted before browser_complete
setTimeout(function () {
emitter.emit('run_complete', runningBrowsers, runningBrowsers.getResults())
}, 0)
}
}
// bind all the events
emitter.bind(this)
}
module.exports = Executor