Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: don't establish connections in non-relay bootstrap nodes #2900

Closed
Closed
3 changes: 3 additions & 0 deletions apps/wakunode2/wakunode2.nim
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,11 @@ when isMainModule:
## Stop node gracefully on shutdown.

proc asyncStopper(node: Waku) {.async: (raises: [Exception]).} =
echo "----------- asyncStopper 1 ------------"
nodeHealthMonitor.setOverallHealth(HealthStatus.SHUTTING_DOWN)
echo "----------- asyncStopper 2 ------------"
await node.stop()
echo "----------- asyncStopper 3 ------------"
quit(QuitSuccess)

# Handle Ctrl-C SIGINT
Expand Down
5 changes: 4 additions & 1 deletion examples/wakustealthcommitments/node_spec.nim
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ proc setup*(): Waku =
# Override configuration
conf.maxMessageSize = twnClusterConf.maxMessageSize
conf.clusterId = twnClusterConf.clusterId
conf.rlnRelay = twnClusterConf.rlnRelay
conf.rlnRelayEthContractAddress = twnClusterConf.rlnRelayEthContractAddress
conf.rlnRelayDynamic = twnClusterConf.rlnRelayDynamic
conf.rlnRelayBandwidthThreshold = twnClusterConf.rlnRelayBandwidthThreshold
Expand All @@ -44,6 +43,10 @@ proc setup*(): Waku =
conf.rlnEpochSizeSec = twnClusterConf.rlnEpochSizeSec
conf.rlnRelayUserMessageLimit = twnClusterConf.rlnRelayUserMessageLimit

# Only set rlnRelay to true if relay is configured
if conf.relay:
conf.rlnRelay = twnClusterConf.rlnRelay

debug "Starting node"
var waku = Waku.init(conf).valueOr:
error "Waku initialization failed", error = error
Expand Down
2 changes: 1 addition & 1 deletion tests/factory/test_node_factory.nim
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ suite "Node Factory":
node.wakuArchive.isNil()
node.wakuStore.isNil()
node.wakuFilter.isNil()
not node.wakuStoreClient.isNil()
node.wakuStoreClient.isNil()
not node.rendezvous.isNil()

test "Set up a node with Store enabled":
Expand Down
4 changes: 2 additions & 2 deletions tests/node/test_wakunode_filter.nim
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ suite "Waku Filter - End to End":
clientClone = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(23451))
# Used for testing client restarts

await allFutures(server.start(), client.start())

await server.mountFilter()
await client.mountFilterClient()

await allFutures(server.start(), client.start())

client.wakuFilterClient.registerPushHandler(messagePushHandler)
serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo()
clientPeerId = client.peerInfo.toRemotePeerInfo().peerId
Expand Down
5 changes: 2 additions & 3 deletions tests/node/test_wakunode_lightpush.nim
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,12 @@ suite "Waku Lightpush - End To End":
server = newTestWakuNode(serverKey, ValidIpAddress.init("0.0.0.0"), Port(0))
client = newTestWakuNode(clientKey, ValidIpAddress.init("0.0.0.0"), Port(0))

await allFutures(server.start(), client.start())
await server.start()

await server.mountRelay()
await server.mountLightpush() # without rln-relay
client.mountLightpushClient()

await allFutures(server.start(), client.start())

serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo()
pubsubTopic = DefaultPubsubTopic
contentTopic = DefaultContentTopic
Expand Down
24 changes: 14 additions & 10 deletions tests/node/test_wakunode_peer_exchange.nim
Original file line number Diff line number Diff line change
Expand Up @@ -67,29 +67,31 @@ suite "Waku Peer Exchange":

suite "fetchPeerExchangePeers":
var node2 {.threadvar.}: WakuNode
var node3 {.threadvar.}: WakuNode

asyncSetup:
# node and node2 have Peer Exchange mounted, node3 doesn't
node = newTestWakuNode(generateSecp256k1Key(), bindIp, bindPort)
node2 = newTestWakuNode(generateSecp256k1Key(), bindIp, bindPort)
node3 = newTestWakuNode(generateSecp256k1Key(), bindIp, bindPort)

await allFutures(node.start(), node2.start())
await allFutures([node.mountPeerExchange(), node2.mountPeerExchange()])
await allFutures(node.start(), node2.start(), node3.start())

