Browse Source

test: fix flaky streams test

Use common.platformTimeout() to fix flaky
test-stream2-readable-empty-buffer-no-eofi on Raspberry Pis.

Fixes: https://github.com/nodejs/node/issues/4493
PR-URL: https://github.com/nodejs/node/pull/4516
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell<jasnell@gmail.com>
process-exit-stdio-flushing
Rich Trott 9 years ago
committed by James M Snell
parent
commit
68bafb8baf
  1. 24
      test/parallel/test-stream2-readable-empty-buffer-no-eof.js

24
test/parallel/test-stream2-readable-empty-buffer-no-eof.js

@ -1,14 +1,14 @@
'use strict'; 'use strict';
require('../common'); const common = require('../common');
var assert = require('assert'); const assert = require('assert');
var Readable = require('stream').Readable; const Readable = require('stream').Readable;
test1(); test1();
test2(); test2();
function test1() { function test1() {
var r = new Readable(); const r = new Readable();
// should not end when we get a Buffer(0) or '' as the _read result // should not end when we get a Buffer(0) or '' as the _read result
// that just means that there is *temporarily* no data, but to go // that just means that there is *temporarily* no data, but to go
@ -20,9 +20,9 @@ function test1() {
// r.read(0) again later, otherwise there is no more work being done // r.read(0) again later, otherwise there is no more work being done
// and the process just exits. // and the process just exits.
var buf = new Buffer(5); const buf = Buffer(5).fill('x');
buf.fill('x'); let reads = 5;
var reads = 5; const timeout = common.platformTimeout(50);
r._read = function(n) { r._read = function(n) {
switch (reads--) { switch (reads--) {
case 0: case 0:
@ -30,15 +30,15 @@ function test1() {
case 1: case 1:
return r.push(buf); return r.push(buf);
case 2: case 2:
setTimeout(r.read.bind(r, 0), 50); setTimeout(r.read.bind(r, 0), timeout);
return r.push(new Buffer(0)); // Not-EOF! return r.push(new Buffer(0)); // Not-EOF!
case 3: case 3:
setTimeout(r.read.bind(r, 0), 50); setTimeout(r.read.bind(r, 0), timeout);
return process.nextTick(function() { return process.nextTick(function() {
return r.push(new Buffer(0)); return r.push(new Buffer(0));
}); });
case 4: case 4:
setTimeout(r.read.bind(r, 0), 50); setTimeout(r.read.bind(r, 0), timeout);
return setTimeout(function() { return setTimeout(function() {
return r.push(new Buffer(0)); return r.push(new Buffer(0));
}); });
@ -51,9 +51,9 @@ function test1() {
} }
}; };
var results = []; const results = [];
function flow() { function flow() {
var chunk; let chunk;
while (null !== (chunk = r.read())) while (null !== (chunk = r.read()))
results.push(chunk + ''); results.push(chunk + '');
} }

Loading…
Cancel
Save