mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-21 12:09:29 +00:00
74 lines
2.4 KiB
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
|