Skip to content

Commit f4069a5

Browse files
committed
chore: ensure we get the right number of connections
1 parent 102c68b commit f4069a5

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

test/go-gossipsub.spec.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
import type { Message, SubscriptionChangeData } from '@libp2p/interfaces/pubsub'
1414
import type { RPC } from '../ts/message/rpc.js'
1515
import type { ConnectionManagerEvents } from '@libp2p/interfaces/connection-manager'
16-
import { pEvent } from 'p-event'
1716
import pWaitFor from 'p-wait-for'
1817
import { Components } from '@libp2p/interfaces/components'
1918
import { sparseConnect,
@@ -98,13 +97,24 @@ const checkReceivedMessage =
9897
node.getPubSub().addEventListener('message', cb)
9998
})
10099

101-
const awaitEvents = async <Events = GossipsubEvents> (emitter: EventEmitter<Events>, event: keyof Events, number: number, timeout = 10000) => {
102-
for (let i = 0; i < number; i++) {
103-
// @ts-expect-error pEvent types are looser than the sig of this function
104-
await pEvent(emitter, event, {
105-
timeout
106-
})
107-
}
100+
const awaitEvents = async <Events = GossipsubEvents> (emitter: EventEmitter<Events>, event: keyof Events, number: number, timeout = 30000) => {
101+
return new Promise<void>((resolve, reject) => {
102+
let cb: () => void
103+
let counter = 0
104+
const t = setTimeout(() => {
105+
emitter.removeEventListener(event, cb)
106+
reject(new Error(`${counter} of ${number} '${event}' events received after ${timeout}ms`))
107+
}, timeout)
108+
cb = () => {
109+
counter++
110+
if (counter >= number) {
111+
clearTimeout(t)
112+
emitter.removeEventListener(event, cb)
113+
resolve()
114+
}
115+
}
116+
emitter.addEventListener(event, cb)
117+
})
108118
}
109119

110120
describe('go-libp2p-pubsub gossipsub tests', function () {

test/utils/create-pubsub.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,16 @@ export const connectAllPubSubNodes = async (components: Components[]) => {
6868
}
6969

7070
/**
71-
* Connect some gossipsub nodes to others
71+
* For every node in `gss`, connect it to `num` other nodes in `gss`
7272
*
7373
* @param {Gossipsub[]} gss
74-
* @param {number} num - number of peers to connect
74+
* @param {number} num - number of peers to connect each node to
7575
*/
7676
export async function connectSome (gss: Components[], num: number) {
7777
for (let i = 0; i < gss.length; i++) {
78-
for (let j = 0; j < num; j++) {
78+
while (gss[i].getConnectionManager().getConnections().length < num) {
7979
const n = Math.floor(Math.random() * gss.length)
8080
if (n === i) {
81-
j--
8281
continue
8382
}
8483

@@ -92,5 +91,5 @@ export async function sparseConnect (gss: Components[]) {
9291
}
9392

9493
export async function denseConnect (gss: Components[]) {
95-
await connectSome(gss, 10)
94+
await connectSome(gss, Math.min(gss.length -1, 10))
9695
}

0 commit comments

Comments
 (0)