asyncTeardown:
await allFutures(node.stop(), node2.stop())

asyncTest "Node fetches without mounting peer exchange":
# When a node, without peer exchange mounted, fetches peers
let res = await node.fetchPeerExchangePeers(1)
let res = await node3.fetchPeerExchangePeers(1)

# Then no peers are fetched
check:
node.peerManager.peerStore.peers.len == 0
node3.peerManager.peerStore.peers.len == 0
res.error == "PeerExchange is not mounted"

asyncTest "Node fetches with mounted peer exchange, but no peers":
# Given a node with peer exchange mounted
await node.mountPeerExchange()

# When a node fetches peers
let res = await node.fetchPeerExchangePeers(1)
check res.error == "Peer exchange failure: peer_not_found_failure"
Expand All @@ -99,7 +101,6 @@ suite "Waku Peer Exchange":

asyncTest "Node succesfully exchanges px peers with faked discv5":
# Given both nodes mount peer exchange
await allFutures([node.mountPeerExchange(), node2.mountPeerExchange()])
check node.peerManager.peerStore.peers.len == 0

# Mock that we discovered a node (to avoid running discv5)
Expand Down Expand Up @@ -254,6 +255,13 @@ suite "Waku Peer Exchange with discv5":
let disc2 =
WakuDiscoveryV5.new(node2.rng, conf2, some(node2.enr), some(node2.peerManager))

# Mount peer exchange
await node1.mountPeerExchange()
await node3.mountPeerExchange()

# Mount relay in order to accept connections
await node2.mountRelay()

await allFutures(node1.start(), node2.start(), node3.start())
let resultDisc1StartRes = await disc1.start()
assert resultDisc1StartRes.isOk(), resultDisc1StartRes.error
Expand All @@ -272,10 +280,6 @@ suite "Waku Peer Exchange with discv5":
await node1.peerManager.connectRelay(node2.switch.peerInfo.toRemotePeerInfo())
)

# Mount peer exchange
await node1.mountPeerExchange()
await node3.mountPeerExchange()

let dialResponse =
await node3.dialForPeerExchange(node1.switch.peerInfo.toRemotePeerInfo())

Expand Down
29 changes: 13 additions & 16 deletions tests/node/test_wakunode_peer_manager.nim
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import
./peer_manager/peer_store/utils,
./utils

const DEFAULT_PROTOCOLS: seq[string] =
@["/ipfs/id/1.0.0", "/libp2p/autonat/1.0.0", "/libp2p/circuit/relay/0.2.0/hop"]

let
listenIp = ValidIpAddress.init("0.0.0.0")
listenPort = Port(0)
Expand Down Expand Up @@ -302,7 +299,7 @@ suite "Peer Manager":
# Then the stored protocols should be the default (libp2p) ones
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols == DEFAULT_PROTOCOLS
clientPeerStore.get(serverPeerId).protocols == DefaultSwitchProtocols

asyncTest "Peer Protocol Support Verification (Before Connection)":
# Given the server has mounted some Waku protocols
Expand All @@ -316,7 +313,7 @@ suite "Peer Manager":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec, WakuFilterSubscribeCodec]
DefaultSwitchProtocols & @[WakuRelayCodec, WakuFilterSubscribeCodec]

asyncTest "Service-Specific Peer Addition":
# Given a server mounts some Waku protocols
Expand All @@ -342,10 +339,10 @@ suite "Peer Manager":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuFilterSubscribeCodec]
DefaultSwitchProtocols & @[WakuFilterSubscribeCodec]
clientPeerStore.peerExists(server2PeerId)
clientPeerStore.get(server2PeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec]
DefaultSwitchProtocols & @[WakuRelayCodec]

