Skip to content
This repository was archived by the owner on Jun 26, 2023. It is now read-only.

Commit b691b1f

Browse files
authored
fix: dispatch connection event from mock upgrader (#345)
* Dispatch a connection event as per the upgrader interface * Simplify args for MockConnectionManager * Use base64pad for MockMuxer data transfer
1 parent 9f6eb55 commit b691b1f

File tree

5 files changed

+27
-15
lines changed

5 files changed

+27
-15
lines changed

packages/interface-mocks/src/connection-manager.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,17 @@ class MockNetwork {
4040

4141
export const mockNetwork = new MockNetwork()
4242

43+
export interface MockConnectionManagerComponents {
44+
peerId: PeerId
45+
registrar: Registrar
46+
}
47+
4348
class MockConnectionManager extends EventEmitter<ConnectionManagerEvents> implements ConnectionManager, Startable {
4449
private connections: Connection[] = []
45-
private readonly components: MockNetworkComponents
50+
private readonly components: MockConnectionManagerComponents
4651
private started = false
4752

48-
constructor (components: MockNetworkComponents) {
53+
constructor (components: MockConnectionManagerComponents) {
4954
super()
5055

5156
this.components = components
@@ -99,7 +104,7 @@ class MockConnectionManager extends EventEmitter<ConnectionManagerEvents> implem
99104
this.connections.push(aToB)
100105
;(componentsB.connectionManager as MockConnectionManager).connections.push(bToA)
101106

102-
this.components.connectionManager.safeDispatchEvent<Connection>('peer:connect', {
107+
this.safeDispatchEvent<Connection>('peer:connect', {
103108
detail: aToB
104109
})
105110

@@ -159,6 +164,6 @@ class MockConnectionManager extends EventEmitter<ConnectionManagerEvents> implem
159164
}
160165
}
161166

162-
export function mockConnectionManager (components: MockNetworkComponents): ConnectionManager {
167+
export function mockConnectionManager (components: MockConnectionManagerComponents): ConnectionManager {
163168
return new MockConnectionManager(components)
164169
}

packages/interface-mocks/src/multiaddr-connection.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export function mockMultiaddrConnPair (opts: MockMultiaddrConnPairOptions): { in
3737

3838
const outbound: MultiaddrConnection = {
3939
...outboundStream,
40-
remoteAddr: remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`),
40+
remoteAddr: remoteAddr.toString().includes(`/p2p/${remotePeer.toString()}`) ? remoteAddr : remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`),
4141
timeline: {
4242
open: Date.now()
4343
},

packages/interface-mocks/src/muxer.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,10 @@ class MuxedStream {
152152

153153
while (list.length > 0) {
154154
const available = Math.min(list.length, MAX_MESSAGE_SIZE)
155-
const subList = list.subarray(0, available)
156155
const dataMsg: DataMessage = {
157156
id,
158157
type: 'data',
159-
chunk: uint8ArrayToString(subList.slice(), 'base64'),
158+
chunk: uint8ArrayToString(list.subarray(0, available), 'base64pad'),
160159
direction: this.type
161160
}
162161

@@ -344,7 +343,7 @@ class MockMuxer implements StreamMuxer {
344343
}
345344

346345
if (message.type === 'data') {
347-
muxedStream.input.push(new Uint8ArrayList(uint8ArrayFromString(message.chunk, 'base64')))
346+
muxedStream.input.push(new Uint8ArrayList(uint8ArrayFromString(message.chunk, 'base64pad')))
348347
} else if (message.type === 'reset') {
349348
this.log('-> reset stream %s %s', muxedStream.type, muxedStream.stream.id)
350349
muxedStream.stream.reset()

packages/interface-mocks/src/upgrader.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { mockConnection } from './connection.js'
22
import type { Upgrader, UpgraderEvents, UpgraderOptions } from '@libp2p/interface-transport'
33
import type { Connection, MultiaddrConnection } from '@libp2p/interface-connection'
44
import type { Registrar } from '@libp2p/interface-registrar'
5-
import { EventEmitter } from '@libp2p/interfaces/events'
5+
import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
66

77
export interface MockUpgraderInit {
88
registrar?: Registrar
@@ -18,19 +18,27 @@ class MockUpgrader extends EventEmitter<UpgraderEvents> implements Upgrader {
1818
}
1919

2020
async upgradeOutbound (multiaddrConnection: MultiaddrConnection, opts: UpgraderOptions = {}): Promise<Connection> {
21-
return mockConnection(multiaddrConnection, {
21+
const connection = mockConnection(multiaddrConnection, {
2222
direction: 'outbound',
2323
registrar: this.registrar,
2424
...opts
2525
})
26+
27+
this.dispatchEvent(new CustomEvent<Connection>('connection', { detail: connection }))
28+
29+
return connection
2630
}
2731

2832
async upgradeInbound (multiaddrConnection: MultiaddrConnection, opts: UpgraderOptions = {}): Promise<Connection> {
29-
return mockConnection(multiaddrConnection, {
33+
const connection = mockConnection(multiaddrConnection, {
3034
direction: 'inbound',
3135
registrar: this.registrar,
3236
...opts
3337
})
38+
39+
this.dispatchEvent(new CustomEvent<Connection>('connection', { detail: connection }))
40+
41+
return connection
3442
}
3543
}
3644

packages/interface-stream-muxer-compliance-tests/src/close-test.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export default (common: TestSetup<StreamMuxerFactory>): void => {
4747
void pipe(p[0], dialer, p[0])
4848
void pipe(p[1], listener, p[1])
4949

50-
const streams = await Promise.all(Array(expectedStreams).fill(0).map(() => dialer.newStream()))
50+
const streams = await Promise.all(Array(expectedStreams).fill(0).map(async () => await dialer.newStream()))
5151

5252
void Promise.all(
5353
streams.map(async stream => {
@@ -89,7 +89,7 @@ export default (common: TestSetup<StreamMuxerFactory>): void => {
8989
void pipe(p[0], dialer, p[0])
9090
void pipe(p[1], listener, p[1])
9191

92-
const streams = await Promise.all(Array(expectedStreams).fill(0).map(() => dialer.newStream()))
92+
const streams = await Promise.all(Array(expectedStreams).fill(0).map(async () => await dialer.newStream()))
9393

9494
void Promise.all(
9595
streams.map(async stream => {
@@ -132,7 +132,7 @@ export default (common: TestSetup<StreamMuxerFactory>): void => {
132132
void pipe(p[0], dialer, p[0])
133133
void pipe(p[1], listener, p[1])
134134

135-
const streams = await Promise.all(Array(expectedStreams).fill(0).map(() => dialer.newStream()))
135+
const streams = await Promise.all(Array(expectedStreams).fill(0).map(async () => await dialer.newStream()))
136136

137137
const streamPipes = streams.map(async stream => {
138138
await pipe(
@@ -201,7 +201,7 @@ export default (common: TestSetup<StreamMuxerFactory>): void => {
201201
void pipe(p[1], listener, p[1])
202202

203203
const stream = await dialer.newStream()
204-
const streams = await Promise.all(Array.from(Array(5), () => dialer.newStream()))
204+
const streams = await Promise.all(Array.from(Array(5), async () => await dialer.newStream()))
205205
let closed = false
206206
const controllers: AbortController[] = []
207207

0 commit comments

Comments
 (0)