mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-05-09 16:29:45 +00:00
Removing duplicates of multiaddresses for Enr. Safe building Enr Record. Co-authored-by: Copilot <copilot@github.com>
120 lines
3.2 KiB
Nim
120 lines
3.2 KiB
Nim
{.used.}
|
|
|
|
import
|
|
std/[options, sequtils],
|
|
testutils/unittests,
|
|
chronos,
|
|
libp2p/multiaddress,
|
|
libp2p/protocols/connectivity/relay/relay
|
|
import eth/p2p/discoveryv5/enr
|
|
|
|
import
|
|
../testlib/wakunode,
|
|
waku/waku_node,
|
|
waku/waku_enr,
|
|
waku/factory/node_factory,
|
|
waku/factory/internal_config,
|
|
waku/factory/conf_builder/conf_builder,
|
|
waku/factory/conf_builder/web_socket_conf_builder
|
|
|
|
suite "Node Factory":
|
|
asynctest "Set up a node based on default configurations":
|
|
let conf = defaultTestWakuConf()
|
|
|
|
let node = (await setupNode(conf, relay = Relay.new())).valueOr:
|
|
raiseAssert error
|
|
|
|
check:
|
|
not node.isNil()
|
|
node.wakuArchive.isNil()
|
|
node.wakuStore.isNil()
|
|
node.wakuFilter.isNil()
|
|
not node.wakuStoreClient.isNil()
|
|
not node.wakuRendezvous.isNil()
|
|
|
|
asynctest "Set up a node with Store enabled":
|
|
var confBuilder = defaultTestWakuConfBuilder()
|
|
confBuilder.storeServiceConf.withEnabled(true)
|
|
confBuilder.storeServiceConf.withDbUrl("sqlite://store.sqlite3")
|
|
let conf = confBuilder.build().value
|
|
|
|
let node = (await setupNode(conf, relay = Relay.new())).valueOr:
|
|
raiseAssert error
|
|
|
|
check:
|
|
not node.isNil()
|
|
not node.wakuStore.isNil()
|
|
not node.wakuArchive.isNil()
|
|
|
|
test "ENR configuration trims multiaddrs until record fits":
|
|
var conf = defaultTestWakuConf()
|
|
let bindIp = conf.endpointConf.p2pListenAddress
|
|
let bindPort = Port(30303)
|
|
|
|
let oversizedMultiaddrs = (0 .. 11).mapIt(
|
|
MultiAddress
|
|
.init(
|
|
"/dns4/very-long-logical-hostname-" & $it &
|
|
".example.logos.dev.status.im/tcp/30303/wss"
|
|
)
|
|
.get()
|
|
)
|
|
|
|
let netConfig = NetConfig.init(
|
|
clusterId = conf.clusterId,
|
|
bindIp = bindIp,
|
|
bindPort = bindPort,
|
|
extMultiAddrs = oversizedMultiaddrs,
|
|
extMultiAddrsOnly = true,
|
|
wakuFlags = some(conf.wakuFlags),
|
|
).valueOr:
|
|
raiseAssert error
|
|
|
|
let record = enrConfiguration(conf, netConfig).valueOr:
|
|
raiseAssert error
|
|
|
|
let typedRecord = record.toTyped()
|
|
require typedRecord.isOk()
|
|
|
|
let multiaddrsOpt = typedRecord.value.multiaddrs
|
|
require multiaddrsOpt.isSome()
|
|
|
|
let retainedMultiaddrs = multiaddrsOpt.get()
|
|
check:
|
|
retainedMultiaddrs.len < oversizedMultiaddrs.len
|
|
retainedMultiaddrs.len > 0
|
|
retainedMultiaddrs == oversizedMultiaddrs[0 ..< retainedMultiaddrs.len]
|
|
|
|
asynctest "Set up a node with Filter enabled":
|
|
var confBuilder = defaultTestWakuConfBuilder()
|
|
confBuilder.filterServiceConf.withEnabled(true)
|
|
let conf = confBuilder.build().value
|
|
|
|
let node = (await setupNode(conf, relay = Relay.new())).valueOr:
|
|
raiseAssert error
|
|
|
|
check:
|
|
not node.isNil()
|
|
not node.wakuFilter.isNil()
|
|
echo "TEST END"
|
|
|
|
asynctest "Start a node based on default test configuration":
|
|
let conf = defaultTestWakuConf()
|
|
|
|
let node = (await setupNode(conf, relay = Relay.new())).valueOr:
|
|
raiseAssert error
|
|
|
|
assert not node.isNil(), "Node can't be nil"
|
|
|
|
let startRes = catch:
|
|
(await startNode(node, conf))
|
|
|
|
assert not startRes.isErr(), "Exception starting node"
|
|
assert startRes.get().isOk(), "Error starting node " & startRes.get().error
|
|
|
|
check:
|
|
node.started == true
|
|
|
|
## Cleanup
|
|
await node.stop()
|