Skip to content

Commit 9cddce0

Browse files
committed
quic: Improve test coverage
1 parent 2e3a367 commit 9cddce0

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

src/quic/streams.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,6 +1433,17 @@ JS_METHOD_IMPL(DataQueueFeeder::Error) {
14331433
feeder->DrainAndClose();
14341434
}
14351435

1436+
JS_METHOD_IMPL(DataQueueFeeder::AddFakePull) {
1437+
DataQueueFeeder* feeder;
1438+
ASSIGN_OR_RETURN_UNWRAP(&feeder, args.This());
1439+
// this adds a fake pull for testing code, not to be used anywhere else
1440+
Next dummyNext = [](int, const DataQueue::Vec*, size_t, bob::Done) {
1441+
// intentionally empty
1442+
};
1443+
feeder->addPendingPull(PendingPull(std::move(dummyNext)));
1444+
feeder->tryWakePulls();
1445+
}
1446+
14361447
JS_CONSTRUCTOR_IMPL(DataQueueFeeder, dataqueuefeeder_constructor_template, {
14371448
auto isolate = env->isolate();
14381449
JS_NEW_CONSTRUCTOR();
@@ -1441,6 +1452,7 @@ JS_CONSTRUCTOR_IMPL(DataQueueFeeder, dataqueuefeeder_constructor_template, {
14411452
SetProtoMethod(isolate, tmpl, "error", Error);
14421453
SetProtoMethod(isolate, tmpl, "submit", Submit);
14431454
SetProtoMethod(isolate, tmpl, "ready", Ready);
1455+
SetProtoMethod(isolate, tmpl, "addFakePull", AddFakePull);
14441456
})
14451457

14461458
void DataQueueFeeder::InitPerIsolate(IsolateData* data,
@@ -1461,6 +1473,7 @@ void DataQueueFeeder::RegisterExternalReferences(
14611473
registry->Register(Submit);
14621474
registry->Register(Error);
14631475
registry->Register(Ready);
1476+
registry->Register(AddFakePull);
14641477
}
14651478

14661479
} // namespace node

src/quic/streams.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ class DataQueueFeeder final : public AsyncWrap {
452452
JS_METHOD(Submit);
453453
JS_METHOD(Error);
454454
JS_METHOD(Ready);
455+
JS_METHOD(AddFakePull);
455456

456457
private:
457458
std::shared_ptr<DataQueue> dataQueue_;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Flags: --expose-internals --experimental-quic --no-warnings
2+
import { hasQuic, skip } from '../common/index.mjs';
3+
import {
4+
rejects,
5+
} from 'node:assert';
6+
7+
if (!hasQuic) {
8+
skip('QUIC is not enabled');
9+
}
10+
11+
const { internalBinding } = (await import('internal/test/binding')).default;
12+
13+
const {
14+
DataQueueFeeder,
15+
} = internalBinding('quic');
16+
17+
18+
const feeder = new DataQueueFeeder();
19+
feeder.addFakePull();
20+
await feeder.ready();
21+
let lastprom = feeder.submit(new Uint8Array([1, 2, 3]), false);
22+
feeder.addFakePull();
23+
await lastprom;
24+
lastprom = feeder.submit(new Uint16Array([1, 2, 3]), false);
25+
feeder.addFakePull();
26+
await lastprom;
27+
lastprom = feeder.submit(new Uint32Array([1, 2, 3]), false);
28+
feeder.addFakePull();
29+
await lastprom;
30+
lastprom = feeder.submit(new Uint8Array([1, 2, 3]).buffer, false);
31+
feeder.addFakePull();
32+
await lastprom;
33+
await rejects(async () => feeder.submit({}, false), {
34+
code: 'ERR_INVALID_ARG_TYPE',
35+
});
36+
await rejects(async () => feeder.submit([], false), {
37+
code: 'ERR_INVALID_ARG_TYPE',
38+
});
39+
await feeder.submit(undefined, true);
40+
feeder.error(new Error('Can we send an error'));

test/parallel/test-quic-server-to-client-unidirectional.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const KNOWN_BYTES_LONG = [
4545
createBytesChunk(60000), // 96, 234
4646
createBytesChunk(12), // 0, 12
4747
createBytesChunk(50000), // 195, 80
48-
createBytesChunk(1600), // 6, 64
48+
createBytesChunk(1600).buffer, // 6, 64 we use buffer here to increae test coverage
4949
createBytesChunk(20000), // 78, 32
5050
createBytesChunk(30000), // 117, 48
5151
];

0 commit comments

Comments
 (0)