diff options
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js')
-rw-r--r-- | cli/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js b/cli/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js new file mode 100644 index 000000000..ff355aa2a --- /dev/null +++ b/cli/tests/node_compat/test/parallel/test-net-write-fully-async-hex-string.js @@ -0,0 +1,39 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 18.12.1 +// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually + +'use strict'; +// Flags: --expose-gc + +// Regression test for https://github.com/nodejs/node/issues/8251. +const common = require('../common'); +const net = require('net'); + +const data = Buffer.alloc(1000000).toString('hex'); + +const server = net.createServer(common.mustCall(function(conn) { + conn.resume(); +})).listen(0, common.mustCall(function() { + const conn = net.createConnection(this.address().port, common.mustCall(() => { + let count = 0; + + function writeLoop() { + if (count++ === 20) { + conn.destroy(); + server.close(); + return; + } + + while (conn.write(data, 'hex')); + global.gc({ type: 'minor' }); + // The buffer allocated inside the .write() call should still be alive. + } + + conn.on('drain', writeLoop); + + writeLoop(); + })); +})); |