summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy J Fontaine <tjfontaine@gmail.com>2015-01-15 23:19:32 +0000
committerJulien Gilli <julien.gilli@joyent.com>2015-01-15 23:41:22 -0800
commit58fcc6598561b5b99a8c6756b3b1cca55b635b0f (patch)
treea995d4266fd6ac6a55fe46ac18fa3a25f19c9db0
parente9df9a0216550abab4923bcfc6dea4f4b32368d2 (diff)
downloadnode-58fcc6598561b5b99a8c6756b3b1cca55b635b0f.tar.gz
test: debug-signal-cluster should not be racey
unref one superfluous timer (as the test suite already has a global timeout), and improve the state machine to iterate the messages more reliably. Ultimately make the test complete more quickly. Signed-off-by: Julien Gilli <julien.gilli@joyent.com>
-rw-r--r--test/simple/test-debug-signal-cluster.js60
1 files changed, 30 insertions, 30 deletions
diff --git a/test/simple/test-debug-signal-cluster.js b/test/simple/test-debug-signal-cluster.js
index 27d53910b..9e6edb803 100644
--- a/test/simple/test-debug-signal-cluster.js
+++ b/test/simple/test-debug-signal-cluster.js
@@ -35,32 +35,32 @@ var pids = null;
child.stderr.on('data', function(data) {
var lines = data.toString().replace(/\r/g, '').trim().split('\n');
- var line = lines[0];
- lines.forEach(function(ln) { console.log('> ' + ln) } );
+ lines.forEach(function(line) {
+ console.log('> ' + line);
- if (outputTimerId !== undefined)
- clearTimeout(outputTimerId);
+ if (line === 'all workers are running') {
+ child.on('message', function(msg) {
+ if (msg.type !== 'pids')
+ return;
- if (waitingForDebuggers) {
- outputLines = outputLines.concat(lines);
- outputTimerId = setTimeout(onNoMoreLines, 800);
- } else if (line === 'all workers are running') {
- child.on('message', function(msg) {
- if (msg.type !== 'pids')
- return;
+ pids = msg.pids;
+ console.error('got pids %j', pids);
- pids = msg.pids;
- console.error('got pids %j', pids);
+ waitingForDebuggers = true;
+ process._debugProcess(child.pid);
+ });
- waitingForDebuggers = true;
- process._debugProcess(child.pid);
- });
+ child.send({
+ type: 'getpids'
+ });
+ } else if (waitingForDebuggers) {
+ outputLines.push(line);
+ }
- child.send({
- type: 'getpids'
- });
- }
+ });
+ if (outputLines.length >= expectedLines.length)
+ onNoMoreLines();
});
function onNoMoreLines() {
@@ -70,7 +70,7 @@ function onNoMoreLines() {
setTimeout(function testTimedOut() {
assert(false, 'test timed out.');
-}, 6000);
+}, 6000).unref();
process.on('exit', function onExit() {
pids.forEach(function(pid) {
@@ -78,16 +78,16 @@ process.on('exit', function onExit() {
});
});
-function assertOutputLines() {
- var expectedLines = [
- 'Starting debugger agent.',
- 'Debugger listening on port ' + 5858,
- 'Starting debugger agent.',
- 'Debugger listening on port ' + 5859,
- 'Starting debugger agent.',
- 'Debugger listening on port ' + 5860,
- ];
+var expectedLines = [
+ 'Starting debugger agent.',
+ 'Debugger listening on port ' + 5858,
+ 'Starting debugger agent.',
+ 'Debugger listening on port ' + 5859,
+ 'Starting debugger agent.',
+ 'Debugger listening on port ' + 5860,
+];
+function assertOutputLines() {
// Do not assume any particular order of output messages,
// since workers can take different amout of time to
// start up