Skip to content

Commit 58c143b

Browse files
authored
fix: discv5 test failure (#13653)
## Overview Base config was being passed to the bootstrap node by reference, which was overriding the p2pbroadcast port on start up, which meant the port was not being updated in the test. I didnt experience this in the broadcast pr as i ran the tests individually ---------- also renaming getAllPeers to getKadValues as private peers can be peers but not in the kad, so the name no longer fits after the private peers pr
1 parent 0e941ef commit 58c143b

File tree

4 files changed

+34
-31
lines changed

4 files changed

+34
-31
lines changed

yarn-project/p2p/src/services/discv5/discV5_service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
5353
) {
5454
super();
5555
const { p2pIp, p2pPort, p2pBroadcastPort, bootstrapNodes, trustedPeers, privatePeers } = config;
56+
5657
this.bootstrapNodeEnrs = bootstrapNodes.map(x => ENR.decodeTxt(x));
5758
const privatePeerEnrs = new Set(privatePeers);
5859
this.trustedPeerEnrs = trustedPeers.filter(x => !privatePeerEnrs.has(x)).map(x => ENR.decodeTxt(x));
@@ -63,6 +64,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
6364

6465
// If no overridden broadcast port is provided, use the p2p port as the broadcast port
6566
if (!p2pBroadcastPort) {
67+
this.logger.warn('No p2pBroadcastPort provided, using p2pPort as broadcast port');
6668
config.p2pBroadcastPort = p2pPort;
6769
}
6870

@@ -204,7 +206,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
204206
}
205207
}
206208

207-
public getAllPeers(): ENR[] {
209+
public getKadValues(): ENR[] {
208210
return this.discv5.kadValues();
209211
}
210212

yarn-project/p2p/src/services/discv5/discv5_service.test.ts

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const waitForPeers = (node: DiscV5Service, expectedCount: number, timeout = 15_0
2222
}, timeout);
2323

