@libp2p/interface-compliance-tests 1.1.14 → 1.1.17
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-encrypter/index.d.ts +5 -0
- package/dist/src/connection-encrypter/index.d.ts.map +1 -0
- package/dist/src/{crypto → connection-encrypter}/index.js +2 -2
- package/dist/src/connection-encrypter/index.js.map +1 -0
- package/dist/src/{crypto → connection-encrypter}/utils/index.d.ts +0 -0
- package/dist/src/connection-encrypter/utils/index.d.ts.map +1 -0
- package/dist/src/{crypto → connection-encrypter}/utils/index.js +0 -0
- package/dist/src/connection-encrypter/utils/index.js.map +1 -0
- package/dist/src/mocks/connection-encrypter.d.ts +3 -0
- package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
- package/dist/src/mocks/connection-encrypter.js +93 -0
- package/dist/src/mocks/connection-encrypter.js.map +1 -0
- package/dist/src/mocks/connection-manager.d.ts +6 -3
- package/dist/src/mocks/connection-manager.d.ts.map +1 -1
- package/dist/src/mocks/connection-manager.js +9 -0
- package/dist/src/mocks/connection-manager.js.map +1 -1
- package/dist/src/mocks/connection.d.ts +1 -1
- package/dist/src/mocks/connection.d.ts.map +1 -1
- package/dist/src/mocks/connection.js +68 -49
- package/dist/src/mocks/connection.js.map +1 -1
- package/dist/src/mocks/duplex.d.ts +3 -0
- package/dist/src/mocks/duplex.d.ts.map +1 -0
- package/dist/src/mocks/duplex.js +7 -0
- package/dist/src/mocks/duplex.js.map +1 -0
- package/dist/src/mocks/index.d.ts +3 -2
- package/dist/src/mocks/index.d.ts.map +1 -1
- package/dist/src/mocks/index.js +2 -1
- package/dist/src/mocks/index.js.map +1 -1
- package/dist/src/mocks/multiaddr-connection.d.ts +12 -0
- package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
- package/dist/src/mocks/multiaddr-connection.js +37 -0
- package/dist/src/mocks/multiaddr-connection.js.map +1 -1
- package/dist/src/mocks/muxer.d.ts +8 -2
- package/dist/src/mocks/muxer.d.ts.map +1 -1
- package/dist/src/mocks/muxer.js +22 -13
- package/dist/src/mocks/muxer.js.map +1 -1
- package/dist/src/mocks/registrar.d.ts +6 -6
- package/dist/src/mocks/registrar.d.ts.map +1 -1
- package/dist/src/mocks/registrar.js +23 -33
- package/dist/src/mocks/registrar.js.map +1 -1
- package/dist/src/mocks/upgrader.d.ts +11 -3
- package/dist/src/mocks/upgrader.d.ts.map +1 -1
- package/dist/src/mocks/upgrader.js +28 -23
- package/dist/src/mocks/upgrader.js.map +1 -1
- package/dist/src/pubsub/api.d.ts +3 -4
- package/dist/src/pubsub/api.d.ts.map +1 -1
- package/dist/src/pubsub/api.js +8 -3
- package/dist/src/pubsub/api.js.map +1 -1
- package/dist/src/pubsub/connection-handlers.d.ts +3 -4
- package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
- package/dist/src/pubsub/connection-handlers.js +41 -16
- package/dist/src/pubsub/connection-handlers.js.map +1 -1
- package/dist/src/pubsub/emit-self.d.ts +3 -4
- package/dist/src/pubsub/emit-self.d.ts.map +1 -1
- package/dist/src/pubsub/emit-self.js +15 -6
- package/dist/src/pubsub/emit-self.js.map +1 -1
- package/dist/src/pubsub/index.d.ts +8 -3
- package/dist/src/pubsub/index.d.ts.map +1 -1
- package/dist/src/pubsub/index.js.map +1 -1
- package/dist/src/pubsub/messages.d.ts +3 -4
- package/dist/src/pubsub/messages.d.ts.map +1 -1
- package/dist/src/pubsub/messages.js +13 -6
- package/dist/src/pubsub/messages.js.map +1 -1
- package/dist/src/pubsub/multiple-nodes.d.ts +3 -4
- package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
- package/dist/src/pubsub/multiple-nodes.js +57 -24
- package/dist/src/pubsub/multiple-nodes.js.map +1 -1
- package/dist/src/pubsub/two-nodes.d.ts +3 -4
- package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
- package/dist/src/pubsub/two-nodes.js +16 -7
- package/dist/src/pubsub/two-nodes.js.map +1 -1
- package/dist/src/pubsub/utils.d.ts +2 -2
- package/dist/src/pubsub/utils.js +1 -1
- package/dist/src/pubsub/utils.js.map +1 -1
- package/dist/src/stream-muxer/base-test.d.ts +2 -2
- package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/base-test.js +17 -8
- package/dist/src/stream-muxer/base-test.js.map +1 -1
- package/dist/src/stream-muxer/close-test.d.ts +2 -2
- package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/close-test.js +9 -4
- package/dist/src/stream-muxer/close-test.js.map +1 -1
- package/dist/src/stream-muxer/index.d.ts +2 -2
- package/dist/src/stream-muxer/index.d.ts.map +1 -1
- package/dist/src/stream-muxer/index.js.map +1 -1
- package/dist/src/stream-muxer/mega-stress-test.d.ts +2 -2
- package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/mega-stress-test.js +5 -1
- package/dist/src/stream-muxer/mega-stress-test.js.map +1 -1
- package/dist/src/stream-muxer/spawner.d.ts +2 -2
- package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
- package/dist/src/stream-muxer/spawner.js.map +1 -1
- package/dist/src/stream-muxer/stress-test.d.ts +2 -2
- package/dist/src/stream-muxer/stress-test.d.ts.map +1 -1
- package/dist/src/stream-muxer/stress-test.js +5 -1
- package/dist/src/stream-muxer/stress-test.js.map +1 -1
- package/dist/src/transport/dial-test.d.ts +2 -2
- package/dist/src/transport/dial-test.d.ts.map +1 -1
- package/dist/src/transport/dial-test.js +17 -9
- package/dist/src/transport/dial-test.js.map +1 -1
- package/dist/src/transport/filter-test.d.ts +2 -2
- package/dist/src/transport/filter-test.d.ts.map +1 -1
- package/dist/src/transport/filter-test.js +1 -2
- package/dist/src/transport/filter-test.js.map +1 -1
- package/dist/src/transport/index.d.ts +3 -6
- package/dist/src/transport/index.d.ts.map +1 -1
- package/dist/src/transport/index.js.map +1 -1
- package/dist/src/transport/listen-test.d.ts +2 -2
- package/dist/src/transport/listen-test.d.ts.map +1 -1
- package/dist/src/transport/listen-test.js +34 -17
- package/dist/src/transport/listen-test.js.map +1 -1
- package/package.json +10 -10
- package/src/{crypto → connection-encrypter}/index.ts +5 -5
- package/src/{crypto → connection-encrypter}/utils/index.ts +0 -0
- package/src/mocks/connection-encrypter.ts +110 -0
- package/src/mocks/connection-manager.ts +15 -3
- package/src/mocks/connection.ts +104 -57
- package/src/mocks/duplex.ts +8 -0
- package/src/mocks/index.ts +3 -2
- package/src/mocks/multiaddr-connection.ts +47 -0
- package/src/mocks/muxer.ts +32 -22
- package/src/mocks/registrar.ts +30 -40
- package/src/mocks/upgrader.ts +33 -23
- package/src/pubsub/api.ts +15 -10
- package/src/pubsub/connection-handlers.ts +64 -39
- package/src/pubsub/emit-self.ts +21 -13
- package/src/pubsub/index.ts +9 -3
- package/src/pubsub/messages.ts +23 -14
- package/src/pubsub/multiple-nodes.ts +75 -42
- package/src/pubsub/two-nodes.ts +29 -20
- package/src/pubsub/utils.ts +4 -4
- package/src/stream-muxer/base-test.ts +19 -10
- package/src/stream-muxer/close-test.ts +11 -6
- package/src/stream-muxer/index.ts +2 -2
- package/src/stream-muxer/mega-stress-test.ts +7 -3
- package/src/stream-muxer/spawner.ts +2 -2
- package/src/stream-muxer/stress-test.ts +7 -3
- package/src/transport/dial-test.ts +21 -13
- package/src/transport/filter-test.ts +4 -5
- package/src/transport/index.ts +3 -7
- package/src/transport/listen-test.ts +39 -22
- package/dist/src/crypto/index.d.ts +0 -5
- package/dist/src/crypto/index.d.ts.map +0 -1
- package/dist/src/crypto/index.js.map +0 -1
- package/dist/src/crypto/utils/index.d.ts.map +0 -1
- package/dist/src/crypto/utils/index.js.map +0 -1
|
@@ -10,22 +10,23 @@ import { connectPeers, mockRegistrar } from '../mocks/registrar.js'
|
|
|
10
10
|
import { CustomEvent } from '@libp2p/interfaces'
|
|
11
11
|
import { waitForSubscriptionUpdate } from './utils.js'
|
|
12
12
|
import type { TestSetup } from '../index.js'
|
|
13
|
-
import type { Message
|
|
14
|
-
import type { EventMap } from './index.js'
|
|
15
|
-
import type { PeerId } from '@libp2p/interfaces/
|
|
16
|
-
import type { Registrar } from '@libp2p/interfaces/
|
|
17
|
-
import type {
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
import type { Message } from '@libp2p/interfaces/pubsub'
|
|
14
|
+
import type { EventMap, PubSubArgs } from './index.js'
|
|
15
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
16
|
+
import type { Registrar } from '@libp2p/interfaces/registrar'
|
|
17
|
+
import type { PubSubBaseProtocol } from '@libp2p/pubsub'
|
|
18
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
19
|
+
|
|
20
|
+
export default (common: TestSetup<PubSubBaseProtocol<EventMap>, PubSubArgs>) => {
|
|
20
21
|
describe('pubsub with multiple nodes', function () {
|
|
21
22
|
describe('every peer subscribes to the topic', () => {
|
|
22
23
|
describe('line', () => {
|
|
23
24
|
// line
|
|
24
25
|
// ◉────◉────◉
|
|
25
26
|
// a b c
|
|
26
|
-
let psA:
|
|
27
|
-
let psB:
|
|
28
|
-
let psC:
|
|
27
|
+
let psA: PubSubBaseProtocol<EventMap>
|
|
28
|
+
let psB: PubSubBaseProtocol<EventMap>
|
|
29
|
+
let psC: PubSubBaseProtocol<EventMap>
|
|
29
30
|
let peerIdA: PeerId
|
|
30
31
|
let peerIdB: PeerId
|
|
31
32
|
let peerIdC: PeerId
|
|
@@ -44,19 +45,31 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
44
45
|
registrarC = mockRegistrar()
|
|
45
46
|
|
|
46
47
|
psA = await common.setup({
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
components: new Components({
|
|
49
|
+
peerId: peerIdA,
|
|
50
|
+
registrar: registrarA
|
|
51
|
+
}),
|
|
52
|
+
init: {
|
|
53
|
+
emitSelf: true
|
|
54
|
+
}
|
|
50
55
|
})
|
|
51
56
|
psB = await common.setup({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
components: new Components({
|
|
58
|
+
peerId: peerIdB,
|
|
59
|
+
registrar: registrarB
|
|
60
|
+
}),
|
|
61
|
+
init: {
|
|
62
|
+
emitSelf: true
|
|
63
|
+
}
|
|
55
64
|
})
|
|
56
65
|
psC = await common.setup({
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
components: new Components({
|
|
67
|
+
peerId: peerIdC,
|
|
68
|
+
registrar: registrarC
|
|
69
|
+
}),
|
|
70
|
+
init: {
|
|
71
|
+
emitSelf: true
|
|
72
|
+
}
|
|
60
73
|
})
|
|
61
74
|
|
|
62
75
|
// Start pubsub modes
|
|
@@ -172,7 +185,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
172
185
|
waitForSubscriptionUpdate(psC, psB)
|
|
173
186
|
])
|
|
174
187
|
|
|
175
|
-
void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
|
|
188
|
+
void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
|
|
176
189
|
|
|
177
190
|
function incMsg (evt: CustomEvent<Message>) {
|
|
178
191
|
const msg = evt.detail
|
|
@@ -233,7 +246,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
233
246
|
waitForSubscriptionUpdate(psC, psB)
|
|
234
247
|
])
|
|
235
248
|
|
|
236
|
-
void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
|
|
249
|
+
void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
|
|
237
250
|
|
|
238
251
|
function incMsg (evt: CustomEvent<Message>) {
|
|
239
252
|
const msg = evt.detail
|
|
@@ -263,11 +276,11 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
263
276
|
// │b d│
|
|
264
277
|
// ◉─┘ └─◉
|
|
265
278
|
// a
|
|
266
|
-
let psA:
|
|
267
|
-
let psB:
|
|
268
|
-
let psC:
|
|
269
|
-
let psD:
|
|
270
|
-
let psE:
|
|
279
|
+
let psA: PubSubBaseProtocol<EventMap>
|
|
280
|
+
let psB: PubSubBaseProtocol<EventMap>
|
|
281
|
+
let psC: PubSubBaseProtocol<EventMap>
|
|
282
|
+
let psD: PubSubBaseProtocol<EventMap>
|
|
283
|
+
let psE: PubSubBaseProtocol<EventMap>
|
|
271
284
|
let peerIdA: PeerId
|
|
272
285
|
let peerIdB: PeerId
|
|
273
286
|
let peerIdC: PeerId
|
|
@@ -294,29 +307,49 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
294
307
|
registrarE = mockRegistrar()
|
|
295
308
|
|
|
296
309
|
psA = await common.setup({
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
310
|
+
components: new Components({
|
|
311
|
+
peerId: peerIdA,
|
|
312
|
+
registrar: registrarA
|
|
313
|
+
}),
|
|
314
|
+
init: {
|
|
315
|
+
emitSelf: true
|
|
316
|
+
}
|
|
300
317
|
})
|
|
301
318
|
psB = await common.setup({
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
319
|
+
components: new Components({
|
|
320
|
+
peerId: peerIdB,
|
|
321
|
+
registrar: registrarB
|
|
322
|
+
}),
|
|
323
|
+
init: {
|
|
324
|
+
emitSelf: true
|
|
325
|
+
}
|
|
305
326
|
})
|
|
306
327
|
psC = await common.setup({
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
328
|
+
components: new Components({
|
|
329
|
+
peerId: peerIdC,
|
|
330
|
+
registrar: registrarC
|
|
331
|
+
}),
|
|
332
|
+
init: {
|
|
333
|
+
emitSelf: true
|
|
334
|
+
}
|
|
310
335
|
})
|
|
311
336
|
psD = await common.setup({
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
337
|
+
components: new Components({
|
|
338
|
+
peerId: peerIdD,
|
|
339
|
+
registrar: registrarD
|
|
340
|
+
}),
|
|
341
|
+
init: {
|
|
342
|
+
emitSelf: true
|
|
343
|
+
}
|
|
315
344
|
})
|
|
316
345
|
psE = await common.setup({
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
346
|
+
components: new Components({
|
|
347
|
+
peerId: peerIdE,
|
|
348
|
+
registrar: registrarE
|
|
349
|
+
}),
|
|
350
|
+
init: {
|
|
351
|
+
emitSelf: true
|
|
352
|
+
}
|
|
320
353
|
})
|
|
321
354
|
|
|
322
355
|
// Start pubsub nodes
|
|
@@ -409,7 +442,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
409
442
|
waitForSubscriptionUpdate(psE, psD)
|
|
410
443
|
])
|
|
411
444
|
|
|
412
|
-
void psC.dispatchEvent(new CustomEvent('Z', { detail: uint8ArrayFromString('hey from c') }))
|
|
445
|
+
void psC.dispatchEvent(new CustomEvent<Uint8Array>('Z', { detail: uint8ArrayFromString('hey from c') }))
|
|
413
446
|
|
|
414
447
|
function incMsg (evt: CustomEvent<Message>) {
|
|
415
448
|
const msg = evt.detail
|
package/src/pubsub/two-nodes.ts
CHANGED
|
@@ -10,11 +10,12 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
|
|
|
10
10
|
import { CustomEvent } from '@libp2p/interfaces'
|
|
11
11
|
import { waitForSubscriptionUpdate } from './utils.js'
|
|
12
12
|
import type { TestSetup } from '../index.js'
|
|
13
|
-
import type { Message
|
|
14
|
-
import type { EventMap } from './index.js'
|
|
15
|
-
import type { PeerId } from '@libp2p/interfaces/
|
|
16
|
-
import type { Registrar } from '@libp2p/interfaces/
|
|
17
|
-
import type {
|
|
13
|
+
import type { Message } from '@libp2p/interfaces/pubsub'
|
|
14
|
+
import type { EventMap, PubSubArgs } from './index.js'
|
|
15
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
16
|
+
import type { Registrar } from '@libp2p/interfaces/registrar'
|
|
17
|
+
import type { PubSubBaseProtocol } from '@libp2p/pubsub'
|
|
18
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
18
19
|
|
|
19
20
|
const topic = 'foo'
|
|
20
21
|
|
|
@@ -22,10 +23,10 @@ function shouldNotHappen () {
|
|
|
22
23
|
expect.fail()
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export default (common: TestSetup<
|
|
26
|
+
export default (common: TestSetup<PubSubBaseProtocol<EventMap>, PubSubArgs>) => {
|
|
26
27
|
describe('pubsub with two nodes', () => {
|
|
27
|
-
let psA:
|
|
28
|
-
let psB:
|
|
28
|
+
let psA: PubSubBaseProtocol<EventMap>
|
|
29
|
+
let psB: PubSubBaseProtocol<EventMap>
|
|
29
30
|
let peerIdA: PeerId
|
|
30
31
|
let peerIdB: PeerId
|
|
31
32
|
let registrarA: Registrar
|
|
@@ -40,14 +41,22 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
40
41
|
registrarB = mockRegistrar()
|
|
41
42
|
|
|
42
43
|
psA = await common.setup({
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
components: new Components({
|
|
45
|
+
peerId: peerIdA,
|
|
46
|
+
registrar: registrarA
|
|
47
|
+
}),
|
|
48
|
+
init: {
|
|
49
|
+
emitSelf: true
|
|
50
|
+
}
|
|
46
51
|
})
|
|
47
52
|
psB = await common.setup({
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
components: new Components({
|
|
54
|
+
peerId: peerIdB,
|
|
55
|
+
registrar: registrarB
|
|
56
|
+
}),
|
|
57
|
+
init: {
|
|
58
|
+
emitSelf: false
|
|
59
|
+
}
|
|
51
60
|
})
|
|
52
61
|
|
|
53
62
|
// Start pubsub and connect nodes
|
|
@@ -120,7 +129,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
120
129
|
waitForSubscriptionUpdate(psB, psA)
|
|
121
130
|
])
|
|
122
131
|
|
|
123
|
-
void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
|
|
132
|
+
void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
|
|
124
133
|
|
|
125
134
|
return await defer.promise
|
|
126
135
|
})
|
|
@@ -154,7 +163,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
154
163
|
waitForSubscriptionUpdate(psB, psA)
|
|
155
164
|
])
|
|
156
165
|
|
|
157
|
-
void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
|
|
166
|
+
void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
|
|
158
167
|
|
|
159
168
|
return await defer.promise
|
|
160
169
|
})
|
|
@@ -172,7 +181,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
172
181
|
const msg = evt.detail
|
|
173
182
|
expect(uint8ArrayToString(msg.data)).to.equal('banana')
|
|
174
183
|
expect(msg.from.toString()).to.equal(peerIdB.toString())
|
|
175
|
-
expect(msg.
|
|
184
|
+
expect(msg.sequenceNumber).to.be.a('BigInt')
|
|
176
185
|
expect(msg.topic).to.be.equal(topic)
|
|
177
186
|
|
|
178
187
|
if (++counter === 10) {
|
|
@@ -188,7 +197,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
188
197
|
waitForSubscriptionUpdate(psB, psA)
|
|
189
198
|
])
|
|
190
199
|
|
|
191
|
-
Array.from({ length: 10 }, (_, i) => psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') })))
|
|
200
|
+
Array.from({ length: 10 }, (_, i) => psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') })))
|
|
192
201
|
|
|
193
202
|
return await defer.promise
|
|
194
203
|
})
|
|
@@ -254,8 +263,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
|
|
|
254
263
|
defer.resolve()
|
|
255
264
|
}, 100)
|
|
256
265
|
|
|
257
|
-
void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
|
|
258
|
-
void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
|
|
266
|
+
void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
|
|
267
|
+
void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
|
|
259
268
|
|
|
260
269
|
return await defer.promise
|
|
261
270
|
})
|
package/src/pubsub/utils.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { pEvent } from 'p-event'
|
|
2
2
|
import pWaitFor from 'p-wait-for'
|
|
3
|
-
import type { SubscriptionChangeData } from '@libp2p/interfaces/
|
|
4
|
-
import type {
|
|
3
|
+
import type { SubscriptionChangeData } from '@libp2p/interfaces/pubsub'
|
|
4
|
+
import type { PubSubBaseProtocol } from '@libp2p/pubsub'
|
|
5
5
|
|
|
6
|
-
export async function waitForSubscriptionUpdate (a:
|
|
6
|
+
export async function waitForSubscriptionUpdate (a: PubSubBaseProtocol, b: PubSubBaseProtocol) {
|
|
7
7
|
await pWaitFor(async () => {
|
|
8
8
|
const event = await pEvent<'pubsub:subscription-change', CustomEvent<SubscriptionChangeData>>(a, 'pubsub:subscription-change')
|
|
9
9
|
|
|
10
|
-
return event.detail.peerId.equals(b.
|
|
10
|
+
return event.detail.peerId.equals(b.components.getPeerId())
|
|
11
11
|
})
|
|
12
12
|
}
|
|
@@ -11,22 +11,25 @@ import { isValidTick } from '../utils/is-valid-tick.js'
|
|
|
11
11
|
import type { DeferredPromise } from 'p-defer'
|
|
12
12
|
import type { TestSetup } from '../index.js'
|
|
13
13
|
import type { Stream } from '@libp2p/interfaces/connection'
|
|
14
|
-
import type {
|
|
14
|
+
import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
|
|
15
15
|
import type { Source, Duplex } from 'it-stream-types'
|
|
16
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
16
17
|
|
|
17
18
|
async function drainAndClose (stream: Duplex<Uint8Array>) {
|
|
18
19
|
return await pipe([], stream, drain)
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
export default (common: TestSetup<
|
|
22
|
+
export default (common: TestSetup<StreamMuxerFactory>) => {
|
|
22
23
|
describe('base', () => {
|
|
23
24
|
it('Open a stream from the dialer', async () => {
|
|
24
25
|
const p = duplexPair<Uint8Array>()
|
|
25
|
-
const
|
|
26
|
+
const dialerFactory = await common.setup()
|
|
27
|
+
const dialer = dialerFactory.createStreamMuxer(new Components())
|
|
26
28
|
const onStreamPromise: DeferredPromise<Stream> = defer()
|
|
27
29
|
const onStreamEndPromise: DeferredPromise<Stream> = defer()
|
|
28
30
|
|
|
29
|
-
const
|
|
31
|
+
const listenerFactory = await common.setup()
|
|
32
|
+
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
30
33
|
onIncomingStream: (stream) => {
|
|
31
34
|
onStreamPromise.resolve(stream)
|
|
32
35
|
},
|
|
@@ -73,13 +76,15 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
73
76
|
it('Open a stream from the listener', async () => {
|
|
74
77
|
const p = duplexPair<Uint8Array>()
|
|
75
78
|
const onStreamPromise: DeferredPromise<Stream> = defer()
|
|
76
|
-
const
|
|
79
|
+
const dialerFactory = await common.setup()
|
|
80
|
+
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
77
81
|
onIncomingStream: (stream: Stream) => {
|
|
78
82
|
onStreamPromise.resolve(stream)
|
|
79
83
|
}
|
|
80
84
|
})
|
|
81
85
|
|
|
82
|
-
const
|
|
86
|
+
const listenerFactory = await common.setup()
|
|
87
|
+
const listener = listenerFactory.createStreamMuxer(new Components())
|
|
83
88
|
|
|
84
89
|
void pipe(p[0], dialer, p[0])
|
|
85
90
|
void pipe(p[1], listener, p[1])
|
|
@@ -102,13 +107,15 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
102
107
|
const p = duplexPair<Uint8Array>()
|
|
103
108
|
const onDialerStreamPromise: DeferredPromise<Stream> = defer()
|
|
104
109
|
const onListenerStreamPromise: DeferredPromise<Stream> = defer()
|
|
105
|
-
const
|
|
110
|
+
const dialerFactory = await common.setup()
|
|
111
|
+
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
106
112
|
onIncomingStream: (stream) => {
|
|
107
113
|
onDialerStreamPromise.resolve(stream)
|
|
108
114
|
}
|
|
109
115
|
})
|
|
110
116
|
|
|
111
|
-
const
|
|
117
|
+
const listenerFactory = await common.setup()
|
|
118
|
+
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
112
119
|
onIncomingStream: (stream) => {
|
|
113
120
|
onListenerStreamPromise.resolve(stream)
|
|
114
121
|
}
|
|
@@ -138,12 +145,14 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
138
145
|
const p = duplexPair<Uint8Array>()
|
|
139
146
|
const onDialerStreamPromise: DeferredPromise<Stream> = defer()
|
|
140
147
|
const onListenerStreamPromise: DeferredPromise<Stream> = defer()
|
|
141
|
-
const
|
|
148
|
+
const dialerFactory = await common.setup()
|
|
149
|
+
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
142
150
|
onIncomingStream: (stream) => {
|
|
143
151
|
onDialerStreamPromise.resolve(stream)
|
|
144
152
|
}
|
|
145
153
|
})
|
|
146
|
-
const
|
|
154
|
+
const listenerFactory = await common.setup()
|
|
155
|
+
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
147
156
|
onIncomingStream: (stream) => {
|
|
148
157
|
onListenerStreamPromise.resolve(stream)
|
|
149
158
|
}
|
|
@@ -7,7 +7,8 @@ import drain from 'it-drain'
|
|
|
7
7
|
import { expect } from 'aegir/utils/chai.js'
|
|
8
8
|
import delay from 'delay'
|
|
9
9
|
import type { TestSetup } from '../index.js'
|
|
10
|
-
import type {
|
|
10
|
+
import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
|
|
11
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
11
12
|
|
|
12
13
|
function randomBuffer () {
|
|
13
14
|
return uint8ArrayFromString(Math.random().toString())
|
|
@@ -22,15 +23,17 @@ const infiniteRandom = {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export default (common: TestSetup<
|
|
26
|
+
export default (common: TestSetup<StreamMuxerFactory>) => {
|
|
26
27
|
describe('close', () => {
|
|
27
28
|
it('closing underlying socket closes streams', async () => {
|
|
28
29
|
let openedStreams = 0
|
|
29
30
|
const expectedStreams = 5
|
|
30
|
-
const
|
|
31
|
+
const dialerFactory = await common.setup()
|
|
32
|
+
const dialer = dialerFactory.createStreamMuxer(new Components())
|
|
31
33
|
|
|
32
34
|
// Listener is echo server :)
|
|
33
|
-
const
|
|
35
|
+
const listenerFactory = await common.setup()
|
|
36
|
+
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
34
37
|
onIncomingStream: (stream) => {
|
|
35
38
|
openedStreams++
|
|
36
39
|
void pipe(stream, stream)
|
|
@@ -65,10 +68,12 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
|
|
|
65
68
|
|
|
66
69
|
it('closing one of the muxed streams doesn\'t close others', async () => {
|
|
67
70
|
const p = duplexPair<Uint8Array>()
|
|
68
|
-
const
|
|
71
|
+
const dialerFactory = await common.setup()
|
|
72
|
+
const dialer = dialerFactory.createStreamMuxer(new Components())
|
|
69
73
|
|
|
70
74
|
// Listener is echo server :)
|
|
71
|
-
const
|
|
75
|
+
const listenerFactory = await common.setup()
|
|
76
|
+
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
72
77
|
onIncomingStream: (stream) => {
|
|
73
78
|
void pipe(stream, stream)
|
|
74
79
|
}
|
|
@@ -3,9 +3,9 @@ import closeTest from './close-test.js'
|
|
|
3
3
|
import stressTest from './stress-test.js'
|
|
4
4
|
import megaStressTest from './mega-stress-test.js'
|
|
5
5
|
import type { TestSetup } from '../index.js'
|
|
6
|
-
import type {
|
|
6
|
+
import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
|
|
7
7
|
|
|
8
|
-
export default (common: TestSetup<
|
|
8
|
+
export default (common: TestSetup<StreamMuxerFactory>) => {
|
|
9
9
|
describe('interface-stream-muxer', () => {
|
|
10
10
|
baseTest(common)
|
|
11
11
|
closeTest(common)
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import spawn from './spawner.js'
|
|
2
2
|
import type { TestSetup } from '../index.js'
|
|
3
|
-
import type {
|
|
3
|
+
import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer'
|
|
4
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
4
5
|
|
|
5
|
-
export default (common: TestSetup<
|
|
6
|
-
const createMuxer = async (
|
|
6
|
+
export default (common: TestSetup<StreamMuxerFactory>) => {
|
|
7
|
+
const createMuxer = async (init?: StreamMuxerInit): Promise<StreamMuxer> => {
|
|
8
|
+
const factory = await common.setup()
|
|
9
|
+
return factory.createStreamMuxer(new Components(), init)
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
describe.skip('mega stress test', function () {
|
|
9
13
|
it('10,000 streams with 10,000 msg', async () => await spawn(createMuxer, 10000, 10000, 5000))
|
|
@@ -5,9 +5,9 @@ import pLimit from 'p-limit'
|
|
|
5
5
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
6
6
|
import drain from 'it-drain'
|
|
7
7
|
import all from 'it-all'
|
|
8
|
-
import type {
|
|
8
|
+
import type { StreamMuxer, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer'
|
|
9
9
|
|
|
10
|
-
export default async (createMuxer: (
|
|
10
|
+
export default async (createMuxer: (init?: StreamMuxerInit) => Promise<StreamMuxer>, nStreams: number, nMsg: number, limit?: number) => {
|
|
11
11
|
const [dialerSocket, listenerSocket] = duplexPair<Uint8Array>()
|
|
12
12
|
|
|
13
13
|
const msg = uint8ArrayFromString('simple msg')
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import spawn from './spawner.js'
|
|
2
2
|
import type { TestSetup } from '../index.js'
|
|
3
|
-
import type {
|
|
3
|
+
import type { StreamMuxerFactory, StreamMuxerInit, StreamMuxer } from '@libp2p/interfaces/stream-muxer'
|
|
4
|
+
import { Components } from '@libp2p/interfaces/components'
|
|
4
5
|
|
|
5
|
-
export default (common: TestSetup<
|
|
6
|
-
const createMuxer = async (
|
|
6
|
+
export default (common: TestSetup<StreamMuxerFactory>) => {
|
|
7
|
+
const createMuxer = async (init?: StreamMuxerInit): Promise<StreamMuxer> => {
|
|
8
|
+
const factory = await common.setup()
|
|
9
|
+
return factory.createStreamMuxer(new Components(), init)
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
describe('stress test', () => {
|
|
9
13
|
it('1 stream with 1 msg', async () => await spawn(createMuxer, 1, 1))
|
|
@@ -10,16 +10,16 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
|
10
10
|
import drain from 'it-drain'
|
|
11
11
|
import type { TestSetup } from '../index.js'
|
|
12
12
|
import type { Transport, Listener, Upgrader } from '@libp2p/interfaces/transport'
|
|
13
|
-
import type { TransportTestFixtures,
|
|
13
|
+
import type { TransportTestFixtures, Connector } from './index.js'
|
|
14
14
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
15
|
-
import type { Registrar } from '@libp2p/interfaces/
|
|
15
|
+
import type { Registrar } from '@libp2p/interfaces/registrar'
|
|
16
16
|
|
|
17
|
-
export default (common: TestSetup<TransportTestFixtures
|
|
17
|
+
export default (common: TestSetup<TransportTestFixtures>) => {
|
|
18
18
|
describe('dial', () => {
|
|
19
19
|
let upgrader: Upgrader
|
|
20
20
|
let registrar: Registrar
|
|
21
21
|
let addrs: Multiaddr[]
|
|
22
|
-
let transport: Transport
|
|
22
|
+
let transport: Transport
|
|
23
23
|
let connector: Connector
|
|
24
24
|
let listener: Listener
|
|
25
25
|
|
|
@@ -29,7 +29,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
29
29
|
registrar
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
({ addrs, transport, connector } = await common.setup(
|
|
32
|
+
({ addrs, transport, connector } = await common.setup())
|
|
33
33
|
})
|
|
34
34
|
|
|
35
35
|
after(async () => {
|
|
@@ -37,7 +37,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
37
37
|
})
|
|
38
38
|
|
|
39
39
|
beforeEach(async () => {
|
|
40
|
-
listener = transport.createListener({
|
|
40
|
+
listener = transport.createListener({
|
|
41
|
+
upgrader
|
|
42
|
+
})
|
|
41
43
|
return await listener.listen(addrs[0])
|
|
42
44
|
})
|
|
43
45
|
|
|
@@ -49,17 +51,19 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
49
51
|
|
|
50
52
|
it('simple', async () => {
|
|
51
53
|
const protocol = '/hello/1.0.0'
|
|
52
|
-
void registrar.handle(protocol, (
|
|
54
|
+
void registrar.handle(protocol, (data) => {
|
|
53
55
|
void pipe([
|
|
54
56
|
uint8ArrayFromString('hey')
|
|
55
57
|
],
|
|
56
|
-
|
|
58
|
+
data.stream,
|
|
57
59
|
drain
|
|
58
60
|
)
|
|
59
61
|
})
|
|
60
62
|
|
|
61
63
|
const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
|
|
62
|
-
const conn = await transport.dial(addrs[0]
|
|
64
|
+
const conn = await transport.dial(addrs[0], {
|
|
65
|
+
upgrader
|
|
66
|
+
})
|
|
63
67
|
|
|
64
68
|
const { stream } = await conn.newStream([protocol])
|
|
65
69
|
const result = await all(stream.source)
|
|
@@ -73,7 +77,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
73
77
|
|
|
74
78
|
it('can close connections', async () => {
|
|
75
79
|
const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
|
|
76
|
-
const conn = await transport.dial(addrs[0]
|
|
80
|
+
const conn = await transport.dial(addrs[0], {
|
|
81
|
+
upgrader
|
|
82
|
+
})
|
|
77
83
|
|
|
78
84
|
expect(upgradeSpy.callCount).to.equal(1)
|
|
79
85
|
await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
|
|
@@ -84,7 +90,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
84
90
|
it('to non existent listener', async () => {
|
|
85
91
|
const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
|
|
86
92
|
|
|
87
|
-
await expect(transport.dial(addrs[1]
|
|
93
|
+
await expect(transport.dial(addrs[1], {
|
|
94
|
+
upgrader
|
|
95
|
+
})).to.eventually.be.rejected()
|
|
88
96
|
expect(upgradeSpy.callCount).to.equal(0)
|
|
89
97
|
})
|
|
90
98
|
|
|
@@ -92,7 +100,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
92
100
|
const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
|
|
93
101
|
const controller = new AbortController()
|
|
94
102
|
controller.abort()
|
|
95
|
-
const conn = transport.dial(addrs[0], { signal: controller.signal })
|
|
103
|
+
const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
|
|
96
104
|
|
|
97
105
|
await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
|
|
98
106
|
expect(upgradeSpy.callCount).to.equal(0)
|
|
@@ -105,7 +113,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
|
105
113
|
connector.delay(100)
|
|
106
114
|
|
|
107
115
|
const controller = new AbortController()
|
|
108
|
-
const conn = transport.dial(addrs[0], { signal: controller.signal })
|
|
116
|
+
const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
|
|
109
117
|
setTimeout(() => controller.abort(), 50)
|
|
110
118
|
|
|
111
119
|
await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { expect } from 'aegir/utils/chai.js'
|
|
2
|
-
import { mockUpgrader } from '../mocks/upgrader.js'
|
|
3
2
|
import type { TestSetup } from '../index.js'
|
|
4
3
|
import type { Transport } from '@libp2p/interfaces/transport'
|
|
5
|
-
import type { TransportTestFixtures
|
|
4
|
+
import type { TransportTestFixtures } from './index.js'
|
|
6
5
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
7
6
|
|
|
8
|
-
export default (common: TestSetup<TransportTestFixtures
|
|
7
|
+
export default (common: TestSetup<TransportTestFixtures>) => {
|
|
9
8
|
describe('filter', () => {
|
|
10
9
|
let addrs: Multiaddr[]
|
|
11
|
-
let transport: Transport
|
|
10
|
+
let transport: Transport
|
|
12
11
|
|
|
13
12
|
before(async () => {
|
|
14
|
-
({ addrs, transport } = await common.setup(
|
|
13
|
+
({ addrs, transport } = await common.setup())
|
|
15
14
|
})
|
|
16
15
|
|
|
17
16
|
after(async () => {
|
package/src/transport/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import dial from './dial-test.js'
|
|
|
2
2
|
import listen from './listen-test.js'
|
|
3
3
|
import filter from './filter-test.js'
|
|
4
4
|
import type { TestSetup } from '../index.js'
|
|
5
|
-
import type { Transport
|
|
5
|
+
import type { Transport } from '@libp2p/interfaces/transport'
|
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
7
7
|
|
|
8
8
|
export interface Connector {
|
|
@@ -12,15 +12,11 @@ export interface Connector {
|
|
|
12
12
|
|
|
13
13
|
export interface TransportTestFixtures {
|
|
14
14
|
addrs: Multiaddr[]
|
|
15
|
-
transport: Transport
|
|
15
|
+
transport: Transport
|
|
16
16
|
connector: Connector
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
export
|
|
20
|
-
upgrader: Upgrader
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
|
|
19
|
+
export default (common: TestSetup<TransportTestFixtures>) => {
|
|
24
20
|
describe('interface-transport', () => {
|
|
25
21
|
dial(common)
|
|
26
22
|
listen(common)
|