From 7c8d1073b0d076117fb33ce05452a88871259782 Mon Sep 17 00:00:00 2001 From: Sasha <118575614+weboko@users.noreply.github.com> Date: Fri, 20 Jun 2025 12:53:42 +0200 Subject: [PATCH] chore!: remove IBaseProtocol and improve interface on PeerExchange (#2422) * remove IBaseProtocol * fix references, interfaces and integration * fix ci * up mock * up lock * add mock for local storage * add missing prop, fix tests * up lock --- package-lock.json | 40 +---------------- packages/core/package.json | 4 -- packages/core/src/lib/base_protocol.ts | 44 ------------------- packages/core/src/lib/filter/filter.ts | 21 +++++---- .../core/src/lib/light_push/light_push.ts | 13 +++--- packages/core/src/lib/metadata/metadata.ts | 13 +++--- packages/core/src/lib/store/store.ts | 13 +++--- .../lib/stream_manager/stream_manager.spec.ts | 30 ++++++++----- .../src/lib/stream_manager/stream_manager.ts | 14 +++--- packages/discovery/package.json | 2 - .../src/local-peer-cache/index.spec.ts | 18 ++++++-- .../src/peer-exchange/waku_peer_exchange.ts | 27 +++++------- .../waku_peer_exchange_discovery.ts | 17 +++---- packages/headless-tests/package.json | 1 + packages/interfaces/src/filter.ts | 4 +- packages/interfaces/src/filter_next.ts | 2 + packages/interfaces/src/light_push.ts | 3 +- packages/interfaces/src/metadata.ts | 7 ++- packages/interfaces/src/peer_exchange.ts | 3 +- packages/interfaces/src/protocols.ts | 7 --- packages/interfaces/src/store.ts | 6 +-- packages/sdk/src/create/discovery.spec.ts | 15 +++---- packages/sdk/src/create/discovery.ts | 9 +--- packages/sdk/src/create/libp2p.ts | 4 +- packages/sdk/src/filter/filter.ts | 4 ++ packages/sdk/src/filter_next/filter.ts | 4 ++ .../sdk/src/light_push/light_push.spec.ts | 8 ++-- packages/sdk/src/light_push/light_push.ts | 9 ++-- packages/sdk/src/store/store.ts | 13 +++--- packages/sdk/src/waku/waku.ts | 8 ++-- .../tests/peer-exchange/compliance.spec.ts | 5 +-- .../continuous_discovery.spec.ts | 7 +-- .../tests/tests/peer-exchange/index.spec.ts | 7 ++- .../tests/peer-exchange/pe.optional.spec.ts | 8 +--- .../tests/tests/peer-exchange/query.spec.ts | 12 ++--- .../tests/sharding/peer_management.spec.ts | 24 +++------- 36 files changed, 167 insertions(+), 259 deletions(-) delete mode 100644 packages/core/src/lib/base_protocol.ts diff --git a/package-lock.json b/package-lock.json index 80694b7788..4c1321f084 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11068,16 +11068,6 @@ "@types/node": "*" } }, - "node_modules/@types/node-localstorage": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/node-localstorage/-/node-localstorage-1.3.3.tgz", - "integrity": "sha512-Wkn5g4eM5x10UNV9Xvl9K6y6m0zorocuJy4WjB5muUdyMZuPbZpSJG3hlhjGHe1HGxbOQO7RcB+jlHcNwkh+Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", @@ -28711,19 +28701,6 @@ "license": "MIT", "peer": true }, - "node_modules/node-localstorage": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-3.0.5.tgz", - "integrity": "sha512-GCwtK33iwVXboZWYcqQHu3aRvXEBwmPkAMRBLeaX86ufhqslyUkLGsi4aW3INEfdQYpUB5M9qtYf3eHvAk2VBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/node-polyfill-webpack-plugin": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.1.0.tgz", @@ -42890,20 +42867,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -43534,13 +43497,11 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.11", - "@types/node-localstorage": "^1.3.3", "@waku/build-utils": "*", "chai": "^4.3.10", "chai-as-promised": "^7.1.1", "cspell": "^8.6.1", "mocha": "^10.3.0", - "node-localstorage": "^3.0.5", "npm-run-all": "^4.1.5", "rollup": "^4.12.0", "sinon": "^18.0.0" @@ -43622,6 +43583,7 @@ "@babel/preset-env": "^7.24.0", "@babel/preset-typescript": "^7.23.3", "babel-loader": "^9.1.3", + "filter-obj": "^2.0.2", "node-polyfill-webpack-plugin": "^2.0.1", "serve": "^14.1.2", "webpack": "^5.99.5", diff --git a/packages/core/package.json b/packages/core/package.json index c4904d47fa..58b7b9547b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,10 +12,6 @@ "./lib/message/version_0": { "types": "./dist/lib/message/version_0.d.ts", "import": "./dist/lib/message/version_0.js" - }, - "./lib/base_protocol": { - "types": "./dist/lib/base_protocol.d.ts", - "import": "./dist/lib/base_protocol.js" } }, "typesVersions": { diff --git a/packages/core/src/lib/base_protocol.ts b/packages/core/src/lib/base_protocol.ts deleted file mode 100644 index 234a43f60f..0000000000 --- a/packages/core/src/lib/base_protocol.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { Libp2p } from "@libp2p/interface"; -import type { PeerId, Stream } from "@libp2p/interface"; -import type { - IBaseProtocolCore, - Libp2pComponents, - PubsubTopic -} from "@waku/interfaces"; - -import { StreamManager } from "./stream_manager/index.js"; - -/** - * A class with predefined helpers, to be used as a base to implement Waku - * Protocols. - */ -export class BaseProtocol implements IBaseProtocolCore { - public readonly addLibp2pEventListener: Libp2p["addEventListener"]; - public readonly removeLibp2pEventListener: Libp2p["removeEventListener"]; - protected streamManager: StreamManager; - - protected constructor( - public multicodec: string, - protected components: Libp2pComponents, - public readonly pubsubTopics: PubsubTopic[] - ) { - this.addLibp2pEventListener = components.events.addEventListener.bind( - components.events - ); - this.removeLibp2pEventListener = components.events.removeEventListener.bind( - components.events - ); - - this.streamManager = new StreamManager( - multicodec, - components.connectionManager.getConnections.bind( - components.connectionManager - ), - this.addLibp2pEventListener - ); - } - - protected async getStream(peerId: PeerId): Promise { - return this.streamManager.getStream(peerId); - } -} diff --git a/packages/core/src/lib/filter/filter.ts b/packages/core/src/lib/filter/filter.ts index 0c2ed77f32..6716874917 100644 --- a/packages/core/src/lib/filter/filter.ts +++ b/packages/core/src/lib/filter/filter.ts @@ -3,7 +3,6 @@ import type { IncomingStreamData } from "@libp2p/interface-internal"; import { type ContentTopic, type CoreProtocolResult, - type IBaseProtocolCore, type Libp2p, ProtocolError, type PubsubTopic @@ -15,7 +14,7 @@ import * as lp from "it-length-prefixed"; import { pipe } from "it-pipe"; import { Uint8ArrayList } from "uint8arraylist"; -import { BaseProtocol } from "../base_protocol.js"; +import { StreamManager } from "../stream_manager/index.js"; import { FilterPushRpc, @@ -36,15 +35,21 @@ type IncomingMessageHandler = ( peerIdStr: string ) => Promise; -export class FilterCore extends BaseProtocol implements IBaseProtocolCore { +export class FilterCore { + private streamManager: StreamManager; private static handleIncomingMessage?: IncomingMessageHandler; + public readonly multicodec = FilterCodecs.SUBSCRIBE; + public constructor( handleIncomingMessage: IncomingMessageHandler, public readonly pubsubTopics: PubsubTopic[], libp2p: Libp2p ) { - super(FilterCodecs.SUBSCRIBE, libp2p.components, pubsubTopics); + this.streamManager = new StreamManager( + FilterCodecs.SUBSCRIBE, + libp2p.components + ); // TODO(weboko): remove when @waku/sdk 0.0.33 is released const prevHandler = FilterCore.handleIncomingMessage; @@ -83,7 +88,7 @@ export class FilterCore extends BaseProtocol implements IBaseProtocolCore { peerId: PeerId, contentTopics: ContentTopic[] ): Promise { - const stream = await this.getStream(peerId); + const stream = await this.streamManager.getStream(peerId); const request = FilterSubscribeRpc.createSubscribeRequest( pubsubTopic, @@ -139,7 +144,7 @@ export class FilterCore extends BaseProtocol implements IBaseProtocolCore { ): Promise { let stream: Stream | undefined; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (error) { log.error( `Failed to get a stream for remote peer${peerId.toString()}`, @@ -182,7 +187,7 @@ export class FilterCore extends BaseProtocol implements IBaseProtocolCore { pubsubTopic: PubsubTopic, peerId: PeerId ): Promise { - const stream = await this.getStream(peerId); + const stream = await this.streamManager.getStream(peerId); const request = FilterSubscribeRpc.createUnsubscribeAllRequest(pubsubTopic); @@ -229,7 +234,7 @@ export class FilterCore extends BaseProtocol implements IBaseProtocolCore { public async ping(peerId: PeerId): Promise { let stream: Stream | undefined; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (error) { log.error( `Failed to get a stream for remote peer${peerId.toString()}`, diff --git a/packages/core/src/lib/light_push/light_push.ts b/packages/core/src/lib/light_push/light_push.ts index 738308b809..0dd1a9da3e 100644 --- a/packages/core/src/lib/light_push/light_push.ts +++ b/packages/core/src/lib/light_push/light_push.ts @@ -1,7 +1,6 @@ import type { PeerId, Stream } from "@libp2p/interface"; import { type CoreProtocolResult, - type IBaseProtocolCore, type IEncoder, type IMessage, type Libp2p, @@ -17,7 +16,7 @@ import * as lp from "it-length-prefixed"; import { pipe } from "it-pipe"; import { Uint8ArrayList } from "uint8arraylist"; -import { BaseProtocol } from "../base_protocol.js"; +import { StreamManager } from "../stream_manager/index.js"; import { PushRpc } from "./push_rpc.js"; import { isRLNResponseError } from "./utils.js"; @@ -32,12 +31,16 @@ type PreparePushMessageResult = ThisOrThat<"query", PushRpc>; /** * Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/). */ -export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { +export class LightPushCore { + private readonly streamManager: StreamManager; + + public readonly multicodec = LightPushCodec; + public constructor( public readonly pubsubTopics: PubsubTopic[], libp2p: Libp2p ) { - super(LightPushCodec, libp2p.components, pubsubTopics); + this.streamManager = new StreamManager(LightPushCodec, libp2p.components); } private async preparePushMessage( @@ -98,7 +101,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { let stream: Stream; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (error) { log.error("Failed to get stream", error); return { diff --git a/packages/core/src/lib/metadata/metadata.ts b/packages/core/src/lib/metadata/metadata.ts index f64596c0a4..10e4b7616c 100644 --- a/packages/core/src/lib/metadata/metadata.ts +++ b/packages/core/src/lib/metadata/metadata.ts @@ -16,21 +16,24 @@ import * as lp from "it-length-prefixed"; import { pipe } from "it-pipe"; import { Uint8ArrayList } from "uint8arraylist"; -import { BaseProtocol } from "../base_protocol.js"; +import { StreamManager } from "../stream_manager/index.js"; const log = new Logger("metadata"); export const MetadataCodec = "/vac/waku/metadata/1.0.0"; -class Metadata extends BaseProtocol implements IMetadata { - private libp2pComponents: Libp2pComponents; +class Metadata implements IMetadata { + private readonly streamManager: StreamManager; + private readonly libp2pComponents: Libp2pComponents; protected handshakesConfirmed: Map = new Map(); + public readonly multicodec = MetadataCodec; + public constructor( public pubsubTopics: PubsubTopic[], libp2p: Libp2pComponents ) { - super(MetadataCodec, libp2p.components, pubsubTopics); + this.streamManager = new StreamManager(MetadataCodec, libp2p); this.libp2pComponents = libp2p; void libp2p.registrar.handle(MetadataCodec, (streamData) => { void this.onRequest(streamData); @@ -55,7 +58,7 @@ class Metadata extends BaseProtocol implements IMetadata { let stream; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (error) { log.error("Failed to get stream", error); return { diff --git a/packages/core/src/lib/store/store.ts b/packages/core/src/lib/store/store.ts index 655593cfe5..43515d8489 100644 --- a/packages/core/src/lib/store/store.ts +++ b/packages/core/src/lib/store/store.ts @@ -2,7 +2,6 @@ import type { PeerId } from "@libp2p/interface"; import { IDecodedMessage, IDecoder, - IStoreCore, Libp2p, PubsubTopic, QueryRequestParams @@ -13,7 +12,7 @@ import * as lp from "it-length-prefixed"; import { pipe } from "it-pipe"; import { Uint8ArrayList } from "uint8arraylist"; -import { BaseProtocol } from "../base_protocol.js"; +import { StreamManager } from "../stream_manager/index.js"; import { toProtoMessage } from "../to_proto_message.js"; import { @@ -27,12 +26,16 @@ const log = new Logger("store"); export const StoreCodec = "/vac/waku/store-query/3.0.0"; -export class StoreCore extends BaseProtocol implements IStoreCore { +export class StoreCore { + private readonly streamManager: StreamManager; + + public readonly multicodec = StoreCodec; + public constructor( public readonly pubsubTopics: PubsubTopic[], libp2p: Libp2p ) { - super(StoreCodec, libp2p.components, pubsubTopics); + this.streamManager = new StreamManager(StoreCodec, libp2p.components); } public async *queryPerPage( @@ -70,7 +73,7 @@ export class StoreCore extends BaseProtocol implements IStoreCore { let stream; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (e) { log.error("Failed to get stream", e); break; diff --git a/packages/core/src/lib/stream_manager/stream_manager.spec.ts b/packages/core/src/lib/stream_manager/stream_manager.spec.ts index 3896ab3053..7f8db4a7ff 100644 --- a/packages/core/src/lib/stream_manager/stream_manager.spec.ts +++ b/packages/core/src/lib/stream_manager/stream_manager.spec.ts @@ -1,4 +1,5 @@ import { Connection, Peer, PeerId, Stream } from "@libp2p/interface"; +import { Libp2pComponents } from "@waku/interfaces"; import { expect } from "chai"; import sinon from "sinon"; @@ -20,11 +21,10 @@ describe("StreamManager", () => { beforeEach(() => { eventTarget = new EventTarget(); - streamManager = new StreamManager( - MULTICODEC, - () => [], - eventTarget.addEventListener.bind(eventTarget) - ); + streamManager = new StreamManager(MULTICODEC, { + connectionManager: { getConnections: () => [] }, + events: eventTarget + } as any as Libp2pComponents); }); it("should return usable stream attached to connection", async () => { @@ -34,7 +34,9 @@ describe("StreamManager", () => { createMockStream({ id: "1", protocol: MULTICODEC, writeStatus }) ]; - streamManager["getConnections"] = (_peerId: PeerId | undefined) => [con1]; + streamManager["libp2p"]["connectionManager"]["getConnections"] = ( + _peerId: PeerId | undefined + ) => [con1]; const stream = await streamManager.getStream(mockPeer.id); @@ -44,7 +46,9 @@ describe("StreamManager", () => { }); it("should throw if no connection provided", async () => { - streamManager["getConnections"] = (_peerId: PeerId | undefined) => []; + streamManager["libp2p"]["connectionManager"]["getConnections"] = ( + _peerId: PeerId | undefined + ) => []; let error: Error | undefined; try { @@ -74,7 +78,9 @@ describe("StreamManager", () => { ); con1.newStream = newStreamSpy; - streamManager["getConnections"] = (_peerId: PeerId | undefined) => [con1]; + streamManager["libp2p"]["connectionManager"]["getConnections"] = ( + _peerId: PeerId | undefined + ) => [con1]; const stream = await streamManager.getStream(mockPeer.id); @@ -99,7 +105,9 @@ describe("StreamManager", () => { ); con1.newStream = newStreamSpy; - streamManager["getConnections"] = (_peerId: PeerId | undefined) => [con1]; + streamManager["libp2p"]["connectionManager"]["getConnections"] = ( + _peerId: PeerId | undefined + ) => [con1]; const [stream1, stream2] = await Promise.all([ streamManager.getStream(mockPeer.id), @@ -143,7 +151,9 @@ describe("StreamManager", () => { writeStatus: "writable" }) ]; - streamManager["getConnections"] = (_id) => [con1]; + streamManager["libp2p"]["connectionManager"]["getConnections"] = ( + _id: PeerId | undefined + ) => [con1]; const scheduleNewStreamSpy = sinon.spy(); streamManager["scheduleNewStream"] = scheduleNewStreamSpy; diff --git a/packages/core/src/lib/stream_manager/stream_manager.ts b/packages/core/src/lib/stream_manager/stream_manager.ts index e533c3f0d7..b554817746 100644 --- a/packages/core/src/lib/stream_manager/stream_manager.ts +++ b/packages/core/src/lib/stream_manager/stream_manager.ts @@ -1,5 +1,5 @@ import type { Peer, PeerId, PeerUpdate, Stream } from "@libp2p/interface"; -import type { Libp2p } from "@waku/interfaces"; +import type { Libp2pComponents } from "@waku/interfaces"; import { Logger } from "@waku/utils"; import { selectOpenConnection } from "./utils.js"; @@ -14,11 +14,13 @@ export class StreamManager { public constructor( private multicodec: string, - private getConnections: Libp2p["getConnections"], - private addEventListener: Libp2p["addEventListener"] + private readonly libp2p: Libp2pComponents ) { this.log = new Logger(`stream-manager:${multicodec}`); - this.addEventListener("peer:update", this.handlePeerUpdateStreamPool); + this.libp2p.events.addEventListener( + "peer:update", + this.handlePeerUpdateStreamPool + ); } public async getStream(peerId: PeerId): Promise { @@ -47,7 +49,7 @@ export class StreamManager { } private async createStream(peerId: PeerId, retries = 0): Promise { - const connections = this.getConnections(peerId); + const connections = this.libp2p.connectionManager.getConnections(peerId); const connection = selectOpenConnection(connections); if (!connection) { @@ -135,7 +137,7 @@ export class StreamManager { } private getOpenStreamForCodec(peerId: PeerId): Stream | undefined { - const connections = this.getConnections(peerId); + const connections = this.libp2p.connectionManager.getConnections(peerId); const connection = selectOpenConnection(connections); if (!connection) { diff --git a/packages/discovery/package.json b/packages/discovery/package.json index 09e6a33508..29536ac163 100644 --- a/packages/discovery/package.json +++ b/packages/discovery/package.json @@ -69,13 +69,11 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.11", - "@types/node-localstorage": "^1.3.3", "@waku/build-utils": "*", "chai": "^4.3.10", "chai-as-promised": "^7.1.1", "cspell": "^8.6.1", "mocha": "^10.3.0", - "node-localstorage": "^3.0.5", "npm-run-all": "^4.1.5", "rollup": "^4.12.0", "sinon": "^18.0.0" diff --git a/packages/discovery/src/local-peer-cache/index.spec.ts b/packages/discovery/src/local-peer-cache/index.spec.ts index 798c6c4c23..2f07ad4de5 100644 --- a/packages/discovery/src/local-peer-cache/index.spec.ts +++ b/packages/discovery/src/local-peer-cache/index.spec.ts @@ -17,11 +17,23 @@ import { LocalPeerCacheDiscovery } from "./index.js"; chai.use(chaiAsPromised); -// dynamically importing the local storage polyfill for node if (typeof window === "undefined") { try { - const { LocalStorage } = await import("node-localstorage"); - global.localStorage = new LocalStorage("./scratch"); + global.localStorage = { + store: {} as Record, + getItem(key: string) { + return this.store[key] || null; + }, + setItem(key: string, value: string) { + this.store[key] = value; + }, + removeItem(key: string) { + delete this.store[key]; + }, + clear() { + this.store = {}; + } + } as any; } catch (error) { console.error("Failed to load localStorage polyfill:", error); } diff --git a/packages/discovery/src/peer-exchange/waku_peer_exchange.ts b/packages/discovery/src/peer-exchange/waku_peer_exchange.ts index 5c2ab30615..66ff8fd4bd 100644 --- a/packages/discovery/src/peer-exchange/waku_peer_exchange.ts +++ b/packages/discovery/src/peer-exchange/waku_peer_exchange.ts @@ -1,12 +1,11 @@ -import { BaseProtocol } from "@waku/core/lib/base_protocol"; +import { StreamManager } from "@waku/core"; import { EnrDecoder } from "@waku/enr"; import { IPeerExchange, Libp2pComponents, PeerExchangeQueryParams, PeerExchangeQueryResult, - ProtocolError, - PubsubTopic + ProtocolError } from "@waku/interfaces"; import { isDefined } from "@waku/utils"; import { Logger } from "@waku/utils"; @@ -24,15 +23,14 @@ const log = new Logger("peer-exchange"); /** * Implementation of the Peer Exchange protocol (https://rfc.vac.dev/spec/34/) */ -export class WakuPeerExchange extends BaseProtocol implements IPeerExchange { +export class WakuPeerExchange implements IPeerExchange { + private readonly streamManager: StreamManager; + /** * @param components - libp2p components */ - public constructor( - components: Libp2pComponents, - pubsubTopics: PubsubTopic[] - ) { - super(PeerExchangeCodec, components, pubsubTopics); + public constructor(private readonly components: Libp2pComponents) { + this.streamManager = new StreamManager(PeerExchangeCodec, components); } /** @@ -57,7 +55,7 @@ export class WakuPeerExchange extends BaseProtocol implements IPeerExchange { let stream; try { - stream = await this.getStream(peerId); + stream = await this.streamManager.getStream(peerId); } catch (err) { log.error("Failed to get stream", err); return { @@ -118,9 +116,8 @@ export class WakuPeerExchange extends BaseProtocol implements IPeerExchange { * * @returns A function that creates a new peer exchange protocol */ -export function wakuPeerExchange( - pubsubTopics: PubsubTopic[] -): (components: Libp2pComponents) => WakuPeerExchange { - return (components: Libp2pComponents) => - new WakuPeerExchange(components, pubsubTopics); +export function wakuPeerExchange(): ( + components: Libp2pComponents +) => WakuPeerExchange { + return (components: Libp2pComponents) => new WakuPeerExchange(components); } diff --git a/packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts b/packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts index 5b9a6d9eb4..6c246b6169 100644 --- a/packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts +++ b/packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts @@ -10,7 +10,6 @@ import type { import { type Libp2pComponents, type PeerExchangeQueryResult, - PubsubTopic, ShardInfo, Tags } from "@waku/interfaces"; @@ -87,14 +86,10 @@ export class PeerExchangeDiscovery ); }; - public constructor( - components: Libp2pComponents, - pubsubTopics: PubsubTopic[], - options: Options = {} - ) { + public constructor(components: Libp2pComponents, options: Options = {}) { super(); this.components = components; - this.peerExchange = new WakuPeerExchange(components, pubsubTopics); + this.peerExchange = new WakuPeerExchange(components); this.options = options; this.isStarted = false; } @@ -314,9 +309,9 @@ export class PeerExchangeDiscovery } } -export function wakuPeerExchangeDiscovery( - pubsubTopics: PubsubTopic[] -): (components: Libp2pComponents) => PeerExchangeDiscovery { +export function wakuPeerExchangeDiscovery(): ( + components: Libp2pComponents +) => PeerExchangeDiscovery { return (components: Libp2pComponents) => - new PeerExchangeDiscovery(components, pubsubTopics); + new PeerExchangeDiscovery(components); } diff --git a/packages/headless-tests/package.json b/packages/headless-tests/package.json index 91f7fc51b7..a3c1f5d9ee 100644 --- a/packages/headless-tests/package.json +++ b/packages/headless-tests/package.json @@ -9,6 +9,7 @@ "@babel/preset-env": "^7.24.0", "@babel/preset-typescript": "^7.23.3", "babel-loader": "^9.1.3", + "filter-obj": "^2.0.2", "node-polyfill-webpack-plugin": "^2.0.1", "serve": "^14.1.2", "webpack": "^5.99.5", diff --git a/packages/interfaces/src/filter.ts b/packages/interfaces/src/filter.ts index 7d5168e27b..40c645e492 100644 --- a/packages/interfaces/src/filter.ts +++ b/packages/interfaces/src/filter.ts @@ -4,7 +4,6 @@ import type { IDecodedMessage, IDecoder } from "./message.js"; import type { ContentTopic, ThisOrThat } from "./misc.js"; import type { Callback, - IBaseProtocolCore, ProtocolError, SDKProtocolResult } from "./protocols.js"; @@ -52,7 +51,8 @@ export interface ISubscription { unsubscribeAll(): Promise; } -export type IFilter = IReceiver & { protocol: IBaseProtocolCore } & { +export type IFilter = IReceiver & { + readonly multicodec: string; subscribe( decoders: IDecoder | IDecoder[], callback: Callback diff --git a/packages/interfaces/src/filter_next.ts b/packages/interfaces/src/filter_next.ts index f995c6879a..e5f66b72aa 100644 --- a/packages/interfaces/src/filter_next.ts +++ b/packages/interfaces/src/filter_next.ts @@ -2,6 +2,8 @@ import type { IDecodedMessage, IDecoder } from "./message.js"; import type { Callback } from "./protocols.js"; export type INextFilter = { + readonly multicodec: string; + /** * Subscribes to messages with specified decoders and executes callback when a message is received. * In case no peers available initially - will delay subscription till connects to any peer. diff --git a/packages/interfaces/src/light_push.ts b/packages/interfaces/src/light_push.ts index 6a9eb9d83d..e58d48f092 100644 --- a/packages/interfaces/src/light_push.ts +++ b/packages/interfaces/src/light_push.ts @@ -1,4 +1,3 @@ -import { IBaseProtocolCore } from "./protocols.js"; import type { ISender, ISendOptions } from "./sender.js"; export type LightPushProtocolOptions = ISendOptions & { @@ -17,7 +16,7 @@ export type LightPushProtocolOptions = ISendOptions & { }; export type ILightPush = ISender & { + readonly multicodec: string; start: () => void; stop: () => void; - protocol: IBaseProtocolCore; }; diff --git a/packages/interfaces/src/metadata.ts b/packages/interfaces/src/metadata.ts index 974a3a4b5f..91261ead37 100644 --- a/packages/interfaces/src/metadata.ts +++ b/packages/interfaces/src/metadata.ts @@ -1,14 +1,13 @@ import type { PeerId } from "@libp2p/interface"; import { PubsubTopic, ThisOrThat } from "./misc.js"; -import type { IBaseProtocolCore } from "./protocols.js"; import type { ShardInfo } from "./sharding.js"; export type MetadataQueryResult = ThisOrThat<"shardInfo", ShardInfo>; -// IMetadata always has shardInfo defined while it is optionally undefined in IBaseProtocol -export interface IMetadata extends Omit { - pubsubTopics: PubsubTopic[]; +export interface IMetadata { + readonly multicodec: string; + readonly pubsubTopics: PubsubTopic[]; confirmOrAttemptHandshake(peerId: PeerId): Promise; query(peerId: PeerId): Promise; } diff --git a/packages/interfaces/src/peer_exchange.ts b/packages/interfaces/src/peer_exchange.ts index 2078899cae..6cd1f2193a 100644 --- a/packages/interfaces/src/peer_exchange.ts +++ b/packages/interfaces/src/peer_exchange.ts @@ -4,9 +4,8 @@ import type { ConnectionManager } from "@libp2p/interface-internal"; import { IEnr } from "./enr.js"; import { ThisOrThat } from "./misc.js"; -import { IBaseProtocolCore } from "./protocols.js"; -export interface IPeerExchange extends IBaseProtocolCore { +export interface IPeerExchange { query(params: PeerExchangeQueryParams): Promise; } diff --git a/packages/interfaces/src/protocols.ts b/packages/interfaces/src/protocols.ts index f80ad0806e..1086bc28d9 100644 --- a/packages/interfaces/src/protocols.ts +++ b/packages/interfaces/src/protocols.ts @@ -1,4 +1,3 @@ -import type { Libp2p } from "@libp2p/interface"; import type { PeerId } from "@libp2p/interface"; import type { ConnectionManagerOptions } from "./connection_manager.js"; @@ -17,12 +16,6 @@ export enum Protocols { Filter = "filter" } -export type IBaseProtocolCore = { - multicodec: string; - addLibp2pEventListener: Libp2p["addEventListener"]; - removeLibp2pEventListener: Libp2p["removeEventListener"]; -}; - export type NetworkConfig = StaticSharding | AutoSharding; export type CreateNodeOptions = { diff --git a/packages/interfaces/src/store.ts b/packages/interfaces/src/store.ts index 88a2f59b81..cf2ee15e3b 100644 --- a/packages/interfaces/src/store.ts +++ b/packages/interfaces/src/store.ts @@ -1,5 +1,4 @@ import type { IDecodedMessage, IDecoder } from "./message.js"; -import type { IBaseProtocolCore } from "./protocols.js"; export type StoreCursor = Uint8Array; @@ -76,10 +75,9 @@ export type QueryRequestParams = { paginationLimit?: number; }; -export type IStoreCore = IBaseProtocolCore; - export type IStore = { - protocol: IBaseProtocolCore; + readonly multicodec: string; + createCursor(message: IDecodedMessage): StoreCursor; queryGenerator: ( decoders: IDecoder[], diff --git a/packages/sdk/src/create/discovery.spec.ts b/packages/sdk/src/create/discovery.spec.ts index 40ce90ba94..14982025d5 100644 --- a/packages/sdk/src/create/discovery.spec.ts +++ b/packages/sdk/src/create/discovery.spec.ts @@ -1,18 +1,15 @@ -import { PubsubTopic } from "@waku/interfaces"; import { expect } from "chai"; import { getPeerDiscoveries } from "./discovery.js"; describe("Default Peer Discoveries", () => { - const pubsubTopics: PubsubTopic[] = []; - it("should have no discoveries enabled by default", () => { - const discoveries = getPeerDiscoveries(pubsubTopics); + const discoveries = getPeerDiscoveries(); expect(discoveries.length).to.equal(0); }); it("should enable all discoveries when explicitly set", () => { - const discoveries = getPeerDiscoveries(pubsubTopics, { + const discoveries = getPeerDiscoveries({ dns: true, peerExchange: true, localPeerCache: true @@ -21,7 +18,7 @@ describe("Default Peer Discoveries", () => { }); it("should enable only peerExchange and localPeerCache when dns is disabled", () => { - const discoveries = getPeerDiscoveries(pubsubTopics, { + const discoveries = getPeerDiscoveries({ dns: false, peerExchange: true, localPeerCache: true @@ -30,7 +27,7 @@ describe("Default Peer Discoveries", () => { }); it("should enable only dns and localPeerCache when peerExchange is disabled", () => { - const discoveries = getPeerDiscoveries(pubsubTopics, { + const discoveries = getPeerDiscoveries({ dns: true, peerExchange: false, localPeerCache: true @@ -39,7 +36,7 @@ describe("Default Peer Discoveries", () => { }); it("should enable only dns and peerExchange when localPeerCache is disabled", () => { - const discoveries = getPeerDiscoveries(pubsubTopics, { + const discoveries = getPeerDiscoveries({ dns: true, peerExchange: true, localPeerCache: false @@ -48,7 +45,7 @@ describe("Default Peer Discoveries", () => { }); it("should enable only localPeerCache when dns and peerExchange are disabled", () => { - const discoveries = getPeerDiscoveries(pubsubTopics, { + const discoveries = getPeerDiscoveries({ dns: false, peerExchange: false, localPeerCache: true diff --git a/packages/sdk/src/create/discovery.ts b/packages/sdk/src/create/discovery.ts index c18cc1ec0b..87b48a48b8 100644 --- a/packages/sdk/src/create/discovery.ts +++ b/packages/sdk/src/create/discovery.ts @@ -5,14 +5,9 @@ import { wakuLocalPeerCacheDiscovery, wakuPeerExchangeDiscovery } from "@waku/discovery"; -import { - CreateNodeOptions, - type Libp2pComponents, - PubsubTopic -} from "@waku/interfaces"; +import { CreateNodeOptions, type Libp2pComponents } from "@waku/interfaces"; export function getPeerDiscoveries( - pubsubTopics: PubsubTopic[], enabled?: CreateNodeOptions["discovery"] ): ((components: Libp2pComponents) => PeerDiscovery)[] { const dnsEnrTrees = [enrTree["SANDBOX"]]; @@ -28,7 +23,7 @@ export function getPeerDiscoveries( } if (enabled?.peerExchange) { - discoveries.push(wakuPeerExchangeDiscovery(pubsubTopics)); + discoveries.push(wakuPeerExchangeDiscovery()); } return discoveries; diff --git a/packages/sdk/src/create/libp2p.ts b/packages/sdk/src/create/libp2p.ts index 868cc3f3d0..a05c488d43 100644 --- a/packages/sdk/src/create/libp2p.ts +++ b/packages/sdk/src/create/libp2p.ts @@ -97,13 +97,13 @@ export async function createLibp2pAndUpdateOptions( if (options?.defaultBootstrap) { peerDiscovery.push( - ...getPeerDiscoveries(pubsubTopics, { + ...getPeerDiscoveries({ ...DEFAULT_DISCOVERIES_ENABLED, ...options.discovery }) ); } else { - peerDiscovery.push(...getPeerDiscoveries(pubsubTopics, options.discovery)); + peerDiscovery.push(...getPeerDiscoveries(options.discovery)); } if (options?.bootstrapPeers) { diff --git a/packages/sdk/src/filter/filter.ts b/packages/sdk/src/filter/filter.ts index 3325703d16..268bb26e2b 100644 --- a/packages/sdk/src/filter/filter.ts +++ b/packages/sdk/src/filter/filter.ts @@ -74,6 +74,10 @@ export class Filter implements IFilter { this.activeSubscriptions = new Map(); } + public get multicodec(): string { + return this.protocol.multicodec; + } + /** * Opens a subscription with the Filter protocol using the provided decoders and callback. * This method combines the functionality of creating a subscription and subscribing to it. diff --git a/packages/sdk/src/filter_next/filter.ts b/packages/sdk/src/filter_next/filter.ts index ae65302f6e..9a70cde1a6 100644 --- a/packages/sdk/src/filter_next/filter.ts +++ b/packages/sdk/src/filter_next/filter.ts @@ -47,6 +47,10 @@ export class Filter implements IFilter { ); } + public get multicodec(): string { + return this.protocol.multicodec; + } + /** * Unsubscribes from all active subscriptions across all pubsub topics. * diff --git a/packages/sdk/src/light_push/light_push.spec.ts b/packages/sdk/src/light_push/light_push.spec.ts index d566380212..a3fc88cf76 100644 --- a/packages/sdk/src/light_push/light_push.spec.ts +++ b/packages/sdk/src/light_push/light_push.spec.ts @@ -62,7 +62,7 @@ describe("LightPush SDK", () => { (_encoder: any, _message: any, peerId: PeerId) => Promise.resolve({ success: peerId }) as any ); - lightPush.protocol.send = sendSpy; + lightPush["protocol"].send = sendSpy; let result = await lightPush.send(encoder, { payload: utf8ToBytes("test") @@ -77,7 +77,7 @@ describe("LightPush SDK", () => { (_encoder: any, _message: any, peerId: PeerId) => Promise.resolve({ success: peerId }) as any ); - lightPush.protocol.send = sendSpy; + lightPush["protocol"].send = sendSpy; result = await lightPush.send(encoder, { payload: utf8ToBytes("test") }); @@ -94,7 +94,7 @@ describe("LightPush SDK", () => { const sendSpy = sinon.spy((_encoder: any, _message: any, _peerId: PeerId) => Promise.resolve({ failure: { error: "problem" } }) ); - lightPush.protocol.send = sendSpy as any; + lightPush["protocol"].send = sendSpy as any; const retryPushSpy = (lightPush as any)["retryManager"].push as SinonSpy; const result = await lightPush.send( @@ -122,7 +122,7 @@ describe("LightPush SDK", () => { return Promise.resolve({ failure: { error: "problem" } }); } ); - lightPush.protocol.send = sendSpy as any; + lightPush["protocol"].send = sendSpy as any; const retryPushSpy = (lightPush as any)["retryManager"].push as SinonSpy; const result = await lightPush.send( diff --git a/packages/sdk/src/light_push/light_push.ts b/packages/sdk/src/light_push/light_push.ts index 476b1b6c90..90e2584689 100644 --- a/packages/sdk/src/light_push/light_push.ts +++ b/packages/sdk/src/light_push/light_push.ts @@ -38,9 +38,8 @@ type LightPushConstructorParams = { export class LightPush implements ILightPush { private readonly config: LightPushProtocolOptions; private readonly retryManager: RetryManager; - private peerManager: PeerManager; - - public readonly protocol: LightPushCore; + private readonly peerManager: PeerManager; + private readonly protocol: LightPushCore; public constructor(params: LightPushConstructorParams) { this.config = { @@ -59,6 +58,10 @@ export class LightPush implements ILightPush { }); } + public get multicodec(): string { + return this.protocol.multicodec; + } + public start(): void { this.retryManager.start(); } diff --git a/packages/sdk/src/store/store.ts b/packages/sdk/src/store/store.ts index f3c9b7b76e..f95db353d2 100644 --- a/packages/sdk/src/store/store.ts +++ b/packages/sdk/src/store/store.ts @@ -27,11 +27,10 @@ type StoreConstructorParams = { * It provides methods to interact with the Waku Store protocol. */ export class Store implements IStore { - private options: Partial; - private peerManager: PeerManager; - private connectionManager: ConnectionManager; - - public readonly protocol: StoreCore; + private readonly options: Partial; + private readonly peerManager: PeerManager; + private readonly connectionManager: ConnectionManager; + private readonly protocol: StoreCore; public constructor(params: StoreConstructorParams) { this.options = params.options || {}; @@ -44,6 +43,10 @@ export class Store implements IStore { ); } + public get multicodec(): string { + return this.protocol.multicodec; + } + /** * Queries the Waku Store for historical messages using the provided decoders and options. * Returns an asynchronous generator that yields promises of decoded messages. diff --git a/packages/sdk/src/waku/waku.ts b/packages/sdk/src/waku/waku.ts index 323f548149..7d1b8e3206 100644 --- a/packages/sdk/src/waku/waku.ts +++ b/packages/sdk/src/waku/waku.ts @@ -190,7 +190,7 @@ export class WakuNode implements IWaku { } if (_protocols.includes(Protocols.Store)) { if (this.store) { - codecs.push(this.store.protocol.multicodec); + codecs.push(this.store.multicodec); } else { log.error( "Store codec not included in dial codec: protocol not mounted locally" @@ -199,7 +199,7 @@ export class WakuNode implements IWaku { } if (_protocols.includes(Protocols.LightPush)) { if (this.lightPush) { - codecs.push(this.lightPush.protocol.multicodec); + codecs.push(this.lightPush.multicodec); } else { log.error( "Light Push codec not included in dial codec: protocol not mounted locally" @@ -207,8 +207,8 @@ export class WakuNode implements IWaku { } } if (_protocols.includes(Protocols.Filter)) { - if (this.filter) { - codecs.push(this.filter.protocol.multicodec); + if (this.nextFilter) { + codecs.push(this.nextFilter.multicodec); } else { log.error( "Filter codec not included in dial codec: protocol not mounted locally" diff --git a/packages/tests/tests/peer-exchange/compliance.spec.ts b/packages/tests/tests/peer-exchange/compliance.spec.ts index a7e43bdb24..5ac95252c4 100644 --- a/packages/tests/tests/peer-exchange/compliance.spec.ts +++ b/packages/tests/tests/peer-exchange/compliance.spec.ts @@ -5,7 +5,6 @@ import { createLightNode } from "@waku/sdk"; import { beforeEachCustom, - DefaultTestPubsubTopic, DefaultTestShardInfo, makeLogFileName, ServiceNode, @@ -46,9 +45,7 @@ describe("Peer Exchange", function () { const nwaku2Ma = await nwaku2.getMultiaddrWithId(); - const peerExchange = new PeerExchangeDiscovery(waku.libp2p.components, [ - DefaultTestPubsubTopic - ]); + const peerExchange = new PeerExchangeDiscovery(waku.libp2p.components); peerExchange.addEventListener("waku:peer-exchange:started", (event) => { if (event.detail === true) { diff --git a/packages/tests/tests/peer-exchange/continuous_discovery.spec.ts b/packages/tests/tests/peer-exchange/continuous_discovery.spec.ts index 94ba6bc5b3..08fa5027d3 100644 --- a/packages/tests/tests/peer-exchange/continuous_discovery.spec.ts +++ b/packages/tests/tests/peer-exchange/continuous_discovery.spec.ts @@ -5,7 +5,7 @@ import { multiaddr } from "@multiformats/multiaddr"; import { PeerExchangeDiscovery } from "@waku/discovery"; import { IEnr, LightNode } from "@waku/interfaces"; import { createLightNode, ShardInfo } from "@waku/sdk"; -import { decodeRelayShard, shardInfoToPubsubTopics } from "@waku/utils"; +import { decodeRelayShard } from "@waku/utils"; import { expect } from "chai"; import Sinon from "sinon"; @@ -24,10 +24,7 @@ describe("Peer Exchange Continuous Discovery", () => { beforeEach(async () => { waku = await createLightNode(); - peerExchangeDiscovery = new PeerExchangeDiscovery( - waku.libp2p.components, - shardInfoToPubsubTopics(shardInfo) - ); + peerExchangeDiscovery = new PeerExchangeDiscovery(waku.libp2p.components); queryStub = Sinon.stub( (peerExchangeDiscovery as any).peerExchange, "query" as any diff --git a/packages/tests/tests/peer-exchange/index.spec.ts b/packages/tests/tests/peer-exchange/index.spec.ts index 478892de9e..666b97c24f 100644 --- a/packages/tests/tests/peer-exchange/index.spec.ts +++ b/packages/tests/tests/peer-exchange/index.spec.ts @@ -10,7 +10,6 @@ import Sinon, { SinonSpy } from "sinon"; import { afterEachCustom, beforeEachCustom, - DefaultTestPubsubTopic, DefaultTestShardInfo, makeLogFileName, ServiceNode, @@ -59,7 +58,7 @@ describe("Peer Exchange", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [(await nwaku2.getMultiaddrWithId()).toString()] }), - wakuPeerExchangeDiscovery([DefaultTestPubsubTopic]) + wakuPeerExchangeDiscovery() ] } }); @@ -106,7 +105,7 @@ describe("Peer Exchange", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [(await nwaku2.getMultiaddrWithId()).toString()] }), - wakuPeerExchangeDiscovery([DefaultTestPubsubTopic]) + wakuPeerExchangeDiscovery() ] } }); @@ -165,7 +164,7 @@ describe("Peer Exchange", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [(await nwaku2.getMultiaddrWithId()).toString()] }), - wakuPeerExchangeDiscovery(["wrong"]) + wakuPeerExchangeDiscovery() ] } }); diff --git a/packages/tests/tests/peer-exchange/pe.optional.spec.ts b/packages/tests/tests/peer-exchange/pe.optional.spec.ts index 80671816c3..9b93f1d660 100644 --- a/packages/tests/tests/peer-exchange/pe.optional.spec.ts +++ b/packages/tests/tests/peer-exchange/pe.optional.spec.ts @@ -6,10 +6,7 @@ import { } from "@waku/discovery"; import type { LightNode } from "@waku/interfaces"; import { createLightNode } from "@waku/sdk"; -import { - singleShardInfosToShardInfo, - singleShardInfoToPubsubTopic -} from "@waku/utils"; +import { singleShardInfosToShardInfo } from "@waku/utils"; import { expect } from "chai"; import { afterEachCustom, tearDownNodes } from "../../src/index.js"; @@ -41,12 +38,11 @@ describe("Peer Exchange", () => { const singleShardInfo = { clusterId: 1, shard: 1 }; const shardInfo = singleShardInfosToShardInfo([singleShardInfo]); - const pubsubTopic = singleShardInfoToPubsubTopic(singleShardInfo); waku = await createLightNode({ libp2p: { peerDiscovery: [ bootstrap({ list: dnsPeerMultiaddrs }), - wakuPeerExchangeDiscovery([pubsubTopic]) + wakuPeerExchangeDiscovery() ] }, networkConfig: shardInfo diff --git a/packages/tests/tests/peer-exchange/query.spec.ts b/packages/tests/tests/peer-exchange/query.spec.ts index 825ef7fb47..87296e60a7 100644 --- a/packages/tests/tests/peer-exchange/query.spec.ts +++ b/packages/tests/tests/peer-exchange/query.spec.ts @@ -9,7 +9,7 @@ import { } from "@waku/discovery"; import type { LightNode, PeerExchangeQueryResult } from "@waku/interfaces"; import { createLightNode, Libp2pComponents, ProtocolError } from "@waku/sdk"; -import { Logger, singleShardInfoToPubsubTopic } from "@waku/utils"; +import { Logger } from "@waku/utils"; import { expect } from "chai"; import { @@ -25,12 +25,6 @@ import { export const log = new Logger("test:pe"); const ShardInfo = { clusterId: 0, shards: [2] }; -const pubsubTopic = [ - singleShardInfoToPubsubTopic({ - clusterId: ShardInfo.clusterId, - shard: ShardInfo.shards[0] - }) -]; describe("Peer Exchange Query", function () { this.timeout(30_000); @@ -82,7 +76,7 @@ describe("Peer Exchange Query", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [nwaku3MA.toString()] }), - wakuPeerExchangeDiscovery(pubsubTopic) + wakuPeerExchangeDiscovery() ] } }); @@ -91,7 +85,7 @@ describe("Peer Exchange Query", function () { await waitForRemotePeerWithCodec(waku, PeerExchangeCodec, nwaku3PeerId); components = waku.libp2p.components as unknown as Libp2pComponents; - peerExchange = new WakuPeerExchange(components, pubsubTopic); + peerExchange = new WakuPeerExchange(components); numPeersToRequest = 2; const startTime = Date.now(); diff --git a/packages/tests/tests/sharding/peer_management.spec.ts b/packages/tests/tests/sharding/peer_management.spec.ts index 4efd6ad922..6321a6919b 100644 --- a/packages/tests/tests/sharding/peer_management.spec.ts +++ b/packages/tests/tests/sharding/peer_management.spec.ts @@ -8,11 +8,7 @@ import { ShardInfo, Tags } from "@waku/sdk"; -import { - contentTopicToPubsubTopic, - contentTopicToShardIndex, - singleShardInfoToPubsubTopic -} from "@waku/utils"; +import { contentTopicToShardIndex } from "@waku/utils"; import chai, { expect } from "chai"; import chaiAsPromised from "chai-as-promised"; import Sinon, { SinonSpy } from "sinon"; @@ -52,9 +48,6 @@ describe("Static Sharding: Peer Management", function () { it("all px service nodes subscribed to the shard topic should be dialed", async function () { this.timeout(100_000); - const pubsubTopics = [ - singleShardInfoToPubsubTopic({ clusterId: clusterId, shard: 2 }) - ]; const shardInfo: ShardInfo = { clusterId: clusterId, shards: [2] }; await nwaku1.start({ @@ -93,7 +86,7 @@ describe("Static Sharding: Peer Management", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [nwaku3Ma.toString()] }), - wakuPeerExchangeDiscovery(pubsubTopics) + wakuPeerExchangeDiscovery() ] } }); @@ -127,9 +120,6 @@ describe("Static Sharding: Peer Management", function () { it("px service nodes not subscribed to the shard should not be dialed", async function () { this.timeout(100_000); - const pubsubTopicsToDial = [ - singleShardInfoToPubsubTopic({ clusterId: clusterId, shard: 2 }) - ]; const shardInfoToDial: ShardInfo = { clusterId: clusterId, shards: [2] }; // this service node is not subscribed to the shard @@ -169,7 +159,7 @@ describe("Static Sharding: Peer Management", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [nwaku3Ma.toString()] }), - wakuPeerExchangeDiscovery(pubsubTopicsToDial) + wakuPeerExchangeDiscovery() ] } }); @@ -229,7 +219,6 @@ describe("Autosharding: Peer Management", function () { it("all px service nodes subscribed to the shard topic should be dialed", async function () { this.timeout(100_000); - const pubsubTopics = [contentTopicToPubsubTopic(ContentTopic, clusterId)]; const contentTopicInfo: ContentTopicInfo = { clusterId: clusterId, contentTopics: [ContentTopic] @@ -274,7 +263,7 @@ describe("Autosharding: Peer Management", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [nwaku3Ma.toString()] }), - wakuPeerExchangeDiscovery(pubsubTopics) + wakuPeerExchangeDiscovery() ] } }); @@ -308,9 +297,6 @@ describe("Autosharding: Peer Management", function () { it("px service nodes not subscribed to the shard should not be dialed", async function () { this.timeout(100_000); - const pubsubTopicsToDial = [ - contentTopicToPubsubTopic(ContentTopic, clusterId) - ]; const contentTopicInfoToDial: ContentTopicInfo = { clusterId: clusterId, contentTopics: [ContentTopic] @@ -355,7 +341,7 @@ describe("Autosharding: Peer Management", function () { libp2p: { peerDiscovery: [ bootstrap({ list: [nwaku3Ma.toString()] }), - wakuPeerExchangeDiscovery(pubsubTopicsToDial) + wakuPeerExchangeDiscovery() ] } });