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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy