8000 Use Callbacks · browserstack/browserstack-runner@327aabc · GitHub
[go: up one dir, main page]

Skip to content

Commit 327aabc

Browse files
committed
Use Callbacks
1 parent 7fa9b37 commit 327aabc

File tree

3 files changed

+27
-34
lines changed

3 files changed

+27
-34
lines changed

bin/cli.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,3 @@ runner.test(process.env.BROWSERSTACK_JSON || 'browserstack.json', function(err)
2424
console.log('Invalid Command');
2525
}
2626
});
27-
process.on('exit', function(signal) {
28-
runner.cleanUpAndExit(signal);
29-
});

bin/runner.js

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
var Log = require('../lib/logger'),
22
logger = new Log(global.logLevel),
33
BrowserStack = require('browserstack'),
4-
fs = require('fs'),
54
qs = require('querystring'),
65
chalk = require('chalk'),
76
utils = require('../lib/utils'),
@@ -17,11 +16,9 @@ var Log = require('../lib/logger'),
1716
activityTimeout,
1817
ackTimeout,
1918
client,
20-
pid_file = process.cwd() + '/browserstack-run.pid',
2119
workers = {},
2220
workerKeys = {},
23-
tunnelingAgent,
24-
tunnel;
21+
tunnelingAgent;
2522

2623
function terminateAllWorkers(callback) {
2724
logger.trace('terminateAllWorkers');
@@ -65,7 +62,8 @@ function terminateAllWorkers(callback) {
6562
}
6663
}
6764

68-
function cleanUpAndExit(signal) {
65+
function cleanUpAndExit(signal, callback) {
66+
callback = callback || function() {};
6967
logger.trace('cleanUpAndExit: signal: %s', signal);
7068

7169
try {
@@ -79,23 +77,18 @@ function cleanUpAndExit(signal) {
7977
}
8078

8179
try {
82-
process.kill(tunnel.process.pid, 'SIGKILL');
80+
process.kill(tunnel.process.pid, 'SIGTERM');
8381
} catch (e) {
8482
logger.debug('Non existent tunnel');
8583
}
86-
try {
87-
fs.unlinkSync(pid_file);
88-
} catch (e) {
89-
logger.debug('Non existent pid file.');
90-
}
9184

9285
if (signal === 'SIGTERM') {
9386
logger.debug('Exiting');
94-
process.exit(config.status);
87+
callback(null, config.status);
9588
} else {
9689
terminateAllWorkers(function() {
9790
logger.debug('Exiting');
98-
process.exit(1);
91+
callback(null, 1);
9992
});
10093
}
10194
}
@@ -123,11 +116,11 @@ function buildTestUrl(test_path, worker_key, browser_string) {
123116
return url;
124117
}
125118

126-
function launchServer(config) {
119+
function launchServer(config, callback) {
127120
logger.trace('launchServer:', serverPort);
128121
logger.debug('Launching server on port:', serverPort);
129122

130-
server = new Server(client, workers, config);
123+
server = new Server(client, workers, config, callback);
131124
server.listen(parseInt(serverPort, 10));
132125
}
133126

@@ -265,7 +258,7 @@ function attachWorkerHelpers(worker) {
265258
var statusPoller = {
266259
poller: null,
267260

268-
start: function() {
261+
start: function(callback) {
269262
logger.trace('statusPoller.start');
270263

271264
statusPoller.poller = setInterval(function () {
@@ -311,7 +304,7 @@ var statusPoller = {
311304
}
312305

313306
logger.trace('[%s] worker.activityTimeout: all tests done', worker.id, config.status && 'with failures');
314-
process.exit('SIGTERM');
307+
callback(null, 'All Tests Done');
315308
}
316309
} else {
317310
logger.trace('[%s] worker.activityTimeout: already ackd', worker.id);
@@ -337,7 +330,7 @@ var statusPoller = {
337330
}
338331

339332
logger.trace('[%s] worker.testActivityTimeout: all tests done', worker.id, config.status && 'with failures');
340-
process.exit('SIGTERM');
333+
callback(null, 'All Tests Done');
341334
}
342335
} else {
343336
logger.trace('[%s] worker.testActivityTimeout: not ackd', worker.id);
@@ -355,28 +348,28 @@ var statusPoller = {
355348
}
356349
};
357350

358-
function runTests(config) {
351+
function runTests(config, callback) {
359352
if (config.proxy) {
360353
logger.trace('runTests: with proxy', config.proxy);
361354

362355
tunnelingAgent = tunnel.httpOverHttp({
363356
proxy: config.proxy
364357
});
365358
var oldhttpreq = http.request;
366-
http.request = function (options, callback) {
359+
http.request = function (options, reqCallback) {
367360
options.agent = tunnelingAgent;
368-
return oldhttpreq.call(null, options, callback);
361+
return oldhttpreq.call(null, options, reqCallback);
369362
};
370363
}
371364
if (config.browsers && config.browsers.length > 0) {
372365
ConfigParser.parse(client, config.browsers, function(browsers){
373-
launchServer(config);
366+
launchServer(config, callback);
374367

375368
logger.trace('runTests: creating tunnel');
376369
tunnel = new Tunnel(config.key, serverPort, config.tunnelIdentifier, config, function () {
377370
logger.trace('runTests: created tunnel');
378371

379-
statusPoller.start();
372+
statusPoller.start(callback);
380373
var total_runs = config.browsers.length * (Array.isArray(config.test_path) ? config.test_path.length : 1);
381374
logger.info('Launching ' + config.browsers.length + ' worker(s) for ' + total_runs + ' run(s).');
382375
browsers.forEach(function(browser) {
@@ -399,7 +392,7 @@ function runTests(config) {
399392
});
400393
});
401394
} else {
402-
launchServer(config);
395+
launchServer(config, callback);
403396
}
404397
}
405398

@@ -413,10 +406,14 @@ exports.test = function(config_file, callback) {
413406
username: config.username,
414407
password: config.key
415408
});
416-
runTests(config);
417-
fs.writeFileSync(pid_file, process.pid, 'utf-8');
409+
runTests(config, function(error) {
410+
if(error) {
411+
callback(error);
412+
} else {
413+
cleanUpAndExit('SIGTERM', callback);
414+
}
415+
});
418416
} catch (e) {
419417
callback(e);
420418
}
421419
};
422-
exports.cleanUpAndExit = cleanUpAndExit;

lib/server.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ var Log = require('./logger'),
1313
send = require('send'),
1414
vm = require('vm');
1515

16-
17-
exports.Server = function Server(bsClient, workers, config) {
18-
16+
exports.Server = function Server(bsClient, workers, config, callback) {
1917
var testFilePaths = (Array.isArray(config.test_path) ? config.test_path : [ config.test_path ])
2018
.map(function (path) {
2119
return path.split(/[?#]/)[0];
@@ -314,7 +312,8 @@ exports.Server = function Server(bsClient, workers, config) {
314312
}
315313

316314
logger.trace('[%s] _report: checkAndTerminateWorker: all tests done', worker.id, config.status && 'with failures');
317-
process.exit('SIGTERM');
315+
callback(null, 'All Tests Done');
316+
//process.exit('SIGTERM');
318317
}
319318
});
320319
});

0 commit comments

Comments
 (0)
0