Skip to content

Commit 391ddf3

Browse files
committed
[test] Use stream.getDefaultHighWaterMark() when available
Refs: nodejs/node#50120
1 parent 01ba54e commit 391ddf3

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

test/create-websocket-stream.test.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33
const assert = require('assert');
44
const EventEmitter = require('events');
55
const { createServer } = require('http');
6-
const { Duplex } = require('stream');
6+
const { Duplex, getDefaultHighWaterMark } = require('stream');
77
const { randomBytes } = require('crypto');
88

99
const createWebSocketStream = require('../lib/stream');
1010
const Sender = require('../lib/sender');
1111
const WebSocket = require('..');
1212
const { EMPTY_BUFFER } = require('../lib/constants');
1313

14+
const highWaterMark = getDefaultHighWaterMark
15+
? getDefaultHighWaterMark(false)
16+
: 16 * 1024;
17+
1418
describe('createWebSocketStream', () => {
1519
it('is exposed as a property of the `WebSocket` class', () => {
1620
assert.strictEqual(WebSocket.createWebSocketStream, createWebSocketStream);
@@ -445,12 +449,15 @@ describe('createWebSocketStream', () => {
445449
};
446450

447451
const list = [
448-
...Sender.frame(randomBytes(16 * 1024), { rsv1: false, ...opts }),
452+
...Sender.frame(randomBytes(highWaterMark), {
453+
rsv1: false,
454+
...opts
455+
}),
449456
...Sender.frame(Buffer.alloc(1), { rsv1: true, ...opts })
450457
];
451458

452459
// This hack is used because there is no guarantee that more than
453-
// 16 KiB will be sent as a single TCP packet.
460+
// `highWaterMark` bytes will be sent as a single TCP packet.
454461
ws._socket.push(Buffer.concat(list));
455462
});
456463

@@ -494,7 +501,10 @@ describe('createWebSocketStream', () => {
494501
};
495502

496503
const list = [
497-
...Sender.frame(randomBytes(16 * 1024), { rsv1: false, ...opts }),
504+
...Sender.frame(randomBytes(highWaterMark), {
505+
rsv1: false,
506+
...opts
507+
}),
498508
...Sender.frame(Buffer.alloc(1), { rsv1: true, ...opts })
499509
];
500510

test/websocket.test.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const net = require('net');
1111
const tls = require('tls');
1212
const os = require('os');
1313
const fs = require('fs');
14+
const { getDefaultHighWaterMark } = require('stream');
1415
const { URL } = require('url');
1516

1617
const Sender = require('../lib/sender');
@@ -23,6 +24,10 @@ const {
2324
} = require('../lib/event-target');
2425
const { EMPTY_BUFFER, GUID, kListener, NOOP } = require('../lib/constants');
2526

27+
const highWaterMark = getDefaultHighWaterMark
28+
? getDefaultHighWaterMark(false)
29+
: 16 * 1024;
30+
2631
class CustomAgent extends http.Agent {
2732
addRequest() {}
2833
}
@@ -4092,7 +4097,7 @@ describe('WebSocket', () => {
40924097
ws.terminate();
40934098
};
40944099

4095-
const payload1 = Buffer.alloc(15 * 1024);
4100+
const payload1 = Buffer.alloc(highWaterMark - 1024);
40964101
const payload2 = Buffer.alloc(1);
40974102

40984103
const opts = {
@@ -4107,13 +4112,17 @@ describe('WebSocket', () => {
41074112
...Sender.frame(payload2, { rsv1: true, ...opts })
41084113
];
41094114

4110-
for (let i = 0; i < 399; i++) {
4115+
for (let i = 0; i < 340; i++) {
41114116
list.push(list[list.length - 2], list[list.length - 1]);
41124117
}
41134118

4119+
const data = Buffer.concat(list);
4120+
4121+
assert.ok(data.length > highWaterMark);
4122+
41144123
// This hack is used because there is no guarantee that more than
4115-
// 16 KiB will be sent as a single TCP packet.
4116-
push.call(ws._socket, Buffer.concat(list));
4124+
// `highWaterMark` bytes will be sent as a single TCP packet.
4125+
push.call(ws._socket, data);
41174126

41184127
wss.clients
41194128
.values()
@@ -4128,8 +4137,8 @@ describe('WebSocket', () => {
41284137

41294138
ws.on('close', (code) => {
41304139
assert.strictEqual(code, 1006);
4131-
assert.strictEqual(messageLengths.length, 402);
4132-
assert.strictEqual(messageLengths[0], 15360);
4140+
assert.strictEqual(messageLengths.length, 343);
4141+
assert.strictEqual(messageLengths[0], highWaterMark - 1024);
41334142
assert.strictEqual(messageLengths[messageLengths.length - 1], 1);
41344143
wss.close(done);
41354144
});

0 commit comments

Comments
 (0)