@libp2p/interface-compliance-tests 1.1.15 → 1.1.18

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.
Files changed (135) hide show
  1. package/dist/src/connection-encrypter/index.d.ts +2 -2
  2. package/dist/src/connection-encrypter/index.d.ts.map +1 -1
  3. package/dist/src/connection-encrypter/index.js.map +1 -1
  4. package/dist/src/mocks/connection-encrypter.d.ts +3 -0
  5. package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
  6. package/dist/src/mocks/connection-encrypter.js +93 -0
  7. package/dist/src/mocks/connection-encrypter.js.map +1 -0
  8. package/dist/src/mocks/connection-manager.d.ts +6 -3
  9. package/dist/src/mocks/connection-manager.d.ts.map +1 -1
  10. package/dist/src/mocks/connection-manager.js +9 -0
  11. package/dist/src/mocks/connection-manager.js.map +1 -1
  12. package/dist/src/mocks/connection.d.ts +1 -1
  13. package/dist/src/mocks/connection.d.ts.map +1 -1
  14. package/dist/src/mocks/connection.js +68 -49
  15. package/dist/src/mocks/connection.js.map +1 -1
  16. package/dist/src/mocks/duplex.d.ts +3 -0
  17. package/dist/src/mocks/duplex.d.ts.map +1 -0
  18. package/dist/src/mocks/duplex.js +7 -0
  19. package/dist/src/mocks/duplex.js.map +1 -0
  20. package/dist/src/mocks/index.d.ts +2 -1
  21. package/dist/src/mocks/index.d.ts.map +1 -1
  22. package/dist/src/mocks/index.js +2 -1
  23. package/dist/src/mocks/index.js.map +1 -1
  24. package/dist/src/mocks/multiaddr-connection.d.ts +12 -0
  25. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
  26. package/dist/src/mocks/multiaddr-connection.js +37 -0
  27. package/dist/src/mocks/multiaddr-connection.js.map +1 -1
  28. package/dist/src/mocks/muxer.d.ts +8 -2
  29. package/dist/src/mocks/muxer.d.ts.map +1 -1
  30. package/dist/src/mocks/muxer.js +18 -9
  31. package/dist/src/mocks/muxer.js.map +1 -1
  32. package/dist/src/mocks/registrar.d.ts +6 -6
  33. package/dist/src/mocks/registrar.d.ts.map +1 -1
  34. package/dist/src/mocks/registrar.js +23 -33
  35. package/dist/src/mocks/registrar.js.map +1 -1
  36. package/dist/src/mocks/upgrader.d.ts +10 -2
  37. package/dist/src/mocks/upgrader.d.ts.map +1 -1
  38. package/dist/src/mocks/upgrader.js +28 -23
  39. package/dist/src/mocks/upgrader.js.map +1 -1
  40. package/dist/src/pubsub/api.d.ts +3 -4
  41. package/dist/src/pubsub/api.d.ts.map +1 -1
  42. package/dist/src/pubsub/api.js +8 -3
  43. package/dist/src/pubsub/api.js.map +1 -1
  44. package/dist/src/pubsub/connection-handlers.d.ts +3 -4
  45. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  46. package/dist/src/pubsub/connection-handlers.js +41 -16
  47. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  48. package/dist/src/pubsub/emit-self.d.ts +3 -4
  49. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  50. package/dist/src/pubsub/emit-self.js +15 -6
  51. package/dist/src/pubsub/emit-self.js.map +1 -1
  52. package/dist/src/pubsub/index.d.ts +7 -11
  53. package/dist/src/pubsub/index.d.ts.map +1 -1
  54. package/dist/src/pubsub/index.js.map +1 -1
  55. package/dist/src/pubsub/messages.d.ts +3 -4
  56. package/dist/src/pubsub/messages.d.ts.map +1 -1
  57. package/dist/src/pubsub/messages.js +13 -6
  58. package/dist/src/pubsub/messages.js.map +1 -1
  59. package/dist/src/pubsub/multiple-nodes.d.ts +3 -4
  60. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  61. package/dist/src/pubsub/multiple-nodes.js +57 -24
  62. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  63. package/dist/src/pubsub/two-nodes.d.ts +3 -4
  64. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  65. package/dist/src/pubsub/two-nodes.js +16 -7
  66. package/dist/src/pubsub/two-nodes.js.map +1 -1
  67. package/dist/src/pubsub/utils.d.ts +2 -2
  68. package/dist/src/pubsub/utils.js +1 -1
  69. package/dist/src/pubsub/utils.js.map +1 -1
  70. package/dist/src/stream-muxer/base-test.d.ts +2 -2
  71. package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
  72. package/dist/src/stream-muxer/base-test.js +17 -8
  73. package/dist/src/stream-muxer/base-test.js.map +1 -1
  74. package/dist/src/stream-muxer/close-test.d.ts +2 -2
  75. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  76. package/dist/src/stream-muxer/close-test.js +9 -4
  77. package/dist/src/stream-muxer/close-test.js.map +1 -1
  78. package/dist/src/stream-muxer/index.d.ts +2 -2
  79. package/dist/src/stream-muxer/index.d.ts.map +1 -1
  80. package/dist/src/stream-muxer/index.js.map +1 -1
  81. package/dist/src/stream-muxer/mega-stress-test.d.ts +2 -2
  82. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -1
  83. package/dist/src/stream-muxer/mega-stress-test.js +5 -1
  84. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -1
  85. package/dist/src/stream-muxer/spawner.d.ts +2 -2
  86. package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
  87. package/dist/src/stream-muxer/spawner.js.map +1 -1
  88. package/dist/src/stream-muxer/stress-test.d.ts +2 -2
  89. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -1
  90. package/dist/src/stream-muxer/stress-test.js +5 -1
  91. package/dist/src/stream-muxer/stress-test.js.map +1 -1
  92. package/dist/src/transport/dial-test.d.ts +2 -2
  93. package/dist/src/transport/dial-test.d.ts.map +1 -1
  94. package/dist/src/transport/dial-test.js +17 -9
  95. package/dist/src/transport/dial-test.js.map +1 -1
  96. package/dist/src/transport/filter-test.d.ts +2 -2
  97. package/dist/src/transport/filter-test.d.ts.map +1 -1
  98. package/dist/src/transport/filter-test.js +1 -2
  99. package/dist/src/transport/filter-test.js.map +1 -1
  100. package/dist/src/transport/index.d.ts +3 -6
  101. package/dist/src/transport/index.d.ts.map +1 -1
  102. package/dist/src/transport/index.js.map +1 -1
  103. package/dist/src/transport/listen-test.d.ts +2 -2
  104. package/dist/src/transport/listen-test.d.ts.map +1 -1
  105. package/dist/src/transport/listen-test.js +34 -17
  106. package/dist/src/transport/listen-test.js.map +1 -1
  107. package/package.json +8 -8
  108. package/src/connection-encrypter/index.ts +3 -3
  109. package/src/mocks/connection-encrypter.ts +110 -0
  110. package/src/mocks/connection-manager.ts +15 -3
  111. package/src/mocks/connection.ts +104 -57
  112. package/src/mocks/duplex.ts +8 -0
  113. package/src/mocks/index.ts +2 -1
  114. package/src/mocks/multiaddr-connection.ts +47 -0
  115. package/src/mocks/muxer.ts +29 -19
  116. package/src/mocks/registrar.ts +30 -40
  117. package/src/mocks/upgrader.ts +32 -22
  118. package/src/pubsub/api.ts +16 -11
  119. package/src/pubsub/connection-handlers.ts +64 -39
  120. package/src/pubsub/emit-self.ts +21 -13
  121. package/src/pubsub/index.ts +7 -11
  122. package/src/pubsub/messages.ts +23 -14
  123. package/src/pubsub/multiple-nodes.ts +75 -42
  124. package/src/pubsub/two-nodes.ts +29 -20
  125. package/src/pubsub/utils.ts +4 -4
  126. package/src/stream-muxer/base-test.ts +19 -10
  127. package/src/stream-muxer/close-test.ts +11 -6
  128. package/src/stream-muxer/index.ts +2 -2
  129. package/src/stream-muxer/mega-stress-test.ts +7 -3
  130. package/src/stream-muxer/spawner.ts +2 -2
  131. package/src/stream-muxer/stress-test.ts +7 -3
  132. package/src/transport/dial-test.ts +21 -13
  133. package/src/transport/filter-test.ts +4 -5
  134. package/src/transport/index.ts +3 -7
  135. package/src/transport/listen-test.ts +39 -22
