fix(node): remove subscription to waku default network topic (#1545)

This commit is contained in:
Lorenzo Delgado 2023-02-10 17:55:47 +01:00 committed by GitHub
parent f88dc816ee
commit 1ea771fb2f
5 changed files with 36 additions and 39 deletions

View File

@ -18,7 +18,7 @@ import
procSuite "Peer Exchange": procSuite "Peer Exchange":
asyncTest "GossipSub (relay) peer exchange": asyncTest "GossipSub (relay) peer exchange":
## Tests peer exchange ## Tests peer exchange
# Create nodes and ENR. These will be added to the discoverable list # Create nodes and ENR. These will be added to the discoverable list
let let
bindIp = ValidIpAddress.init("0.0.0.0") bindIp = ValidIpAddress.init("0.0.0.0")
@ -28,41 +28,41 @@ procSuite "Peer Exchange":
node2 = WakuNode.new(nodeKey2, bindIp, Port(61102), sendSignedPeerRecord = true) node2 = WakuNode.new(nodeKey2, bindIp, Port(61102), sendSignedPeerRecord = true)
nodeKey3 = crypto.PrivateKey.random(Secp256k1, rng[])[] nodeKey3 = crypto.PrivateKey.random(Secp256k1, rng[])[]
node3 = WakuNode.new(nodeKey3, bindIp, Port(61103), sendSignedPeerRecord = true) node3 = WakuNode.new(nodeKey3, bindIp, Port(61103), sendSignedPeerRecord = true)
var var
peerExchangeHandler, emptyHandler: RoutingRecordsHandler peerExchangeHandler, emptyHandler: RoutingRecordsHandler
completionFut = newFuture[bool]() completionFut = newFuture[bool]()
proc ignorePeerExchange(peer: PeerId, topic: string, proc ignorePeerExchange(peer: PeerId, topic: string,
peers: seq[RoutingRecordsPair]) {.gcsafe, raises: [Defect].} = peers: seq[RoutingRecordsPair]) {.gcsafe.} =
discard discard
proc handlePeerExchange(peer: PeerId, topic: string, proc handlePeerExchange(peer: PeerId, topic: string,
peers: seq[RoutingRecordsPair]) {.gcsafe, raises: [Defect].} = peers: seq[RoutingRecordsPair]) {.gcsafe.} =
## Handle peers received via gossipsub peer exchange ## Handle peers received via gossipsub peer exchange
let peerRecords = peers.mapIt(it.record.get()) let peerRecords = peers.mapIt(it.record.get())
check: check:
# Node 3 is informed of node 2 via peer exchange # Node 3 is informed of node 2 via peer exchange
peer == node1.switch.peerInfo.peerId peer == node1.switch.peerInfo.peerId
topic == DefaultPubsubTopic topic == DefaultPubsubTopic
peerRecords.countIt(it.peerId == node2.switch.peerInfo.peerId) == 1 peerRecords.countIt(it.peerId == node2.switch.peerInfo.peerId) == 1
if (not completionFut.completed()): if (not completionFut.completed()):
completionFut.complete(true) completionFut.complete(true)
peerExchangeHandler = handlePeerExchange peerExchangeHandler = handlePeerExchange
emptyHandler = ignorePeerExchange emptyHandler = ignorePeerExchange
await node1.mountRelay(peerExchangeHandler = some(emptyHandler)) await node1.mountRelay(topics = @[DefaultPubsubTopic], peerExchangeHandler = some(emptyHandler))
await node2.mountRelay(peerExchangeHandler = some(emptyHandler)) await node2.mountRelay(topics = @[DefaultPubsubTopic], peerExchangeHandler = some(emptyHandler))
await node3.mountRelay(peerExchangeHandler = some(peerExchangeHandler)) await node3.mountRelay(topics = @[DefaultPubsubTopic], peerExchangeHandler = some(peerExchangeHandler))
# Ensure that node1 prunes all peers after the first connection # Ensure that node1 prunes all peers after the first connection
node1.wakuRelay.parameters.dHigh = 1 node1.wakuRelay.parameters.dHigh = 1
await allFutures([node1.start(), node2.start(), node3.start()]) await allFutures([node1.start(), node2.start(), node3.start()])
await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
await node3.connectToNodes(@[node1.switch.peerInfo.toRemotePeerInfo()]) await node3.connectToNodes(@[node1.switch.peerInfo.toRemotePeerInfo()])

View File

@ -68,7 +68,7 @@ suite "REST API - Relay":
check: check:
# Node should be subscribed to default + new topics # Node should be subscribed to default + new topics
toSeq(node.wakuRelay.subscribedTopics).len == 1 + pubSubTopics.len toSeq(node.wakuRelay.subscribedTopics).len == pubSubTopics.len
await restServer.stop() await restServer.stop()
await restServer.closeWait() await restServer.closeWait()
@ -191,7 +191,7 @@ suite "REST API - Relay":
let client = newRestHttpClient(initTAddress(restAddress, restPort)) let client = newRestHttpClient(initTAddress(restAddress, restPort))
# At this stage the node is only subscribed to the default topic node.subscribe(DefaultPubsubTopic)
require: require:
toSeq(node.wakuRelay.subscribedTopics).len == 1 toSeq(node.wakuRelay.subscribedTopics).len == 1

View File

@ -23,7 +23,7 @@ import
from std/times import epochTime from std/times import epochTime
const RlnRelayPubsubTopic = "waku/2/rlnrelay/proto" const RlnRelayPubsubTopic = "waku/2/rlnrelay/proto"
procSuite "WakuNode - RLN relay": procSuite "WakuNode - RLN relay":
@ -47,7 +47,7 @@ procSuite "WakuNode - RLN relay":
# set up three nodes # set up three nodes
# node1 # node1
await node1.mountRelay(@[rlnRelayPubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
@ -59,7 +59,7 @@ procSuite "WakuNode - RLN relay":
await node1.start() await node1.start()
# node 2 # node 2
await node2.mountRelay(@[rlnRelayPubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
rlnRelayPubsubTopic: rlnRelayPubSubTopic, rlnRelayPubsubTopic: rlnRelayPubSubTopic,
@ -70,7 +70,7 @@ procSuite "WakuNode - RLN relay":
await node2.start() await node2.start()
# node 3 # node 3
await node3.mountRelay(@[rlnRelayPubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
rlnRelayPubsubTopic: rlnRelayPubSubTopic, rlnRelayPubsubTopic: rlnRelayPubSubTopic,
@ -136,7 +136,7 @@ procSuite "WakuNode - RLN relay":
# node1 # node1
# set up three nodes # set up three nodes
# node1 # node1
await node1.mountRelay(@[rlnRelayPubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
@ -148,7 +148,7 @@ procSuite "WakuNode - RLN relay":
await node1.start() await node1.start()
# node 2 # node 2
await node2.mountRelay(@[rlnRelayPubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
rlnRelayPubsubTopic: rlnRelayPubSubTopic, rlnRelayPubsubTopic: rlnRelayPubSubTopic,
@ -159,7 +159,7 @@ procSuite "WakuNode - RLN relay":
await node2.start() await node2.start()
# node 3 # node 3
await node3.mountRelay(@[rlnRelayPubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
rlnRelayPubsubTopic: rlnRelayPubSubTopic, rlnRelayPubsubTopic: rlnRelayPubSubTopic,
@ -196,7 +196,7 @@ procSuite "WakuNode - RLN relay":
let let
contentTopicBytes = contentTopic.toBytes contentTopicBytes = contentTopic.toBytes
input = concat(payload, contentTopicBytes) input = concat(payload, contentTopicBytes)
extraBytes: seq[byte] = @[byte(1),2,3] extraBytes: seq[byte] = @[byte(1),2,3]
rateLimitProofRes = node1.wakuRlnRelay.rlnInstance.proofGen(data = concat(input, extraBytes), # we add extra bytes to invalidate proof verification against original payload rateLimitProofRes = node1.wakuRlnRelay.rlnInstance.proofGen(data = concat(input, extraBytes), # we add extra bytes to invalidate proof verification against original payload
memKeys = node1.wakuRlnRelay.identityCredential, memKeys = node1.wakuRlnRelay.identityCredential,
memIndex = MembershipIndex(1), memIndex = MembershipIndex(1),
@ -243,7 +243,7 @@ procSuite "WakuNode - RLN relay":
# set up three nodes # set up three nodes
# node1 # node1
await node1.mountRelay(@[rlnRelayPubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node1.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
@ -255,7 +255,7 @@ procSuite "WakuNode - RLN relay":
await node1.start() await node1.start()
# node 2 # node 2
await node2.mountRelay(@[rlnRelayPubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node2.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
@ -267,7 +267,7 @@ procSuite "WakuNode - RLN relay":
await node2.start() await node2.start()
# node 3 # node 3
await node3.mountRelay(@[rlnRelayPubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, rlnRelayPubSubTopic])
# mount rlnrelay in off-chain mode # mount rlnrelay in off-chain mode
await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false, await node3.mountRlnRelay(WakuRlnConfig(rlnRelayDynamic: false,
@ -350,4 +350,4 @@ procSuite "WakuNode - RLN relay":
await node1.stop() await node1.stop()
await node2.stop() await node2.stop()
await node3.stop() await node3.stop()

View File

@ -38,7 +38,7 @@ procSuite "Waku v2 JSON-RPC API - Relay":
asyncTest "subscribe, unsubscribe and publish": asyncTest "subscribe, unsubscribe and publish":
await node.start() await node.start()
await node.mountRelay() await node.mountRelay(topics = @[DefaultPubsubTopic])
# RPC server setup # RPC server setup
let let
@ -101,13 +101,13 @@ procSuite "Waku v2 JSON-RPC API - Relay":
message2 = WakuMessage(payload: payload2, contentTopic: contentTopic) message2 = WakuMessage(payload: payload2, contentTopic: contentTopic)
await node1.start() await node1.start()
await node1.mountRelay(@[pubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node2.start() await node2.start()
await node2.mountRelay(@[pubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node3.start() await node3.start()
await node3.mountRelay(@[pubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
@ -191,13 +191,13 @@ procSuite "Waku v2 JSON-RPC API - Relay":
topicCache = newTestMessageCache() topicCache = newTestMessageCache()
await node1.start() await node1.start()
await node1.mountRelay(@[pubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node2.start() await node2.start()
await node2.mountRelay(@[pubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node3.start() await node3.start()
await node3.mountRelay(@[pubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
@ -282,13 +282,13 @@ procSuite "Waku v2 JSON-RPC API - Relay":
topicCache = newTestMessageCache() topicCache = newTestMessageCache()
await node1.start() await node1.start()
await node1.mountRelay(@[pubSubTopic]) await node1.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node2.start() await node2.start()
await node2.mountRelay(@[pubSubTopic]) await node2.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node3.start() await node3.start()
await node3.mountRelay(@[pubSubTopic]) await node3.mountRelay(@[DefaultPubsubTopic, pubSubTopic])
await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()]) await node3.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])

View File

@ -548,9 +548,6 @@ proc mountRelay*(node: WakuNode,
info "relay mounted successfully" info "relay mounted successfully"
# TODO: As part of #1545, remove this and update the tests cases
node.subscribe(DefaultPubsubTopic)
# Subscribe to topics # Subscribe to topics
for topic in topics: for topic in topics:
node.subscribe(topic) node.subscribe(topic)