mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-25 02:15:30 +00:00
Generate and use random topics in waku simulation
This commit is contained in:
parent
ed79c4dfdc
commit
56f46357e6
@ -1,5 +1,5 @@
|
||||
import
|
||||
json_rpc/rpcserver, stew/endians2,
|
||||
json_rpc/rpcserver, stew/endians2, nimcrypto/sysrand,
|
||||
eth/[p2p, async_utils], eth/p2p/rlpx_protocols/waku_protocol
|
||||
|
||||
proc generateTraffic(node: EthereumNode, amount = 100) {.async.} =
|
||||
@ -10,10 +10,22 @@ proc generateTraffic(node: EthereumNode, amount = 100) {.async.} =
|
||||
topic = toBytesLE(i.uint32), payload = payload)
|
||||
await sleepAsync(1.milliseconds)
|
||||
|
||||
proc generateRandomTraffic(node: EthereumNode, amount = 100) {.async.} =
|
||||
var topic: array[4, byte]
|
||||
let payload = @[byte 0]
|
||||
for i in 0..<amount:
|
||||
while randomBytes(topic) != 4:
|
||||
discard
|
||||
discard waku_protocol.postMessage(node, ttl = 10, topic = topic,
|
||||
payload = payload)
|
||||
await sleepAsync(1.milliseconds)
|
||||
|
||||
proc setupWakuSimRPC*(node: EthereumNode, rpcsrv: RpcServer) =
|
||||
|
||||
rpcsrv.rpc("wakusim_generateTraffic") do(amount: int) -> bool:
|
||||
traceAsyncErrors node.generateTraffic(amount)
|
||||
return true
|
||||
|
||||
# TODO: add random traffic generation
|
||||
rpcsrv.rpc("wakusim_generateRandomTraffic") do(amount: int) -> bool:
|
||||
traceAsyncErrors node.generateRandomTraffic(amount)
|
||||
return true
|
||||
|
@ -1,5 +1,5 @@
|
||||
import
|
||||
os, strformat, chronicles, json_rpc/[rpcclient, rpcserver],
|
||||
os, strformat, chronicles, json_rpc/[rpcclient, rpcserver], nimcrypto/sysrand,
|
||||
eth/common as eth_common, eth/keys, eth/p2p/rlpx_protocols/waku_protocol,
|
||||
../nimbus/rpc/[hexstrings, rpc_types, waku],
|
||||
options as what # TODO: Huh?
|
||||
@ -23,24 +23,31 @@ waitFor lightWakuNode.connect("localhost", Port(8546))
|
||||
waitFor lightNode.connect("localhost", Port(8547))
|
||||
waitFor trafficNode.connect("localhost", Port(8549))
|
||||
|
||||
proc generateTopics(amount = 100): seq[waku_protocol.Topic] =
|
||||
var topic: waku_protocol.Topic
|
||||
for i in 0..<amount:
|
||||
if randomBytes(topic) != 4:
|
||||
raise newException(ValueError, "Generation of random topic failed.")
|
||||
result.add(topic)
|
||||
|
||||
let
|
||||
symKey = "0x0000000000000000000000000000000000000000000000000000000000000001"
|
||||
topic = "0x01000000".toTopic()
|
||||
topics = generateTopics()
|
||||
symKeyID = waitFor lightWakuNode.shh_addSymKey(symKey)
|
||||
options = WhisperFilterOptions(symKeyID: some(symKeyID),
|
||||
topics: some(@[topic]))
|
||||
topics: some(topics))
|
||||
filterID = waitFor lightWakuNode.shh_newMessageFilter(options)
|
||||
|
||||
symKeyID2 = waitFor lightNode.shh_addSymKey(symKey)
|
||||
options2 = WhisperFilterOptions(symKeyID: some(symKeyID2),
|
||||
topics: some(@[topic]))
|
||||
topics: some(topics))
|
||||
filterID2 = waitFor lightNode.shh_newMessageFilter(options2)
|
||||
|
||||
symkeyID3 = waitFor trafficNode.shh_addSymKey(symKey)
|
||||
|
||||
var message = WhisperPostMessage(symKeyID: some(symkeyID3),
|
||||
ttl: 30,
|
||||
topic: some(topic),
|
||||
topic: some(topics[0]),
|
||||
payload: "0x45879632".HexDataStr,
|
||||
powTime: 1.0,
|
||||
powTarget: 0.002)
|
||||
@ -55,4 +62,4 @@ while messages.len == 0:
|
||||
info "Received test message", payload = messages[0].payload
|
||||
|
||||
# Generate test traffic on node
|
||||
discard waitFor trafficNode.wakusim_generateTraffic(10_000)
|
||||
discard waitFor trafficNode.wakusim_generateRandomTraffic(10_000)
|
||||
|
@ -1 +1,2 @@
|
||||
proc wakusim_generateTraffic(amount: int): bool
|
||||
proc wakusim_generateRandomTraffic(amount: int): bool
|
||||
|
Loading…
x
Reference in New Issue
Block a user