2424
node.on('peer:discovered', () => {
25-
if (node.getAllPeers().length >= expectedCount) {
25+
if (node.getKadValues().length >= expectedCount) {
2626
clearTimeout(timeoutId);
2727
resolve();
2828
}
@@ -38,7 +38,7 @@ describe('Discv5Service', () => {
3838
let bootNodePeerId: PeerId;
3939
let basePort = 7890;
4040

41-
const baseConfig: BootnodeConfig = {
41+
const bootnodeConfig: BootnodeConfig = {
4242
p2pIp: '127.0.0.1',
4343
p2pPort: basePort + 100,
4444
listenAddress: '127.0.0.1',
@@ -56,7 +56,7 @@ describe('Discv5Service', () => {
5656
const telemetryClient = getTelemetryClient();
5757
store = await openTmpStore('test');
5858
bootNode = new BootstrapNode(store, telemetryClient);
59-
await bootNode.start(baseConfig);
59+
await bootNode.start(bootnodeConfig);
6060
bootNodePeerId = bootNode.getPeerId();
6161
});
6262

@@ -68,15 +68,15 @@ describe('Discv5Service', () => {
6868
const startNodes = (...nodes: { start: () => Promise<void> }[]) => Promise.all(nodes.map(node => node.start()));
6969
const stopNodes = (...nodes: { stop: () => Promise<void> }[]) => Promise.all(nodes.map(node => node.stop()));
7070
const getPeers = (node: DiscV5Service) =>
71-
Promise.all(node.getAllPeers().map(async peer => (await peer.peerId()).toString()));
71+
Promise.all(node.getKadValues().map(async peer => (await peer.peerId()).toString()));
7272

7373
it('should initialize with default values', async () => {
7474
const node = await createNode();
7575
expect(node.getStatus()).toEqual(PeerDiscoveryState.STOPPED); // not started yet
7676
await node.start();
7777
expect(node.getStatus()).toEqual(PeerDiscoveryState.RUNNING);
78-
const peers = node.getAllPeers();
79-
const bootnode = peers[0];
78+
const kadValues = node.getKadValues();
79+
const bootnode = kadValues[0];
8080
expect((await bootnode.peerId()).toString()).toEqual(bootNodePeerId.toString());
8181
await node.stop();
8282
});
@@ -96,8 +96,8 @@ describe('Discv5Service', () => {
9696
await startNodes(node1, node2);
9797

9898
// nodes should be connected to boostrap
99-
expect(node1.getAllPeers()).toHaveLength(1);
100-
expect(node2.getAllPeers()).toHaveLength(1);
99+
expect(node1.getKadValues()).toHaveLength(1);
100+
expect(node2.getKadValues()).toHaveLength(1);
101101

102102
await Promise.all([
103103
waitForPeers(node2, 2),
@@ -170,8 +170,8 @@ describe('Discv5Service', () => {
170170
const node1 = await createNode({ l1ChainId: 13, bootstrapNodeEnrVersionCheck: true });
171171
const node2 = await createNode({ l1ChainId: 14, bootstrapNodeEnrVersionCheck: false });
172172
await startNodes(node1, node2);
173-
expect(node1.getAllPeers()).toHaveLength(0);
174-
expect(node2.getAllPeers()).toHaveLength(1);
173+
expect(node1.getKadValues()).toHaveLength(0);
174+
expect(node2.getKadValues()).toHaveLength(1);
175175
await stopNodes(node1, node2);
176176
});
177177

@@ -226,7 +226,7 @@ describe('Discv5Service', () => {
226226
await node2.start();
227227
await waitForPeers(node2, 1);
228228

229-
const node2Peers = await Promise.all(node2.getAllPeers().map(async peer => (await peer.peerId()).toString()));
229+
const node2Peers = await Promise.all(node2.getKadValues().map(async peer => (await peer.peerId()).toString()));
230230
// NOTE: bootnode seems to still be present in list of peers sometimes, will investigate
231231
// expect(node2Peers).toHaveLength(1);
232232
expect(node2Peers).toContain(node1.getPeerId().toString());
@@ -257,12 +257,12 @@ describe('Discv5Service', () => {
257257

258258
await startNodes(node1, node2, node3, trustedNode);
259259

260-
expect(node1.getAllPeers()).toHaveLength(0);
261-
expect(trustedNode.getAllPeers()).toHaveLength(0);
260+
expect(node1.getKadValues()).toHaveLength(0);
261+
expect(trustedNode.getKadValues()).toHaveLength(0);
262262

263263
// Verify node2 and node3 are connected to the trusted peer
264-
expect(node2.getAllPeers().length).toBe(1);
265-
expect(node3.getAllPeers().length).toBe(1);
264+
expect(node2.getKadValues().length).toBe(1);
265+
expect(node3.getKadValues().length).toBe(1);
266266
expect(await getPeers(node2)).toContain(trustedNode.getPeerId().toString());
267267
expect(await getPeers(node3)).toContain(trustedNode.getPeerId().toString());
268268

@@ -281,7 +281,7 @@ describe('Discv5Service', () => {
281281
})(),
282282
]);
283283

284-
expect(node1.getAllPeers()).toHaveLength(0);
284+
expect(node1.getKadValues()).toHaveLength(0);
285285

286286
// Verify node2 and node3 discovered each other through the trusted peer
287287
const node2Peers = await getPeers(node2);
@@ -320,10 +320,10 @@ describe('Discv5Service', () => {
320320

321321
await startNodes(node1, node2, node3, privateNode);
322322

323-
expect(node1.getAllPeers()).toHaveLength(0);
324-
expect(node2.getAllPeers()).toHaveLength(0);
325-
expect(node3.getAllPeers()).toHaveLength(0);
326-
expect(privateNode.getAllPeers()).toHaveLength(0);
323+
expect(node1.getKadValues()).toHaveLength(0);
324+
expect(node2.getKadValues()).toHaveLength(0);
325+
expect(node3.getKadValues()).toHaveLength(0);
326+
expect(privateNode.getKadValues()).toHaveLength(0);
327327

328328
await sleep(2000); // wait for peer discovery to be able to start
329329
for (let i = 0; i < 3; i++) {
@@ -334,10 +334,10 @@ describe('Discv5Service', () => {
334334
await sleep(100);
335335
}
336336

337-
expect(node1.getAllPeers()).toHaveLength(0);
338-
expect(node2.getAllPeers()).toHaveLength(0);
339-
expect(node3.getAllPeers()).toHaveLength(0);
340-
expect(privateNode.getAllPeers()).toHaveLength(0);
337+
expect(node1.getKadValues()).toHaveLength(0);
338+
expect(node2.getKadValues()).toHaveLength(0);
339+
expect(node3.getKadValues()).toHaveLength(0);
340+
expect(privateNode.getKadValues()).toHaveLength(0);
341341

342342
await stopNodes(node1, node2, node3, privateNode);
343343
}, 30_000);
@@ -348,8 +348,9 @@ describe('Discv5Service', () => {
348348
const peerId = await createSecp256k1PeerId();
349349
const config: P2PConfig = {
350350
...getP2PDefaultConfig(),
351-
...baseConfig,
351+
...emptyChainConfig,
352352
p2pIp: `127.0.0.1`,
353+
listenAddress: `127.0.0.1`,
353354
p2pPort: port,
354355
bootstrapNodes: useBootnode ? [bootnodeAddr] : [],
355356
blockCheckIntervalMS: 50,

yarn-project/p2p/src/services/dummy_service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ export class DummyPeerDiscoveryService extends EventEmitter implements PeerDisco
111111
}
112112
/**
113113
* Called to discover peers in the network.
114-
* @returns An array of discovered peer addresses.
114+
* @returns An array of Enrs.
115115
*/
116-
public getAllPeers() {
116+
public getKadValues() {
117117
return [];
118118
}
119119

yarn-project/p2p/src/services/service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ export interface PeerDiscoveryService extends EventEmitter {
8181
stop(): Promise<void>;
8282

8383
/**
84-
* Gets all peers.
85-
* @returns An array of peer ENRs.
84+
* Gets all KadValues.
85+
* @returns An array of ENRs.
8686
*/
87-
getAllPeers(): ENR[];
87+
getKadValues(): ENR[];
8888

8989
/**
9090
* Runs findRandomNode query.

0 commit comments

Comments
 (0)