summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRobert Nagy <ronagy@icloud.com>2019-10-20 10:13:57 +0200
committerRich Trott <rtrott@gmail.com>2019-11-11 19:50:40 -0800
commitf8c069f5b88a25304ee2fc638c51464b4df196dd (patch)
tree66de4cb08640930e92c0538cf30a6cc5bca06b3f /test
parente55d65384d3feb3dd1bb7341a23766663fbcdba6 (diff)
downloadandroid-node-v8-f8c069f5b88a25304ee2fc638c51464b4df196dd.tar.gz
android-node-v8-f8c069f5b88a25304ee2fc638c51464b4df196dd.tar.bz2
android-node-v8-f8c069f5b88a25304ee2fc638c51464b4df196dd.zip
stream: increase MAX_HWM
MAX_HWM was added in 9208c89 where the highwatermark was changed to always increase in steps of highest power of 2 to prevent increasing hwm excessivly in tiny amounts. Why a limit was added on the highwatermark is unclear but breaks existing usage where a larger read size is used. The invariant for read(n) is that a buffer of size n is always returned. Considering a maximum ceiling on the buffer size breaks this invariant. This PR significantly increases the limit to make it less likely to break the previous invariant and also documents the limit. Fixes: https://github.com/nodejs/node/issues/29933 PR-URL: https://github.com/nodejs/node/pull/29938 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-readable-large-hwm.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/parallel/test-readable-large-hwm.js b/test/parallel/test-readable-large-hwm.js
new file mode 100644
index 0000000000..d5bf25bc0e
--- /dev/null
+++ b/test/parallel/test-readable-large-hwm.js
@@ -0,0 +1,27 @@
+'use strict';
+const common = require('../common');
+const { Readable } = require('stream');
+
+// Make sure that readable completes
+// even when reading larger buffer.
+const bufferSize = 10 * 1024 * 1024;
+let n = 0;
+const r = new Readable({
+ read() {
+ // Try to fill readable buffer piece by piece.
+ r.push(Buffer.alloc(bufferSize / 10));
+
+ if (n++ > 10) {
+ r.push(null);
+ }
+ }
+});
+
+r.on('readable', () => {
+ while (true) {
+ const ret = r.read(bufferSize);
+ if (ret === null)
+ break;
+ }
+});
+r.on('end', common.mustCall());