# Cleanup
await server2.stop()
Expand All @@ -367,7 +364,7 @@ suite "Peer Manager":
chainedComparison(
clientPeerStore[ProtoBook][serverPeerId],
serverRemotePeerInfo.protocols,
DEFAULT_PROTOCOLS,
DefaultSwitchProtocols,
)
chainedComparison(
clientPeerStore[AgentBook][serverPeerId], # FIXME: Not assigned
Expand Down Expand Up @@ -433,7 +430,7 @@ suite "Peer Manager":
chainedComparison(
clientPeerStore[ProtoBook][serverPeerId],
serverRemotePeerInfo.protocols,
DEFAULT_PROTOCOLS,
DefaultSwitchProtocols,
)
chainedComparison(
clientPeerStore[AgentBook][serverPeerId], # FIXME: Not assigned
Expand Down Expand Up @@ -484,7 +481,7 @@ suite "Peer Manager":
chainedComparison(
clientPeerStore[ProtoBook][server2PeerId],
server2RemotePeerInfo.protocols,
DEFAULT_PROTOCOLS,
DefaultSwitchProtocols,
)
chainedComparison(
clientPeerStore[AgentBook][server2PeerId], # FIXME: Not assigned
Expand Down Expand Up @@ -833,7 +830,7 @@ suite "Mount Order":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec]
DefaultSwitchProtocols & @[WakuRelayCodec]

# Cleanup
await server.stop()
Expand All @@ -857,7 +854,7 @@ suite "Mount Order":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec]
DefaultSwitchProtocols & @[WakuRelayCodec]

# Cleanup
await server.stop()
Expand All @@ -881,7 +878,7 @@ suite "Mount Order":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec]
DefaultSwitchProtocols & @[WakuRelayCodec]

# Cleanup
await server.stop()
Expand All @@ -905,7 +902,7 @@ suite "Mount Order":
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols ==
DEFAULT_PROTOCOLS & @[WakuRelayCodec]
DefaultSwitchProtocols & @[WakuRelayCodec]

# Cleanup
await server.stop()
Expand All @@ -928,7 +925,7 @@ suite "Mount Order":
# Then the peer store should contain the peer but not the mounted protocol
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols == DEFAULT_PROTOCOLS
clientPeerStore.get(serverPeerId).protocols == DefaultSwitchProtocols

# Cleanup
await server.stop()
Expand All @@ -951,7 +948,7 @@ suite "Mount Order":
# Then the peer store should contain the peer but not the mounted protocol
check:
clientPeerStore.peerExists(serverPeerId)
clientPeerStore.get(serverPeerId).protocols == DEFAULT_PROTOCOLS
clientPeerStore.get(serverPeerId).protocols == DefaultSwitchProtocols

# Cleanup
await server.stop()
28 changes: 14 additions & 14 deletions tests/waku_store/test_wakunode_store.nim
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore()

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Given
let req =
StoreQueryRequest(includeData: true, contentTopics: @[DefaultContentTopic])
Expand All @@ -109,15 +109,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore()

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Given
let req = StoreQueryRequest(
includeData: true,
Expand Down Expand Up @@ -165,15 +165,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore()

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Given
let req = StoreQueryRequest(
includeData: true,
Expand Down Expand Up @@ -225,8 +225,6 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start(), filterSource.start())

waitFor filterSource.mountFilter()
let driver = newSqliteArchiveDriver()

Expand All @@ -237,6 +235,8 @@ procSuite "WakuNode - Store":
waitFor server.mountFilterClient()
client.mountStoreClient()

waitFor allFutures(client.start(), server.start(), filterSource.start())

## Given
let message = fakeWakuMessage()
let hash = computeMessageHash(DefaultPubSubTopic, message)
Expand Down Expand Up @@ -297,15 +297,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore()

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Forcing a bad cursor with empty digest data
var cursor: WakuMessageHash = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Expand Down Expand Up @@ -340,15 +340,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore((4, 500.millis))

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Given
let req =
StoreQueryRequest(includeData: true, contentTopics: @[DefaultContentTopic])
Expand Down Expand Up @@ -384,15 +384,15 @@ procSuite "WakuNode - Store":
clientKey = generateSecp256k1Key()
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))

waitFor allFutures(client.start(), server.start())

let mountArchiveRes = server.mountArchive(archiveA)
assert mountArchiveRes.isOk(), mountArchiveRes.error

waitFor server.mountStore((3, 500.millis))

client.mountStoreClient()

waitFor allFutures(client.start(), server.start())

## Given
let req =
StoreQueryRequest(includeData: true, contentTopics: @[DefaultContentTopic])
Expand Down
Loading
Loading