{.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()