From e958d1bd047bea943704439a15aa6a2f4b7beef1 Mon Sep 17 00:00:00 2001 From: Sasha Date: Mon, 15 Jan 2024 17:02:06 +0100 Subject: [PATCH] chore: investigate interop test failures --- packages/core/src/lib/filter/index.ts | 4 ++++ packages/tests/tests/filter/utils.ts | 22 ++++++++++++++----- .../tests/tests/store/multiple_pubsub.spec.ts | 22 +++++-------------- packages/tests/tests/store/utils.ts | 10 +++++++++ 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/packages/core/src/lib/filter/index.ts b/packages/core/src/lib/filter/index.ts index 5428d84bdf..d571131956 100644 --- a/packages/core/src/lib/filter/index.ts +++ b/packages/core/src/lib/filter/index.ts @@ -309,6 +309,10 @@ class Filter extends BaseProtocol implements IReceiver { }) )[0]; + if (!peer) { + throw new Error("No peer found to initiate subscription."); + } + const subscription = this.getActiveSubscription(pubsubTopic, peer.id.toString()) ?? this.setActiveSubscription( diff --git a/packages/tests/tests/filter/utils.ts b/packages/tests/tests/filter/utils.ts index c7a929cfa2..3d201fae67 100644 --- a/packages/tests/tests/filter/utils.ts +++ b/packages/tests/tests/filter/utils.ts @@ -79,12 +79,22 @@ export async function runNodes( log.error("jswaku node failed to start:", error); } - if (waku) { - await waku.dial(await nwaku.getMultiaddrWithId()); - await waitForRemotePeer(waku, [Protocols.Filter, Protocols.LightPush]); - await nwaku.ensureSubscriptions(pubsubTopics); - return [nwaku, waku]; - } else { + if (!waku) { throw new Error("Failed to initialize waku"); } + + await waku.dial(await nwaku.getMultiaddrWithId()); + await waitForRemotePeer(waku, [Protocols.Filter, Protocols.LightPush]); + await nwaku.ensureSubscriptions(pubsubTopics); + + const wakuPeers = await waku.libp2p.peerStore.all(); + const nwakuPeers = await nwaku.peers(); + + if (wakuPeers.length < 1 || nwakuPeers.length < 1) { + throw new Error( + `Expected at least 1 peer in each node. Got waku: ${wakuPeers.length} and nwaku: ${nwakuPeers.length}` + ); + } + + return [nwaku, waku]; } diff --git a/packages/tests/tests/store/multiple_pubsub.spec.ts b/packages/tests/tests/store/multiple_pubsub.spec.ts index 74ad7219f1..4e30e86542 100644 --- a/packages/tests/tests/store/multiple_pubsub.spec.ts +++ b/packages/tests/tests/store/multiple_pubsub.spec.ts @@ -349,6 +349,11 @@ describe("Waku Store (named sharding), custom pubsub topic", function () { customShardedPubsubTopic1, customShardedPubsubTopic2 ]); + + waku = await startAndConnectLightNode(nwaku, [ + customShardedPubsubTopic1, + customShardedPubsubTopic2 + ]); }); afterEach(async function () { @@ -363,10 +368,7 @@ describe("Waku Store (named sharding), custom pubsub topic", function () { customContentTopic1, customShardedPubsubTopic1 ); - waku = await startAndConnectLightNode(nwaku, [ - customShardedPubsubTopic1, - customShardedPubsubTopic2 - ]); + const messages = await processQueriedMessages( waku, [customDecoder1], @@ -397,11 +399,6 @@ describe("Waku Store (named sharding), custom pubsub topic", function () { customShardedPubsubTopic2 ); - waku = await startAndConnectLightNode(nwaku, [ - customShardedPubsubTopic1, - customShardedPubsubTopic2 - ]); - const customMessages = await processQueriedMessages( waku, [customDecoder1], @@ -451,13 +448,6 @@ describe("Waku Store (named sharding), custom pubsub topic", function () { customShardedPubsubTopic2 ); - waku = await createLightNode({ - staticNoiseKey: NOISE_KEY_1, - pubsubTopics: [customShardedPubsubTopic1, customShardedPubsubTopic2] - }); - await waku.start(); - - await waku.dial(await nwaku.getMultiaddrWithId()); await waku.dial(await nwaku2.getMultiaddrWithId()); await waitForRemotePeer(waku, [Protocols.Store]); diff --git a/packages/tests/tests/store/utils.ts b/packages/tests/tests/store/utils.ts index 252df84cb0..6fd1a19947 100644 --- a/packages/tests/tests/store/utils.ts +++ b/packages/tests/tests/store/utils.ts @@ -117,6 +117,16 @@ export async function startAndConnectLightNode( await waku.start(); await waku.dial(await instance.getMultiaddrWithId()); await waitForRemotePeer(waku, [Protocols.Store]); + + const wakuPeers = await waku.libp2p.peerStore.all(); + const nwakuPeers = await instance.peers(); + + if (wakuPeers.length < 1 || nwakuPeers.length < 1) { + throw new Error( + `Expected at least 1 peer in each node. Got waku: ${wakuPeers.length} and nwaku: ${nwakuPeers.length}` + ); + } + log.info("Waku node created"); return waku; }