@@ -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, PubSubOptions } from '@libp2p/interfaces/pubsub'
14
- import type { EventMap } from './index.js'
15
- import type { PeerId } from '@libp2p/interfaces/src/peer-id'
16
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
17
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
13
+ import type { Message } from '@libp2p/interfaces/pubsub'
14
+ import type { 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<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
26
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
26
27
  describe('pubsub with two nodes', () => {
27
- let psA: PubsubBaseProtocol<EventMap>
28
- let psB: PubsubBaseProtocol<EventMap>
28
+ let psA: PubSubBaseProtocol
29
+ let psB: PubSubBaseProtocol
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
- peerId: peerIdA,
44
- registrar: registrarA,
45
- emitSelf: true
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
- peerId: peerIdB,
49
- registrar: registrarB,
50
- emitSelf: false
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.seqno).to.be.a('BigInt')
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
  })
@@ -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/src/pubsub'
4
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
3
+ import type { SubscriptionChangeData } from '@libp2p/interfaces/pubsub'
4
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
5
5
 
6
- export async function waitForSubscriptionUpdate (a: PubsubBaseProtocol, b: PubsubBaseProtocol) {
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.peerId)
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
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<Muxer, MuxerInit>) => {
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 dialer = await common.setup()
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 listener = await common.setup({
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, MuxerInit>) => {
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 dialer = await common.setup({
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 listener = await common.setup()
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, MuxerInit>) => {
102
107
  const p = duplexPair<Uint8Array>()
103
108
  const onDialerStreamPromise: DeferredPromise<Stream> = defer()
104
109
  const onListenerStreamPromise: DeferredPromise<Stream> = defer()
105
- const dialer = await common.setup({
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 listener = await common.setup({
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, MuxerInit>) => {
138
145
  const p = duplexPair<Uint8Array>()
139
146
  const onDialerStreamPromise: DeferredPromise<Stream> = defer()
140
147
  const onListenerStreamPromise: DeferredPromise<Stream> = defer()
141
- const dialer = await common.setup({
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 listener = await common.setup({
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
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<Muxer, MuxerInit>) => {
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 dialer = await common.setup()
31
+ const dialerFactory = await common.setup()
32
+ const dialer = dialerFactory.createStreamMuxer(new Components())
31
33
 
32
34
  // Listener is echo server :)
33
- const listener = await common.setup({
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, MuxerInit>) => {
65
68
 
66
69
  it('closing one of the muxed streams doesn\'t close others', async () => {
67
70
  const p = duplexPair<Uint8Array>()
68
- const dialer = await common.setup()
71
+ const dialerFactory = await common.setup()
72
+ const dialer = dialerFactory.createStreamMuxer(new Components())
69
73
 
70
74
  // Listener is echo server :)
71
- const listener = await common.setup({
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
6
+ import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
7
7
 
8
- export default (common: TestSetup<Muxer, MuxerInit>) => {
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
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<Muxer, MuxerInit>) => {
6
- const createMuxer = async (init?: MuxerInit) => await common.setup(init)
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
8
+ import type { StreamMuxer, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer'
9
9
 
10
- export default async (createMuxer: (init?: MuxerInit) => Promise<Muxer>, nStreams: number, nMsg: number, limit?: number) => {
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 { Muxer, MuxerInit } from '@libp2p/interfaces/stream-muxer'
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<Muxer, MuxerInit>) => {
6
- const createMuxer = async (init?: MuxerInit) => await common.setup(init)
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, SetupArgs, Connector } from './index.js'
13
+ import type { TransportTestFixtures, Connector } from './index.js'
14
14
  import type { Multiaddr } from '@multiformats/multiaddr'
15
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
15
+ import type { Registrar } from '@libp2p/interfaces/registrar'
16
16
 
17
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
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<any, any>
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({ upgrader }))
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, (evt) => {
54
+ void registrar.handle(protocol, (data) => {
53
55
  void pipe([
54
56
  uint8ArrayFromString('hey')
55
57
  ],
56
- evt.detail.stream,
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])).to.eventually.be.rejected()
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, SetupArgs } from './index.js'
4
+ import type { TransportTestFixtures } from './index.js'
6
5
  import type { Multiaddr } from '@multiformats/multiaddr'
7
6
 
8
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
7
+ export default (common: TestSetup<TransportTestFixtures>) => {
9
8
  describe('filter', () => {
10
9
  let addrs: Multiaddr[]
11
- let transport: Transport<any, any>
10
+ let transport: Transport
12
11
 
13
12
  before(async () => {
14
- ({ addrs, transport } = await common.setup({ upgrader: mockUpgrader() }))
13
+ ({ addrs, transport } = await common.setup())
15
14
  })
16
15
 
17
16
  after(async () => {
@@ -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, Upgrader } from '@libp2p/interfaces/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 interface SetupArgs {
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)
@@ -7,19 +7,19 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
7
7
  import { isValidTick } from '../utils/is-valid-tick.js'
8
8
  import { mockUpgrader } from '../mocks/upgrader.js'
9
9
  import defer from 'p-defer'
10
+ import { mockRegistrar } from '../mocks/registrar.js'
11
+ import drain from 'it-drain'
10
12
  import { CustomEvent } from '@libp2p/interfaces'
11
13
  import type { TestSetup } from '../index.js'
12
- import type { Transport } from '@libp2p/interfaces/transport'
13
- import type { TransportTestFixtures, SetupArgs } from './index.js'
14
+ import type { Transport, Upgrader } from '@libp2p/interfaces/transport'
15
+ import type { TransportTestFixtures } from './index.js'
14
16
  import type { Multiaddr } from '@multiformats/multiaddr'
15
17
  import type { Connection } from '@libp2p/interfaces/connection'
16
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
17
- import { mockRegistrar } from '../mocks/registrar.js'
18
- import drain from 'it-drain'
18
+ import type { Registrar } from '@libp2p/interfaces/registrar'
19
19
 
20
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
20
+ export default (common: TestSetup<TransportTestFixtures>) => {
21
21
  describe('listen', () => {
22
- let upgrader = mockUpgrader()
22
+ let upgrader: Upgrader
23
23
  let addrs: Multiaddr[]
24
24
  let transport: Transport
25
25
  let registrar: Registrar
@@ -30,7 +30,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
30
30
  registrar
31
31
  });
32
32
 
33
- ({ transport, addrs } = await common.setup({ upgrader }))
33
+ ({ transport, addrs } = await common.setup())
34
34
  })
35
35
 
36
36
  after(async () => {
@@ -42,7 +42,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
42
42
  })
43
43
 
44
44
  it('simple', async () => {
45
- const listener = transport.createListener()
45
+ const listener = transport.createListener({
46
+ upgrader
47
+ })
46
48
  await listener.listen(addrs[0])
47
49
  await listener.close()
48
50
  })
@@ -52,11 +54,12 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
52
54
  const listenerConns: Connection[] = []
53
55
 
54
56
  const protocol = '/test/protocol'
55
- void registrar.handle(protocol, (evt) => {
56
- void drain(evt.detail.stream.source)
57
+ void registrar.handle(protocol, (data) => {
58
+ void drain(data.stream.source)
57
59
  })
58
60
 
59
61
  const listener = transport.createListener({
62
+ upgrader,
60
63
  handler: (conn) => {
61
64
  listenerConns.push(conn)
62
65
  }
@@ -67,8 +70,12 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
67
70
 
68
71
  // Create two connections to the listener
69
72
  const [conn1] = await Promise.all([
70
- transport.dial(addrs[0]),
71
- transport.dial(addrs[0])
73
+ transport.dial(addrs[0], {
74
+ upgrader
75
+ }),
76
+ transport.dial(addrs[0], {
77
+ upgrader
78
+ })
72
79
  ])
73
80
 
74
81
  // Give the listener a chance to finish its upgrade
@@ -102,16 +109,16 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
102
109
  sinon.stub(upgrader, 'upgradeInbound').throws()
103
110
 
104
111
  const listener = transport.createListener({
105
- handler: () => {
106
- throw new Error('should not handle the connection if upgradeInbound throws')
107
- }
112
+ upgrader
108
113
  })
109
114
 
110
115
  // Listen
111
116
  await listener.listen(addrs[0])
112
117
 
113
118
  // Create a connection to the listener
114
- const conn = await transport.dial(addrs[0])
119
+ const conn = await transport.dial(addrs[0], {
120
+ upgrader
121
+ })
115
122
 
116
123
  await pWaitFor(() => typeof conn.stat.timeline.close === 'number')
117
124
  await listener.close()
@@ -120,7 +127,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
120
127
  describe('events', () => {
121
128
  it('connection', async () => {
122
129
  const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
123
- const listener = transport.createListener()
130
+ const listener = transport.createListener({
131
+ upgrader
132
+ })
124
133
  const deferred = defer()
125
134
  let conn
126
135
 
@@ -131,7 +140,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
131
140
 
132
141
  void (async () => {
133
142
  await listener.listen(addrs[0])
134
- await transport.dial(addrs[0])
143
+ await transport.dial(addrs[0], {
144
+ upgrader
145
+ })
135
146
  })()
136
147
 
137
148
  await deferred.promise
@@ -142,7 +153,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
142
153
  })
143
154
 
144
155
  it('listening', (done) => {
145
- const listener = transport.createListener()
156
+ const listener = transport.createListener({
157
+ upgrader
158
+ })
146
159
  listener.addEventListener('listening', () => {
147
160
  listener.close().then(done, done)
148
161
  })
@@ -150,7 +163,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
150
163
  })
151
164
 
152
165
  it('error', (done) => {
153
- const listener = transport.createListener()
166
+ const listener = transport.createListener({
167
+ upgrader
168
+ })
154
169
  listener.addEventListener('error', (evt) => {
155
170
  expect(evt.detail).to.be.an.instanceOf(Error)
156
171
  listener.close().then(done, done)
@@ -161,7 +176,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
161
176
  })
162
177
 
163
178
  it('close', (done) => {
164
- const listener = transport.createListener()
179
+ const listener = transport.createListener({
180
+ upgrader
181
+ })
165
182
  listener.addEventListener('close', () => done())
166
183
 
167
184
  void (async () => {