diff options
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/test/qa-tests/jstests/export/export_broken_pipe.js')
-rw-r--r-- | src/mongo/gotools/src/github.com/mongodb/mongo-tools/test/qa-tests/jstests/export/export_broken_pipe.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/test/qa-tests/jstests/export/export_broken_pipe.js b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/test/qa-tests/jstests/export/export_broken_pipe.js new file mode 100644 index 00000000000..e1eb41d71cf --- /dev/null +++ b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/test/qa-tests/jstests/export/export_broken_pipe.js @@ -0,0 +1,46 @@ +(function() { + if (typeof getToolTest === 'undefined') { + load('jstests/configs/plain_28.config.js'); + } + load('jstests/libs/extended_assert.js'); + var assert = extendedAssert; + + var toolTest = getToolTest('export_broken_pipe'); + var baseArgs = getCommonToolArguments(); + baseArgs = baseArgs.concat('--port', toolTest.port); + + if (toolTest.useSSL) { + baseArgs = baseArgs.concat([ + '--ssl', + '--sslPEMKeyFile', 'jstests/libs/server.pem', + '--sslCAFile', 'jstests/libs/ca.pem', + '--sslAllowInvalidHostnames']); + } + var exportArgs = ['mongoexport', '-d', toolTest.db.getName(), '-c', 'foo'].concat(baseArgs); + var ddArgs = ['dd', 'count=1000000', 'bs=1024', 'of=/dev/null']; + if (_isWindows()) { + exportArgs[0] += '.exe'; + } + exportArgs.unshift('set -o pipefail', '&&', 'PATH=.:$PATH'); + + var testDb = toolTest.db; + testDb.dropDatabase(); + for (var i = 0; i < 500; i++) { + testDb.foo.insert({i: i}); + } + assert.eq(500, testDb.foo.count(), 'foo should have our test documents'); + + var ret = runProgram('bash', '-c', exportArgs.concat('|', ddArgs).join(' ')); + assert.eq(0, ret, "bash execution should succeed"); + assert.strContains.soon('exported 500 records', rawMongoProgramOutput, 'should print the success message'); + + ddArgs = ['dd', 'count=100', 'bs=1', 'of=/dev/null']; + ret = runProgram('bash', '-c', exportArgs.concat('|', ddArgs).join(' ')); + assert.neq(0, ret, "bash execution should fail"); + assert.soon(function() { + return rawMongoProgramOutput().search(/broken pipe|The pipe is being closed/); + }, 'should print an error message'); + + testDb.dropDatabase(); + toolTest.stop(); +}()); |