diff --git a/logos_delivery/waku/factory/waku_state_info.nim b/logos_delivery/waku/factory/waku_state_info.nim index e608d5dd2..02db6eab1 100644 --- a/logos_delivery/waku/factory/waku_state_info.nim +++ b/logos_delivery/waku/factory/waku_state_info.nim @@ -7,6 +7,7 @@ import std/[tables, sequtils, strutils] import metrics, eth/p2p/discoveryv5/enr, libp2p/peerid, stew/byteutils import logos_delivery/waku/[waku_node, net/bound_ports] +import logos_delivery/waku/factory/waku_conf type NodeInfoId* {.pure.} = enum @@ -17,9 +18,11 @@ type MyPeerId MyBoundPorts MyMixPubKey + MaxMessageSize WakuStateInfo* {.requiresInit.} = object node: WakuNode + conf: WakuConf proc getAllPossibleInfoItemIds*(self: WakuStateInfo): seq[NodeInfoId] = ## Returns all possible options that can be queried to learn about the node's information. @@ -52,8 +55,11 @@ proc getNodeInfoItem*(self: WakuStateInfo, infoItemId: NodeInfoId): string = if self.node.wakuMix.isNil(): return "" return self.node.wakuMix.pubKey.to0xHex() + of NodeInfoId.MaxMessageSize: + ## Configured max message size (in bytes) for this node. + return $self.conf.maxMessageSizeBytes else: return "unknown info item id" -proc init*(T: typedesc[WakuStateInfo], node: WakuNode): T = - return WakuStateInfo(node: node) +proc init*(T: typedesc[WakuStateInfo], node: WakuNode, conf: WakuConf): T = + return WakuStateInfo(node: node, conf: conf) diff --git a/logos_delivery/waku/waku.nim b/logos_delivery/waku/waku.nim index 29290483f..f8b8795d8 100644 --- a/logos_delivery/waku/waku.nim +++ b/logos_delivery/waku/waku.nim @@ -235,7 +235,7 @@ proc new*( return err("Failed setting up app callbacks: " & $error) var waku = Waku( - stateInfo: WakuStateInfo.init(node), + stateInfo: WakuStateInfo.init(node, wakuConf), conf: wakuConf, rng: rng, key: wakuConf.nodeKey, diff --git a/tests/node/test_wakunode_health_monitor.nim b/tests/node/test_wakunode_health_monitor.nim index af90a9be0..a67e4642a 100644 --- a/tests/node/test_wakunode_health_monitor.nim +++ b/tests/node/test_wakunode_health_monitor.nim @@ -235,7 +235,9 @@ suite "Health Monitor - events": # `waku.node` is read on the messaging path; `conf`/`stateInfo` are supplied # solely to satisfy Waku's {.requiresInit.} fields. let waku = Waku( - node: nodeA, conf: defaultTestWakuConf(), stateInfo: WakuStateInfo.init(nodeA) + node: nodeA, + conf: defaultTestWakuConf(), + stateInfo: WakuStateInfo.init(nodeA, defaultTestWakuConf()), ) let ds = MessagingClient .new(MessagingClientConf(reliabilityEnabled: some(false)), waku) @@ -346,7 +348,9 @@ suite "Health Monitor - events": # `waku.node` is read on the messaging path; `conf`/`stateInfo` are supplied # solely to satisfy Waku's {.requiresInit.} fields. let waku = Waku( - node: nodeA, conf: defaultTestWakuConf(), stateInfo: WakuStateInfo.init(nodeA) + node: nodeA, + conf: defaultTestWakuConf(), + stateInfo: WakuStateInfo.init(nodeA, defaultTestWakuConf()), ) let ds = MessagingClient .new(MessagingClientConf(reliabilityEnabled: some(false)), waku) diff --git a/tests/wakunode2/test_app.nim b/tests/wakunode2/test_app.nim index 879dcd7b5..1415ac41b 100644 --- a/tests/wakunode2/test_app.nim +++ b/tests/wakunode2/test_app.nim @@ -27,6 +27,20 @@ suite "Wakunode2 - Waku": check: version == git_version + test "max message size should be reported from node info": + ## Given + let conf = defaultTestWakuConf() + + let waku = (waitFor Waku.new(conf)).valueOr: + raiseAssert error + + ## When + let maxMessageSize = waku.stateInfo.getNodeInfoItem(NodeInfoId.MaxMessageSize) + + ## Then + check: + maxMessageSize == $conf.maxMessageSizeBytes + suite "Wakunode2 - Waku initialization": test "peer persistence setup should be successfully mounted": ## Given