@libp2p/interface-compliance-tests 3.0.7-e9cafd3d → 3.0.7-eabf6f36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/connection/index.js +5 -5
- package/dist/src/connection/index.js.map +1 -1
- package/dist/src/connection-encryption/utils/index.d.ts.map +1 -1
- package/dist/src/connection-encryption/utils/index.js +1 -0
- package/dist/src/connection-encryption/utils/index.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/is-valid-tick.d.ts.map +1 -1
- package/dist/src/is-valid-tick.js.map +1 -1
- package/dist/src/mocks/connection-manager.d.ts.map +1 -1
- package/dist/src/mocks/connection.d.ts.map +1 -1
- package/dist/src/mocks/connection.js +30 -21
- package/dist/src/mocks/connection.js.map +1 -1
- package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
- package/dist/src/mocks/multiaddr-connection.js +9 -0
- package/dist/src/mocks/multiaddr-connection.js.map +1 -1
- package/dist/src/mocks/muxer.d.ts +28 -0
- package/dist/src/mocks/muxer.d.ts.map +1 -1
- package/dist/src/mocks/muxer.js +85 -211
- package/dist/src/mocks/muxer.js.map +1 -1
- package/dist/src/mocks/upgrader.d.ts +1 -1
- package/dist/src/mocks/upgrader.d.ts.map +1 -1
- package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/close-test.js +100 -12
- package/dist/src/stream-muxer/close-test.js.map +1 -1
- package/dist/src/stream-muxer/fixtures/pb/message.d.ts +13 -0
- package/dist/src/stream-muxer/fixtures/pb/message.d.ts.map +1 -0
- package/dist/src/stream-muxer/fixtures/pb/message.js +67 -0
- package/dist/src/stream-muxer/fixtures/pb/message.js.map +1 -0
- package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
- package/dist/src/stream-muxer/spawner.js +4 -3
- package/dist/src/stream-muxer/spawner.js.map +1 -1
- package/dist/src/stream-muxer/stress-test.js +1 -1
- package/dist/src/stream-muxer/stress-test.js.map +1 -1
- package/dist/src/transport/listen-test.js +1 -1
- package/dist/src/transport/listen-test.js.map +1 -1
- package/package.json +15 -14
- package/src/connection/index.ts +5 -5
- package/src/connection-encryption/utils/index.ts +1 -0
- package/src/index.ts +0 -1
- package/src/is-valid-tick.ts +0 -1
- package/src/mocks/connection-manager.ts +2 -2
- package/src/mocks/connection.ts +35 -24
- package/src/mocks/multiaddr-connection.ts +9 -0
- package/src/mocks/muxer.ts +105 -247
- package/src/mocks/upgrader.ts +1 -1
- package/src/stream-muxer/close-test.ts +110 -14
- package/src/stream-muxer/fixtures/pb/message.proto +7 -0
- package/src/stream-muxer/fixtures/pb/message.ts +87 -0
- package/src/stream-muxer/spawner.ts +3 -2
- package/src/stream-muxer/stress-test.ts +1 -1
- package/src/transport/listen-test.ts +1 -1
package/dist/src/mocks/muxer.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractStream } from '@libp2p/interface/stream-muxer/stream';
|
|
2
2
|
import { logger } from '@libp2p/logger';
|
|
3
3
|
import { abortableSource } from 'abortable-iterator';
|
|
4
|
-
import { anySignal } from 'any-signal';
|
|
5
4
|
import map from 'it-map';
|
|
6
5
|
import * as ndjson from 'it-ndjson';
|
|
7
6
|
import { pipe } from 'it-pipe';
|
|
@@ -11,181 +10,48 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
|
11
10
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
12
11
|
let muxers = 0;
|
|
13
12
|
let streams = 0;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
id;
|
|
17
|
-
input;
|
|
18
|
-
stream;
|
|
19
|
-
type;
|
|
20
|
-
sinkEnded;
|
|
21
|
-
sourceEnded;
|
|
22
|
-
abortController;
|
|
23
|
-
resetController;
|
|
24
|
-
closeController;
|
|
25
|
-
log;
|
|
13
|
+
class MuxedStream extends AbstractStream {
|
|
14
|
+
push;
|
|
26
15
|
constructor(init) {
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
let endErr;
|
|
37
|
-
const onSourceEnd = (err) => {
|
|
38
|
-
if (this.sourceEnded) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
this.log('onSourceEnd sink ended? %s', this.sinkEnded);
|
|
42
|
-
this.sourceEnded = true;
|
|
43
|
-
if (err != null && endErr == null) {
|
|
44
|
-
endErr = err;
|
|
45
|
-
}
|
|
46
|
-
if (this.sinkEnded) {
|
|
47
|
-
this.stream.timeline.close = Date.now();
|
|
48
|
-
if (onEnd != null) {
|
|
49
|
-
onEnd(endErr);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
16
|
+
super(init);
|
|
17
|
+
this.push = init.push;
|
|
18
|
+
}
|
|
19
|
+
sendNewStream() {
|
|
20
|
+
// If initiator, open a new stream
|
|
21
|
+
const createMsg = {
|
|
22
|
+
id: this.id,
|
|
23
|
+
type: 'create',
|
|
24
|
+
direction: 'outbound'
|
|
52
25
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
if (this.sourceEnded) {
|
|
63
|
-
this.stream.timeline.close = Date.now();
|
|
64
|
-
if (onEnd != null) {
|
|
65
|
-
onEnd(endErr);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
26
|
+
this.push.push(createMsg);
|
|
27
|
+
}
|
|
28
|
+
sendData(data) {
|
|
29
|
+
const dataMsg = {
|
|
30
|
+
id: this.id,
|
|
31
|
+
type: 'data',
|
|
32
|
+
chunk: uint8ArrayToString(data.subarray(), 'base64pad'),
|
|
33
|
+
direction: this.direction
|
|
68
34
|
};
|
|
69
|
-
this.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
id,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
if (this.type === 'initiator') {
|
|
86
|
-
// If initiator, open a new stream
|
|
87
|
-
const createMsg = {
|
|
88
|
-
id: this.id,
|
|
89
|
-
type: 'create',
|
|
90
|
-
direction: this.type
|
|
91
|
-
};
|
|
92
|
-
push.push(createMsg);
|
|
93
|
-
}
|
|
94
|
-
const list = new Uint8ArrayList();
|
|
95
|
-
for await (const chunk of source) {
|
|
96
|
-
list.append(chunk);
|
|
97
|
-
while (list.length > 0) {
|
|
98
|
-
const available = Math.min(list.length, MAX_MESSAGE_SIZE);
|
|
99
|
-
const dataMsg = {
|
|
100
|
-
id,
|
|
101
|
-
type: 'data',
|
|
102
|
-
chunk: uint8ArrayToString(list.subarray(0, available), 'base64pad'),
|
|
103
|
-
direction: this.type
|
|
104
|
-
};
|
|
105
|
-
push.push(dataMsg);
|
|
106
|
-
list.consume(available);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
if (err.type === 'aborted' && err.message === 'The operation was aborted') {
|
|
112
|
-
if (this.closeController.signal.aborted) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (this.resetController.signal.aborted) {
|
|
116
|
-
err.message = 'stream reset';
|
|
117
|
-
err.code = 'ERR_STREAM_RESET';
|
|
118
|
-
}
|
|
119
|
-
if (this.abortController.signal.aborted) {
|
|
120
|
-
err.message = 'stream aborted';
|
|
121
|
-
err.code = 'ERR_STREAM_ABORT';
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// Send no more data if this stream was remotely reset
|
|
125
|
-
if (err.code !== 'ERR_STREAM_RESET') {
|
|
126
|
-
const resetMsg = {
|
|
127
|
-
id,
|
|
128
|
-
type: 'reset',
|
|
129
|
-
direction: this.type
|
|
130
|
-
};
|
|
131
|
-
push.push(resetMsg);
|
|
132
|
-
}
|
|
133
|
-
this.log('sink erred', err);
|
|
134
|
-
this.input.end(err);
|
|
135
|
-
onSinkEnd(err);
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
signal.clear();
|
|
140
|
-
}
|
|
141
|
-
this.log('sink ended');
|
|
142
|
-
onSinkEnd();
|
|
143
|
-
const closeMsg = {
|
|
144
|
-
id,
|
|
145
|
-
type: 'close',
|
|
146
|
-
direction: this.type
|
|
147
|
-
};
|
|
148
|
-
push.push(closeMsg);
|
|
149
|
-
},
|
|
150
|
-
source: this.input,
|
|
151
|
-
// Close for reading
|
|
152
|
-
close: () => {
|
|
153
|
-
this.stream.closeRead();
|
|
154
|
-
this.stream.closeWrite();
|
|
155
|
-
},
|
|
156
|
-
closeRead: () => {
|
|
157
|
-
this.input.end();
|
|
158
|
-
},
|
|
159
|
-
closeWrite: () => {
|
|
160
|
-
this.closeController.abort();
|
|
161
|
-
const closeMsg = {
|
|
162
|
-
id,
|
|
163
|
-
type: 'close',
|
|
164
|
-
direction: this.type
|
|
165
|
-
};
|
|
166
|
-
push.push(closeMsg);
|
|
167
|
-
onSinkEnd();
|
|
168
|
-
},
|
|
169
|
-
// Close for reading and writing (local error)
|
|
170
|
-
abort: (err) => {
|
|
171
|
-
// End the source with the passed error
|
|
172
|
-
this.input.end(err);
|
|
173
|
-
this.abortController.abort();
|
|
174
|
-
onSinkEnd(err);
|
|
175
|
-
},
|
|
176
|
-
// Close immediately for reading and writing (remote error)
|
|
177
|
-
reset: () => {
|
|
178
|
-
const err = new CodeError('stream reset', 'ERR_STREAM_RESET');
|
|
179
|
-
this.resetController.abort();
|
|
180
|
-
this.input.end(err);
|
|
181
|
-
onSinkEnd(err);
|
|
182
|
-
},
|
|
183
|
-
direction: type === 'initiator' ? 'outbound' : 'inbound',
|
|
184
|
-
timeline: {
|
|
185
|
-
open: Date.now()
|
|
186
|
-
},
|
|
187
|
-
metadata: {}
|
|
35
|
+
this.push.push(dataMsg);
|
|
36
|
+
}
|
|
37
|
+
sendReset() {
|
|
38
|
+
const resetMsg = {
|
|
39
|
+
id: this.id,
|
|
40
|
+
type: 'reset',
|
|
41
|
+
direction: this.direction
|
|
42
|
+
};
|
|
43
|
+
this.push.push(resetMsg);
|
|
44
|
+
}
|
|
45
|
+
sendCloseWrite() {
|
|
46
|
+
const closeMsg = {
|
|
47
|
+
id: this.id,
|
|
48
|
+
type: 'close',
|
|
49
|
+
direction: this.direction
|
|
188
50
|
};
|
|
51
|
+
this.push.push(closeMsg);
|
|
52
|
+
}
|
|
53
|
+
sendCloseRead() {
|
|
54
|
+
// does not support close read, only close write
|
|
189
55
|
}
|
|
190
56
|
}
|
|
191
57
|
class MockMuxer {
|
|
@@ -209,8 +75,13 @@ class MockMuxer {
|
|
|
209
75
|
this.closeController = new AbortController();
|
|
210
76
|
// receives data from the muxer at the other end of the stream
|
|
211
77
|
this.source = this.input = pushable({
|
|
212
|
-
onEnd: (
|
|
213
|
-
this.
|
|
78
|
+
onEnd: () => {
|
|
79
|
+
for (const stream of this.registryInitiatorStreams.values()) {
|
|
80
|
+
stream.destroy();
|
|
81
|
+
}
|
|
82
|
+
for (const stream of this.registryRecipientStreams.values()) {
|
|
83
|
+
stream.destroy();
|
|
84
|
+
}
|
|
214
85
|
}
|
|
215
86
|
});
|
|
216
87
|
// receives messages from all of the muxed streams
|
|
@@ -237,15 +108,15 @@ class MockMuxer {
|
|
|
237
108
|
}
|
|
238
109
|
handleMessage(message) {
|
|
239
110
|
let muxedStream;
|
|
240
|
-
const registry = message.direction === '
|
|
111
|
+
const registry = message.direction === 'outbound' ? this.registryRecipientStreams : this.registryInitiatorStreams;
|
|
241
112
|
if (message.type === 'create') {
|
|
242
113
|
if (registry.has(message.id)) {
|
|
243
114
|
throw new Error(`Already had stream for ${message.id}`);
|
|
244
115
|
}
|
|
245
|
-
muxedStream = this.createStream(message.id, '
|
|
246
|
-
registry.set(muxedStream.
|
|
116
|
+
muxedStream = this.createStream(message.id, 'inbound');
|
|
117
|
+
registry.set(muxedStream.id, muxedStream);
|
|
247
118
|
if (this.options.onIncomingStream != null) {
|
|
248
|
-
this.options.onIncomingStream(muxedStream
|
|
119
|
+
this.options.onIncomingStream(muxedStream);
|
|
249
120
|
}
|
|
250
121
|
}
|
|
251
122
|
muxedStream = registry.get(message.id);
|
|
@@ -254,68 +125,71 @@ class MockMuxer {
|
|
|
254
125
|
return;
|
|
255
126
|
}
|
|
256
127
|
if (message.type === 'data') {
|
|
257
|
-
muxedStream.
|
|
128
|
+
muxedStream.sourcePush(new Uint8ArrayList(uint8ArrayFromString(message.chunk, 'base64pad')));
|
|
258
129
|
}
|
|
259
130
|
else if (message.type === 'reset') {
|
|
260
|
-
this.log('-> reset stream %s %s', muxedStream.
|
|
261
|
-
muxedStream.
|
|
131
|
+
this.log('-> reset stream %s %s', muxedStream.direction, muxedStream.id);
|
|
132
|
+
muxedStream.reset();
|
|
262
133
|
}
|
|
263
134
|
else if (message.type === 'close') {
|
|
264
|
-
this.log('-> closing stream %s %s', muxedStream.
|
|
265
|
-
muxedStream.
|
|
135
|
+
this.log('-> closing stream %s %s', muxedStream.direction, muxedStream.id);
|
|
136
|
+
muxedStream.remoteCloseWrite();
|
|
266
137
|
}
|
|
267
138
|
}
|
|
268
139
|
get streams() {
|
|
269
140
|
return Array.from(this.registryRecipientStreams.values())
|
|
270
|
-
.concat(Array.from(this.registryInitiatorStreams.values()))
|
|
271
|
-
.map(({ stream }) => stream);
|
|
141
|
+
.concat(Array.from(this.registryInitiatorStreams.values()));
|
|
272
142
|
}
|
|
273
143
|
newStream(name) {
|
|
274
144
|
if (this.closeController.signal.aborted) {
|
|
275
145
|
throw new Error('Muxer already closed');
|
|
276
146
|
}
|
|
277
147
|
this.log('newStream %s', name);
|
|
278
|
-
const storedStream = this.createStream(name, '
|
|
279
|
-
this.registryInitiatorStreams.set(storedStream.
|
|
280
|
-
return storedStream
|
|
148
|
+
const storedStream = this.createStream(name, 'outbound');
|
|
149
|
+
this.registryInitiatorStreams.set(storedStream.id, storedStream);
|
|
150
|
+
return storedStream;
|
|
281
151
|
}
|
|
282
|
-
createStream(name,
|
|
283
|
-
const id = name ?? `${
|
|
284
|
-
this.log('createStream %s %s',
|
|
152
|
+
createStream(name, direction = 'outbound') {
|
|
153
|
+
const id = name ?? `${streams++}`;
|
|
154
|
+
this.log('createStream %s %s', direction, id);
|
|
285
155
|
const muxedStream = new MuxedStream({
|
|
286
156
|
id,
|
|
287
|
-
|
|
157
|
+
direction,
|
|
288
158
|
push: this.streamInput,
|
|
289
159
|
onEnd: () => {
|
|
290
|
-
this.log('stream ended
|
|
291
|
-
if (
|
|
292
|
-
this.registryInitiatorStreams.delete(id);
|
|
160
|
+
this.log('stream ended');
|
|
161
|
+
if (direction === 'outbound') {
|
|
162
|
+
this.registryInitiatorStreams.delete(muxedStream.id);
|
|
293
163
|
}
|
|
294
164
|
else {
|
|
295
|
-
this.registryRecipientStreams.delete(id);
|
|
165
|
+
this.registryRecipientStreams.delete(muxedStream.id);
|
|
296
166
|
}
|
|
297
167
|
if (this.options.onStreamEnd != null) {
|
|
298
|
-
this.options.onStreamEnd(muxedStream
|
|
168
|
+
this.options.onStreamEnd(muxedStream);
|
|
299
169
|
}
|
|
300
|
-
}
|
|
170
|
+
},
|
|
171
|
+
log: logger(`libp2p:mock-muxer:stream:${direction}:${id}`)
|
|
301
172
|
});
|
|
302
173
|
return muxedStream;
|
|
303
174
|
}
|
|
304
|
-
close(
|
|
305
|
-
if (this.closeController.signal.aborted)
|
|
175
|
+
async close(options) {
|
|
176
|
+
if (this.closeController.signal.aborted) {
|
|
306
177
|
return;
|
|
307
|
-
this.log('closing muxed streams');
|
|
308
|
-
if (err == null) {
|
|
309
|
-
this.streams.forEach(s => {
|
|
310
|
-
s.close();
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
this.streams.forEach(s => {
|
|
315
|
-
s.abort(err);
|
|
316
|
-
});
|
|
317
178
|
}
|
|
179
|
+
this.log('closing muxed streams');
|
|
180
|
+
await Promise.all(this.streams.map(async (s) => s.close()));
|
|
318
181
|
this.closeController.abort();
|
|
182
|
+
this.input.end();
|
|
183
|
+
}
|
|
184
|
+
abort(err) {
|
|
185
|
+
if (this.closeController.signal.aborted) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this.log('aborting muxed streams');
|
|
189
|
+
this.streams.forEach(s => {
|
|
190
|
+
s.abort(err);
|
|
191
|
+
});
|
|
192
|
+
this.closeController.abort(err);
|
|
319
193
|
this.input.end(err);
|
|
320
194
|
}
|
|
321
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Libp2pEvents } from '@libp2p/interface';
|
|
2
2
|
import type { EventEmitter } from '@libp2p/interface/events';
|
|
3
|
+
import type { Upgrader } from '@libp2p/interface/transport';
|
|
3
4
|
import type { Registrar } from '@libp2p/interface-internal/registrar';
|
|
4
|
-
import type { Upgrader } from '@libp2p/interface-internal/upgrader';
|
|
5
5
|
export interface MockUpgraderInit {
|
|
6
6
|
registrar?: Registrar;
|
|
7
7
|
events?: EventEmitter<Libp2pEvents>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../../src/mocks/upgrader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../../src/mocks/upgrader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACpC;AAoCD,wBAAgB,YAAY,CAAE,IAAI,GAAE,gBAAqB,GAAG,QAAQ,CAEnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/close-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"close-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/close-test.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;iCAehD,UAAU,kBAAkB,CAAC,KAAG,IAAI;AAA5D,wBA2ZC"}
|
|
@@ -6,9 +6,12 @@ import all from 'it-all';
|
|
|
6
6
|
import drain from 'it-drain';
|
|
7
7
|
import { duplexPair } from 'it-pair/duplex';
|
|
8
8
|
import { pipe } from 'it-pipe';
|
|
9
|
+
import { pbStream } from 'it-protobuf-stream';
|
|
10
|
+
import toBuffer from 'it-to-buffer';
|
|
9
11
|
import pDefer from 'p-defer';
|
|
10
12
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
11
13
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
14
|
+
import { Message } from './fixtures/pb/message.js';
|
|
12
15
|
function randomBuffer() {
|
|
13
16
|
return uint8ArrayFromString(Math.random().toString());
|
|
14
17
|
}
|
|
@@ -44,9 +47,9 @@ export default (common) => {
|
|
|
44
47
|
await pipe(infiniteRandom, stream, drain);
|
|
45
48
|
}));
|
|
46
49
|
expect(dialer.streams).to.have.lengthOf(expectedStreams);
|
|
47
|
-
// Pause, and then
|
|
50
|
+
// Pause, and then close the dialer
|
|
48
51
|
await delay(50);
|
|
49
|
-
await pipe([
|
|
52
|
+
await pipe([], dialer, drain);
|
|
50
53
|
expect(openedStreams).to.have.equal(expectedStreams);
|
|
51
54
|
expect(dialer.streams).to.have.lengthOf(0);
|
|
52
55
|
});
|
|
@@ -74,7 +77,7 @@ export default (common) => {
|
|
|
74
77
|
expect(dialer.streams, 'dialer - number of opened streams should match number of calls to newStream').to.have.lengthOf(expectedStreams);
|
|
75
78
|
// Pause, and then close the dialer
|
|
76
79
|
await delay(50);
|
|
77
|
-
dialer.close();
|
|
80
|
+
await dialer.close();
|
|
78
81
|
expect(openedStreams, 'listener - number of opened streams should match number of calls to newStream').to.have.equal(expectedStreams);
|
|
79
82
|
expect(dialer.streams, 'all tracked streams should be deleted after the muxer has called close').to.have.lengthOf(0);
|
|
80
83
|
});
|
|
@@ -103,7 +106,7 @@ export default (common) => {
|
|
|
103
106
|
// Pause, and then close the dialer
|
|
104
107
|
await delay(50);
|
|
105
108
|
// close _with an error_
|
|
106
|
-
dialer.
|
|
109
|
+
dialer.abort(new Error('Oh no!'));
|
|
107
110
|
const timeoutError = new Error('timeout');
|
|
108
111
|
for (const pipe of streamPipes) {
|
|
109
112
|
try {
|
|
@@ -125,7 +128,7 @@ export default (common) => {
|
|
|
125
128
|
it('calling newStream after close throws an error', async () => {
|
|
126
129
|
const dialerFactory = await common.setup();
|
|
127
130
|
const dialer = dialerFactory.createStreamMuxer({ direction: 'outbound' });
|
|
128
|
-
dialer.close();
|
|
131
|
+
await dialer.close();
|
|
129
132
|
try {
|
|
130
133
|
await dialer.newStream();
|
|
131
134
|
expect.fail('newStream should throw if called after close');
|
|
@@ -188,7 +191,7 @@ export default (common) => {
|
|
|
188
191
|
onIncomingStream: (stream) => {
|
|
189
192
|
void Promise.resolve().then(async () => {
|
|
190
193
|
// Immediate close for write
|
|
191
|
-
stream.closeWrite();
|
|
194
|
+
await stream.closeWrite();
|
|
192
195
|
const results = await pipe(stream, async (source) => {
|
|
193
196
|
const data = [];
|
|
194
197
|
for await (const chunk of source) {
|
|
@@ -212,7 +215,7 @@ export default (common) => {
|
|
|
212
215
|
const stream = await dialer.newStream();
|
|
213
216
|
await stream.sink(data);
|
|
214
217
|
const err = await deferred.promise;
|
|
215
|
-
expect(err).to.have.property('
|
|
218
|
+
expect(err).to.have.property('code', 'ERR_SINK_INVALID_STATE');
|
|
216
219
|
});
|
|
217
220
|
it('can close a stream for reading', async () => {
|
|
218
221
|
const deferred = pDefer();
|
|
@@ -220,6 +223,7 @@ export default (common) => {
|
|
|
220
223
|
const dialerFactory = await common.setup();
|
|
221
224
|
const dialer = dialerFactory.createStreamMuxer({ direction: 'outbound' });
|
|
222
225
|
const data = [randomBuffer(), randomBuffer()].map(d => new Uint8ArrayList(d));
|
|
226
|
+
const expected = toBuffer(data.map(d => d.subarray()));
|
|
223
227
|
const listenerFactory = await common.setup();
|
|
224
228
|
const listener = listenerFactory.createStreamMuxer({
|
|
225
229
|
direction: 'inbound',
|
|
@@ -230,14 +234,14 @@ export default (common) => {
|
|
|
230
234
|
void pipe(p[0], dialer, p[0]);
|
|
231
235
|
void pipe(p[1], listener, p[1]);
|
|
232
236
|
const stream = await dialer.newStream();
|
|
233
|
-
stream.closeRead();
|
|
237
|
+
await stream.closeRead();
|
|
234
238
|
// Source should be done
|
|
235
239
|
void Promise.resolve().then(async () => {
|
|
236
240
|
expect(await stream.source.next()).to.have.property('done', true);
|
|
237
241
|
await stream.sink(data);
|
|
238
242
|
});
|
|
239
243
|
const results = await deferred.promise;
|
|
240
|
-
expect(results).to.
|
|
244
|
+
expect(toBuffer(results.map(b => b.subarray()))).to.equalBytes(expected);
|
|
241
245
|
});
|
|
242
246
|
it('calls onStreamEnd for closed streams not previously written', async () => {
|
|
243
247
|
const deferred = pDefer();
|
|
@@ -248,7 +252,7 @@ export default (common) => {
|
|
|
248
252
|
onStreamEnd
|
|
249
253
|
});
|
|
250
254
|
const stream = await dialer.newStream();
|
|
251
|
-
stream.close();
|
|
255
|
+
await stream.close();
|
|
252
256
|
await deferred.promise;
|
|
253
257
|
});
|
|
254
258
|
it('calls onStreamEnd for read and write closed streams not previously written', async () => {
|
|
@@ -260,10 +264,94 @@ export default (common) => {
|
|
|
260
264
|
onStreamEnd
|
|
261
265
|
});
|
|
262
266
|
const stream = await dialer.newStream();
|
|
263
|
-
stream.closeWrite();
|
|
264
|
-
stream.closeRead();
|
|
267
|
+
await stream.closeWrite();
|
|
268
|
+
await stream.closeRead();
|
|
265
269
|
await deferred.promise;
|
|
266
270
|
});
|
|
271
|
+
it('should wait for all data to be sent when closing streams', async () => {
|
|
272
|
+
const deferred = pDefer();
|
|
273
|
+
const p = duplexPair();
|
|
274
|
+
const dialerFactory = await common.setup();
|
|
275
|
+
const dialer = dialerFactory.createStreamMuxer({ direction: 'outbound' });
|
|
276
|
+
const listenerFactory = await common.setup();
|
|
277
|
+
const listener = listenerFactory.createStreamMuxer({
|
|
278
|
+
direction: 'inbound',
|
|
279
|
+
onIncomingStream: (stream) => {
|
|
280
|
+
const pb = pbStream(stream);
|
|
281
|
+
void pb.read(Message)
|
|
282
|
+
.then(async (message) => {
|
|
283
|
+
deferred.resolve(message);
|
|
284
|
+
await pb.unwrap().close();
|
|
285
|
+
})
|
|
286
|
+
.catch(err => {
|
|
287
|
+
deferred.reject(err);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
void pipe(p[0], dialer, p[0]);
|
|
292
|
+
void pipe(p[1], listener, p[1]);
|
|
293
|
+
const message = {
|
|
294
|
+
message: 'hello world',
|
|
295
|
+
value: 5,
|
|
296
|
+
flag: true
|
|
297
|
+
};
|
|
298
|
+
const stream = await dialer.newStream();
|
|
299
|
+
const pb = pbStream(stream);
|
|
300
|
+
await pb.write(message, Message);
|
|
301
|
+
await pb.unwrap().close();
|
|
302
|
+
await expect(deferred.promise).to.eventually.deep.equal(message);
|
|
303
|
+
});
|
|
304
|
+
/*
|
|
305
|
+
it('should abort closing a stream with outstanding data to read', async () => {
|
|
306
|
+
const deferred = pDefer<Message>()
|
|
307
|
+
|
|
308
|
+
const p = duplexPair<Uint8Array>()
|
|
309
|
+
const dialerFactory = await common.setup()
|
|
310
|
+
const dialer = dialerFactory.createStreamMuxer({ direction: 'outbound' })
|
|
311
|
+
|
|
312
|
+
const listenerFactory = await common.setup()
|
|
313
|
+
const listener = listenerFactory.createStreamMuxer({
|
|
314
|
+
direction: 'inbound',
|
|
315
|
+
onIncomingStream: (stream) => {
|
|
316
|
+
const pb = pbStream(stream)
|
|
317
|
+
|
|
318
|
+
void pb.read(Message)
|
|
319
|
+
.then(async message => {
|
|
320
|
+
await pb.write(message, Message)
|
|
321
|
+
await pb.unwrap().close()
|
|
322
|
+
deferred.resolve(message)
|
|
323
|
+
})
|
|
324
|
+
.catch(err => {
|
|
325
|
+
deferred.reject(err)
|
|
326
|
+
})
|
|
327
|
+
}
|
|
328
|
+
})
|
|
329
|
+
|
|
330
|
+
void pipe(p[0], dialer, p[0])
|
|
331
|
+
void pipe(p[1], listener, p[1])
|
|
332
|
+
|
|
333
|
+
const message = {
|
|
334
|
+
message: 'hello world',
|
|
335
|
+
value: 5,
|
|
336
|
+
flag: true
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
const stream = await dialer.newStream()
|
|
340
|
+
|
|
341
|
+
const pb = pbStream(stream)
|
|
342
|
+
await pb.write(message, Message)
|
|
343
|
+
|
|
344
|
+
console.info('await write back')
|
|
345
|
+
await deferred.promise
|
|
346
|
+
|
|
347
|
+
// let message arrive
|
|
348
|
+
await delay(100)
|
|
349
|
+
|
|
350
|
+
// close should time out as message is never read
|
|
351
|
+
await expect(pb.unwrap().close()).to.eventually.be.rejected
|
|
352
|
+
.with.property('code', 'ERR_CLOSE_READ_ABORTED')
|
|
353
|
+
})
|
|
354
|
+
*/
|
|
267
355
|
});
|
|
268
356
|
};
|
|
269
357
|
//# sourceMappingURL=close-test.js.map
|