logos-delivery/tests/api/test_entry_layer.nim

74 lines
2.4 KiB
Nim

{.used.}
import std/[options, net]
import chronos, testutils/unittests
import brokers/broker_context
import logos_delivery
import logos_delivery/api/conf/logos_delivery_conf
import tools/confutils/cli_args
import ../testlib/testasync
## Validates the layer-selection invariant of `LogosDelivery.new(WakuNodeConf)`:
## `messagingClient` (and `reliableChannelManager`) are instantiated only for the
## entry layers that call for them.
##
## kernel -> waku only
## messaging -> waku + messagingClient
## channels -> waku + messagingClient + reliableChannelManager
proc nodeConf(entryLayer: EntryLayer): WakuNodeConf =
var conf = defaultWakuNodeConf().valueOr:
raiseAssert error
conf.entryLayer = entryLayer
conf.mode = LogosDeliveryMode.Core
conf.listenAddress = parseIpAddress("0.0.0.0")
conf.tcpPort = Port(0)
conf.discv5UdpPort = Port(0)
conf.clusterId = some(3'u16)
conf.numShardsInNetwork = 1
conf.rest = false
return conf
suite "LogosDelivery - entry layer selection":
asyncTest "kernel: waku only, no messaging / channels":
var node: LogosDelivery
lockNewGlobalBrokerContext:
node = (await LogosDelivery.new(nodeConf(EntryLayer.kernel))).valueOr:
raiseAssert error
check:
not node.waku.isNil()
node.messagingClient.isNil()
node.reliableChannelManager.isNil()
node.ensureMessaging().isErr()
node.ensureChannels().isErr()
(await node.stop()).isOkOr:
raiseAssert "stop failed: " & error
asyncTest "messaging: waku + messagingClient, no channels":
var node: LogosDelivery
lockNewGlobalBrokerContext:
node = (await LogosDelivery.new(nodeConf(EntryLayer.messaging))).valueOr:
raiseAssert error
check:
not node.waku.isNil()
not node.messagingClient.isNil()
node.reliableChannelManager.isNil()
node.ensureMessaging().isOk()
node.ensureChannels().isErr()
(await node.stop()).isOkOr:
raiseAssert "stop failed: " & error
asyncTest "channels: full stack":
var node: LogosDelivery
lockNewGlobalBrokerContext:
node = (await LogosDelivery.new(nodeConf(EntryLayer.channels))).valueOr:
raiseAssert error
check:
not node.waku.isNil()
not node.messagingClient.isNil()
not node.reliableChannelManager.isNil()
node.ensureMessaging().isOk()
node.ensureChannels().isOk()
(await node.stop()).isOkOr:
raiseAssert "stop failed: " & error