From 8fc578b631d032778d49c65f9de48c946d01f902 Mon Sep 17 00:00:00 2001 From: Chad Rhyner Date: Fri, 23 Nov 2012 20:49:42 -0800 Subject: test: disable eio-race tests Disabled the following unit tests: * test-eio-race.js * test-eio-race2.js * test-eio-race4.js These tests are known to fail on busy boxes due to being timing sensitive, and are deemed not meaningful tests. See https://github.com/joyent/node/issues/4272 Fixes #4272. --- test/disabled/test-eio-race.js | 85 +++++++++++++++++++++++++++++++++++++++++ test/disabled/test-eio-race2.js | 43 +++++++++++++++++++++ test/disabled/test-eio-race4.js | 42 ++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 test/disabled/test-eio-race.js create mode 100644 test/disabled/test-eio-race2.js create mode 100644 test/disabled/test-eio-race4.js (limited to 'test/disabled') diff --git a/test/disabled/test-eio-race.js b/test/disabled/test-eio-race.js new file mode 100644 index 0000000000..558d09a9cf --- /dev/null +++ b/test/disabled/test-eio-race.js @@ -0,0 +1,85 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +var common = require('../common'); +var assert = require('assert'); + +var count = 100; +var fs = require('fs'); + +// person.jpg is 57kb. We just need some file that is sufficently large. +var filename = require('path').join(common.fixturesDir, 'person.jpg'); + +function tryToKillEventLoop() { + console.log('trying to kill event loop ...'); + + fs.stat(__filename, function(err) { + if (err) { + throw new Exception('first fs.stat failed'); + } else { + fs.stat(__filename, function(err) { + if (err) { + throw new Exception('second fs.stat failed'); + } else { + console.log('could not kill event loop, retrying...'); + + setTimeout(function() { + if (--count) { + tryToKillEventLoop(); + } else { + console.log('done trying to kill event loop'); + process.exit(0); + } + }, 1); + } + }); + } + }); +} + +// Generate a lot of thread pool events +var pos = 0; +fs.open(filename, 'r', 0666, function(err, fd) { + if (err) throw err; + + function readChunk() { + fs.read(fd, 1024, 0, 'binary', function(err, chunk, bytesRead) { + if (err) throw err; + if (chunk) { + pos += bytesRead; + //console.log(pos); + readChunk(); + } else { + fs.closeSync(fd); + throw new Exception("Shouldn't get EOF"); + } + }); + } + readChunk(); +}); + +tryToKillEventLoop(); + +process.on('exit', function() { + console.log('done with test'); + assert.ok(pos > 10000); +}); diff --git a/test/disabled/test-eio-race2.js b/test/disabled/test-eio-race2.js new file mode 100644 index 0000000000..df63a3150d --- /dev/null +++ b/test/disabled/test-eio-race2.js @@ -0,0 +1,43 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var common = require('../common'); +var assert = require('assert'); +var path = require('path'); +var testTxt = path.join(common.fixturesDir, 'x.txt'); +var fs = require('fs'); + +setTimeout(function() { + // put this in a timeout, just so it doesn't get bunched up with the + // require() calls.. + var N = 30; + for (var i = 0; i < N; i++) { + console.log('start ' + i); + fs.readFile(testTxt, function(err, data) { + if (err) { + console.log('error! ' + e); + process.exit(1); + } else { + console.log('finish'); + } + }); + } +}, 100); diff --git a/test/disabled/test-eio-race4.js b/test/disabled/test-eio-race4.js new file mode 100644 index 0000000000..8eaeda2171 --- /dev/null +++ b/test/disabled/test-eio-race4.js @@ -0,0 +1,42 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var common = require('../common'); +var assert = require('assert'); +var fs = require('fs'); +var N = 100; +var j = 0; + +for (var i = 0; i < N; i++) { + // these files don't exist + fs.stat('does-not-exist-' + i, function(err) { + if (err) { + j++; // only makes it to about 17 + console.log('finish ' + j); + } else { + throw new Error('this shouldn\'t be called'); + } + }); +} + +process.on('exit', function() { + assert.equal(N, j); +}); -- cgit v1.2.1