From 21d9c6fe39653d011d0e8a18a7cf9521213bfe99 Mon Sep 17 00:00:00 2001 From: jm-clius Date: Fri, 14 Jan 2022 09:51:22 +0000 Subject: [PATCH] deploy: 21c23d420d40eb0a67894603b56dc1669b536c37 --- tests/v2/test_enr_utils.nim | 12 ++--- tests/v2/test_jsonrpc_waku.nim | 92 ++++++++++++++++++-------------- tests/v2/test_waku_filter.nim | 39 +++++++------- tests/v2/test_waku_lightpush.nim | 4 +- tests/v2/test_waku_store.nim | 46 ++++++++-------- waku/v1/node/quicksim.nim | 6 +-- waku/v2/node/quicksim2.nim | 2 +- waku/v2/node/wakunode2.nim | 3 +- 8 files changed, 109 insertions(+), 95 deletions(-) diff --git a/tests/v2/test_enr_utils.nim b/tests/v2/test_enr_utils.nim index dba51bc10..9ab9010c2 100644 --- a/tests/v2/test_enr_utils.nim +++ b/tests/v2/test_enr_utils.nim @@ -44,7 +44,7 @@ procSuite "ENR utils": let enrIp = ValidIpAddress.init("127.0.0.1") enrTcpPort, enrUdpPort = Port(60000) - enrKey = PrivateKey.random(Secp256k1, rng[])[] + enrKey = wakuenr.crypto.PrivateKey.random(Secp256k1, rng[])[] wakuFlags = initWakuFlags(false, true, false, true) multiaddrs = @[MultiAddress.init("/ip4/127.0.0.1/tcp/442/ws")[], MultiAddress.init("/ip4/127.0.0.1/tcp/443/wss")[]] @@ -65,8 +65,8 @@ procSuite "ENR utils": # Check Waku ENR fields let - decodedFlags = record.get(WAKU_ENR_FIELD, seq[byte]) - decodedAddrs = record.get(MULTIADDR_ENR_FIELD, seq[byte]).toMultiAddresses() + decodedFlags = record.get(WAKU_ENR_FIELD, seq[byte])[] + decodedAddrs = record.get(MULTIADDR_ENR_FIELD, seq[byte])[].toMultiAddresses() check: decodedFlags == @[wakuFlags.byte] decodedAddrs.contains(MultiAddress.init("/ip4/127.0.0.1/tcp/442/ws")[]) @@ -77,7 +77,7 @@ procSuite "ENR utils": let enrIp = ValidIpAddress.init("127.0.0.1") enrTcpPort, enrUdpPort = Port(60000) - enrKey = PrivateKey.random(Secp256k1, rng[])[] + enrKey = wakuenr.crypto.PrivateKey.random(Secp256k1, rng[])[] multiaddrs = @[MultiAddress.init("/ip4/127.0.0.1/tcp/443/wss/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr31iDQpSN5Qa882BCjjwgrD")[]] let @@ -88,7 +88,7 @@ procSuite "ENR utils": # Check Waku ENR fields let - decodedAddrs = record.get(MULTIADDR_ENR_FIELD, seq[byte]).toMultiAddresses() + decodedAddrs = record.get(MULTIADDR_ENR_FIELD, seq[byte])[].toMultiAddresses() check decodedAddrs.contains(MultiAddress.init("/ip4/127.0.0.1/tcp/443/wss")[]) # Peer Id has been stripped @@ -121,7 +121,7 @@ procSuite "ENR utils": # Check Waku ENR fields let - decodedAddrs = enrRecord.get(MULTIADDR_ENR_FIELD, seq[byte]).toMultiAddresses() + decodedAddrs = enrRecord.get(MULTIADDR_ENR_FIELD, seq[byte])[].toMultiAddresses() for knownMultiaddr in knownMultiaddrs: check decodedAddrs.contains(knownMultiaddr) diff --git a/tests/v2/test_jsonrpc_waku.nim b/tests/v2/test_jsonrpc_waku.nim index 039078060..447299b4c 100644 --- a/tests/v2/test_jsonrpc_waku.nim +++ b/tests/v2/test_jsonrpc_waku.nim @@ -2,6 +2,7 @@ import std/[options, sets, tables, os, strutils, sequtils, times], + chronicles, testutils/unittests, stew/shims/net as stewNet, json_rpc/[rpcserver, rpcclient], eth/[keys, rlp], eth/common/eth_types, @@ -58,15 +59,16 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) let response = await client.get_waku_v2_debug_v1_info() check: response.listenAddresses == @[$node.switch.peerInfo.addrs[^1] & "/p2p/" & $node.switch.peerInfo.peerId] - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Relay API: publish and subscribe/unsubscribe": @@ -84,7 +86,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) check: # At this stage the node is only subscribed to the default topic @@ -114,8 +116,9 @@ procSuite "Waku v2 JSON-RPC API": PubSub(node.wakuRelay).topics.len == 1 response == true - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Relay API: get latest messages": @@ -156,7 +159,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) # First see if we can retrieve messages published on the default topic (node is already subscribed) await node2.publish(defaultTopic, message1) @@ -202,8 +205,9 @@ procSuite "Waku v2 JSON-RPC API": check: messages.len == 0 - server.stop() - server.close() + await server.stop() + await server.closeWait() + await node1.stop() await node2.stop() await node3.stop() @@ -230,7 +234,7 @@ procSuite "Waku v2 JSON-RPC API": node.mountStore(persistMessages = true) var listenSwitch = newStandardSwitch(some(key)) - discard waitFor listenSwitch.start() + waitFor listenSwitch.start() node.wakuStore.setPeer(listenSwitch.peerInfo.toRemotePeerInfo()) @@ -254,15 +258,16 @@ procSuite "Waku v2 JSON-RPC API": waitFor node.wakuStore.handleMessage(defaultTopic, wakuMsg) let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) let response = await client.get_waku_v2_store_v1_messages(some(defaultTopic), some(@[HistoryContentFilter(contentTopic: defaultContentTopic)]), some(0.float64), some(9.float64), some(StorePagingOptions())) check: response.messages.len() == 8 response.pagingOptions.isSome() - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Filter API: subscribe/unsubscribe": @@ -282,7 +287,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) check: # Light node has not yet subscribed to any filters @@ -307,8 +312,9 @@ procSuite "Waku v2 JSON-RPC API": node.filters.len() == 0 response == true - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Filter API: get latest messages": @@ -326,7 +332,7 @@ procSuite "Waku v2 JSON-RPC API": node.mountFilter() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) # First ensure subscription exists @@ -384,8 +390,9 @@ procSuite "Waku v2 JSON-RPC API": response[0].payload == @[byte 2] response[maxSize - 1].payload == @[byte (maxSize + 1)] - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Admin API: connect to ad-hoc peers": @@ -419,7 +426,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) # Connect to nodes 2 and 3 using the Admin API let postRes = await client.post_waku_v2_admin_v1_peers(@[constructMultiaddrStr(peerInfo2), @@ -440,8 +447,9 @@ procSuite "Waku v2 JSON-RPC API": getRes.anyIt(it.protocol == WakuRelayCodec and it.multiaddr == constructMultiaddrStr(peerInfo3)) - server.stop() - server.close() + await server.stop() + await server.closeWait() + await allFutures([node1.stop(), node2.stop(), node3.stop()]) asyncTest "Admin API: get managed peer information": @@ -479,7 +487,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) let response = await client.get_waku_v2_admin_v1_peers() @@ -492,8 +500,9 @@ procSuite "Waku v2 JSON-RPC API": response.anyIt(it.protocol == WakuRelayCodec and it.multiaddr == constructMultiaddrStr(peerInfo3)) - server.stop() - server.close() + await server.stop() + await server.closeWait() + await allFutures([node1.stop(), node2.stop(), node3.stop()]) asyncTest "Admin API: get unmanaged peer information": @@ -514,7 +523,7 @@ procSuite "Waku v2 JSON-RPC API": server.start() let client = newRpcHttpClient() - await client.connect("127.0.0.1", rpcPort) + await client.connect("127.0.0.1", rpcPort, false) node.mountFilter() node.mountSwap() @@ -548,8 +557,9 @@ procSuite "Waku v2 JSON-RPC API": # Check store peer (response.filterIt(it.protocol == WakuStoreCodec)[0]).multiaddr == constructMultiaddrStr(storePeer) - server.stop() - server.close() + await server.stop() + await server.closeWait() + waitfor node.stop() asyncTest "Private API: generate asymmetric keys and encrypt/decrypt communication": @@ -595,10 +605,10 @@ procSuite "Waku v2 JSON-RPC API": server3.start() let client1 = newRpcHttpClient() - await client1.connect("127.0.0.1", rpcPort1) + await client1.connect("127.0.0.1", rpcPort1, false) let client3 = newRpcHttpClient() - await client3.connect("127.0.0.1", rpcPort3) + await client3.connect("127.0.0.1", rpcPort3, false) # Let's get a keypair for node3 @@ -634,10 +644,11 @@ procSuite "Waku v2 JSON-RPC API": check: messages.len == 0 - server1.stop() - server1.close() - server3.stop() - server3.close() + await server1.stop() + await server1.closeWait() + await server3.stop() + await server3.closeWait() + await node1.stop() await node2.stop() await node3.stop() @@ -685,10 +696,10 @@ procSuite "Waku v2 JSON-RPC API": server3.start() let client1 = newRpcHttpClient() - await client1.connect("127.0.0.1", rpcPort1) + await client1.connect("127.0.0.1", rpcPort1, false) let client3 = newRpcHttpClient() - await client3.connect("127.0.0.1", rpcPort3) + await client3.connect("127.0.0.1", rpcPort3, false) # Let's get a symkey for node3 @@ -724,10 +735,11 @@ procSuite "Waku v2 JSON-RPC API": check: messages.len == 0 - server1.stop() - server1.close() - server3.stop() - server3.close() + await server1.stop() + await server1.closeWait() + await server3.stop() + await server3.closeWait() + await node1.stop() await node2.stop() await node3.stop() \ No newline at end of file diff --git a/tests/v2/test_waku_filter.nim b/tests/v2/test_waku_filter.nim index 68fb780f9..699c53d10 100644 --- a/tests/v2/test_waku_filter.nim +++ b/tests/v2/test_waku_filter.nim @@ -24,10 +24,10 @@ procSuite "Waku Filter": post = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() var responseRequestIdFuture = newFuture[string]() proc handle(requestId: string, msg: MessagePush) {.gcsafe, closure.} = @@ -69,10 +69,10 @@ procSuite "Waku Filter": post = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() var responseCompletionFuture = newFuture[bool]() proc handle(requestId: string, msg: MessagePush) {.gcsafe, closure.} = @@ -128,7 +128,7 @@ procSuite "Waku Filter": contentTopic = ContentTopic("/waku/2/default-content/proto") var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var responseRequestIdFuture = newFuture[string]() proc handle(requestId: string, msg: MessagePush) {.gcsafe, closure.} = @@ -155,10 +155,10 @@ procSuite "Waku Filter": post = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() var responseCompletionFuture = newFuture[bool]() proc handle(requestId: string, msg: MessagePush) {.gcsafe, closure.} = @@ -213,16 +213,16 @@ procSuite "Waku Filter": const defaultTopic = "/waku/2/default-waku/proto" let - key = PrivateKey.random(ECDSA, rng[]).get() - peer = PeerInfo.new(key) + dialKey = PrivateKey.random(ECDSA, rng[]).get() + listenKey = PrivateKey.random(ECDSA, rng[]).get() contentTopic = ContentTopic("/waku/2/default-content/proto") post = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic) - var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + var dialSwitch = newStandardSwitch(privKey = some(dialKey), addrs = MultiAddress.init("/ip4/127.0.0.1/tcp/65000").tryGet()) + await dialSwitch.start() - var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + var listenSwitch = newStandardSwitch(some(listenKey)) + await listenSwitch.start() var responseCompletionFuture = newFuture[bool]() proc handle(requestId: string, msg: MessagePush) {.gcsafe, closure.} = @@ -258,7 +258,7 @@ procSuite "Waku Filter": responseCompletionFuture = newFuture[bool]() # Stop switch to test unsubscribe - discard dialSwitch.stop() + await dialSwitch.stop() await sleepAsync(1.seconds) @@ -268,8 +268,11 @@ procSuite "Waku Filter": check: proto2.failedPeers.len() == 1 - discard dialSwitch.start() - dialSwitch.mount(proto) + # Start switch with same key as before + var dialSwitch2 = newStandardSwitch(some(dialKey), addrs = MultiAddress.init("/ip4/127.0.0.1/tcp/65000").tryGet()) + await dialSwitch2.start() + dialSwitch2.mount(proto) + #Second failure should remove the subscription await proto2.handleMessage(defaultTopic, post) @@ -280,5 +283,5 @@ procSuite "Waku Filter": check: proto2.failedPeers.len() == 0 - discard dialSwitch.stop() - discard listenSwitch.stop() + await dialSwitch2.stop() + await listenSwitch.stop() diff --git a/tests/v2/test_waku_lightpush.nim b/tests/v2/test_waku_lightpush.nim index 12dc43fc1..fb35832cd 100644 --- a/tests/v2/test_waku_lightpush.nim +++ b/tests/v2/test_waku_lightpush.nim @@ -25,10 +25,10 @@ procSuite "Waku Light Push": post = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() var responseRequestIdFuture = newFuture[string]() var completionFut = newFuture[bool]() diff --git a/tests/v2/test_waku_store.nim b/tests/v2/test_waku_store.nim index 642a4ae11..845d9038e 100644 --- a/tests/v2/test_waku_store.nim +++ b/tests/v2/test_waku_store.nim @@ -26,10 +26,10 @@ procSuite "Waku Store": msg2 = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: ContentTopic("2")) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -66,10 +66,10 @@ procSuite "Waku Store": msg3 = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: topic3) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -109,10 +109,10 @@ procSuite "Waku Store": msg3 = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: contentTopic3) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -153,10 +153,10 @@ procSuite "Waku Store": msg3 = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: defaultContentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -194,10 +194,10 @@ procSuite "Waku Store": msg3 = WakuMessage(payload: @[byte 7, 8, 9,], contentTopic: defaultContentTopic) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -240,10 +240,10 @@ procSuite "Waku Store": msg2 = WakuMessage(payload: @[byte 1, 2, 3], contentTopic: ContentTopic("2")) var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng(), store) @@ -275,7 +275,7 @@ procSuite "Waku Store": key2 = PrivateKey.random(ECDSA, rng[]).get() var listenSwitch2 = newStandardSwitch(some(key2)) - discard await listenSwitch2.start() + await listenSwitch2.start() proto2.setPeer(listenSwitch2.peerInfo.toRemotePeerInfo()) @@ -310,10 +310,10 @@ procSuite "Waku Store": WakuMessage(payload: @[byte 9],contentTopic: ContentTopic("2"))] var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -359,10 +359,10 @@ procSuite "Waku Store": WakuMessage(payload: @[byte 9],contentTopic: ContentTopic("2"))] var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -406,10 +406,10 @@ procSuite "Waku Store": WakuMessage(payload: @[byte 9], contentTopic: ContentTopic("2"))] var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -547,11 +547,11 @@ procSuite "Waku Store": WakuMessage(payload: @[byte 9],contentTopic: ContentTopic("1"),timestamp: float(9))] var dialSwitch = newStandardSwitch() - discard await dialSwitch.start() + await dialSwitch.start() # to be connected to var listenSwitch = newStandardSwitch(some(key)) - discard await listenSwitch.start() + await listenSwitch.start() let proto = WakuStore.init(PeerManager.new(dialSwitch), crypto.newRng()) @@ -631,7 +631,7 @@ procSuite "Waku Store": asyncTest "resume message history": # starts a new node var dialSwitch2 = newStandardSwitch() - discard await dialSwitch2.start() + await dialSwitch2.start() let proto2 = WakuStore.init(PeerManager.new(dialSwitch2), crypto.newRng()) proto2.setPeer(listenSwitch.peerInfo.toRemotePeerInfo()) @@ -685,7 +685,7 @@ procSuite "Waku Store": # starts a new node var dialSwitch3 = newStandardSwitch() - discard await dialSwitch3.start() + await dialSwitch3.start() let proto3 = WakuStore.init(PeerManager.new(dialSwitch3), crypto.newRng()) let successResult = await proto3.resume(some(@[offListenSwitch.peerInfo.toRemotePeerInfo(), diff --git a/waku/v1/node/quicksim.nim b/waku/v1/node/quicksim.nim index ee1d24039..9de4cd93d 100644 --- a/waku/v1/node/quicksim.nim +++ b/waku/v1/node/quicksim.nim @@ -18,9 +18,9 @@ let lightNode = newRpcHttpClient() lightNode2 = newRpcHttpClient() -waitFor lightNode.connect("localhost", Port(8545)) -waitFor lightNode2.connect("localhost", Port(8546)) -waitFor trafficNode.connect("localhost", Port(8548)) +waitFor lightNode.connect("localhost", Port(8545), false) +waitFor lightNode2.connect("localhost", Port(8546), false) +waitFor trafficNode.connect("localhost", Port(8548), false) proc generateTopics(amount = topicAmount): seq[waku_protocol.Topic] = var topic: waku_protocol.Topic diff --git a/waku/v2/node/quicksim2.nim b/waku/v2/node/quicksim2.nim index 8a84c55d4..327388947 100644 --- a/waku/v2/node/quicksim2.nim +++ b/waku/v2/node/quicksim2.nim @@ -46,7 +46,7 @@ var nodes: seq[RPCHttpClient] for i in 0..