fix: ensure chan and int counters in tests

This commit is contained in:
shash256 2025-07-11 00:27:40 +05:30
parent 261d9a3a9c
commit 68a62bd62c

View File

@ -591,54 +591,82 @@ suite "Multi-Channel ReliabilityManager Tests":
msgId1 notin history2 msgId1 notin history2
msgId2 notin history1 msgId2 notin history1
# test "multi-channel callbacks": test "multi-channel callbacks":
# var readyMessages: seq[(SdsMessageID, SdsChannelID)] = @[] var readyMessageCount = 0
# var sentMessages: seq[(SdsMessageID, SdsChannelID)] = @[] var sentMessageCount = 0
# var missingDeps: seq[(SdsMessageID, seq[SdsMessageID], SdsChannelID)] = @[] var missingDepsCount = 0
# rm.setCallbacks( rm.setCallbacks(
# proc(messageId: SdsMessageID, channelId: SdsChannelID) {.gcsafe.} = proc(messageId: SdsMessageID, channelId: SdsChannelID) {.gcsafe.} =
# readyMessages.add((messageId, channelId)), readyMessageCount += 1,
# proc(messageId: SdsMessageID, channelId: SdsChannelID) {.gcsafe.} = proc(messageId: SdsMessageID, channelId: SdsChannelID) {.gcsafe.} =
# sentMessages.add((messageId, channelId)), sentMessageCount += 1,
# proc(messageId: SdsMessageID, deps: seq[SdsMessageID], channelId: SdsChannelID) {.gcsafe.} = proc(messageId: SdsMessageID, deps: seq[SdsMessageID], channelId: SdsChannelID) {.gcsafe.} =
# missingDeps.add((messageId, deps, channelId)) missingDepsCount += 1
# ) )
# let channel1 = "callback-channel-1" let channel1 = "callback-channel-1"
# let channel2 = "callback-channel-2" let channel2 = "callback-channel-2"
# # Create messages in different channels # Send messages from both channels
# let msg1 = @[byte(1)] let msg1 = @[byte(1)]
# let msgId1 = "callback-msg1" let msgId1 = "callback-msg1"
# let wrapped1 = rm.wrapOutgoingMessage(msg1, msgId1, channel1) let wrapped1 = rm.wrapOutgoingMessage(msg1, msgId1, channel1)
# check wrapped1.isOk() check wrapped1.isOk()
# let msg2 = @[byte(2)] let msg2 = @[byte(2)]
# let msgId2 = "callback-msg2" let msgId2 = "callback-msg2"
# let wrapped2 = rm.wrapOutgoingMessage(msg2, msgId2, channel2) let wrapped2 = rm.wrapOutgoingMessage(msg2, msgId2, channel2)
# check wrapped2.isOk() check wrapped2.isOk()
# # Process messages - should trigger callbacks with correct channel IDs # Create acknowledgment messages that include our message IDs in causal history
# discard rm.unwrapReceivedMessage(wrapped1.get()) # to trigger sent callbacks
# discard rm.unwrapReceivedMessage(wrapped2.get()) let ackMsg1 = SdsMessage(
messageId: "ack1",
lamportTimestamp: rm.channels[channel1].lamportTimestamp + 1,
causalHistory: @[msgId1], # Acknowledge msg1
channelId: channel1,
content: @[byte(100)],
bloomFilter: @[],
)
# check: let ackMsg2 = SdsMessage(
# readyMessages.len == 2 messageId: "ack2",
# (msgId1, channel1) in readyMessages lamportTimestamp: rm.channels[channel2].lamportTimestamp + 1,
# (msgId2, channel2) in readyMessages causalHistory: @[msgId2], # Acknowledge msg2
channelId: channel2,
content: @[byte(101)],
bloomFilter: @[],
)
# test "channel-specific dependency management": let serializedAck1 = serializeMessage(ackMsg1)
# let channel1 = "dep-channel-1" let serializedAck2 = serializeMessage(ackMsg2)
# let depIds = @["dep1", "dep2", "dep3"] check:
serializedAck1.isOk()
serializedAck2.isOk()
# # Mark dependencies as met for specific channel # Process acknowledgment messages - should trigger callbacks
# check rm.markDependenciesMet(depIds, channel1).isOk() discard rm.unwrapReceivedMessage(serializedAck1.get())
discard rm.unwrapReceivedMessage(serializedAck2.get())
# # Dependencies should only affect the specified channel check:
# let channel2 = "dep-channel-2" readyMessageCount == 2 # Both ack messages should trigger ready callbacks
# check rm.ensureChannel(channel2).isOk() sentMessageCount == 2 # Both original messages should be marked as sent
missingDepsCount == 0 # No missing dependencies
# # Dependencies in channel1 should not affect channel2 test "channel-specific dependency management":
# check rm.channels[channel1].bloomFilter.contains("dep1") let channel1 = "dep-channel-1"
# check not rm.channels[channel2].bloomFilter.contains("dep1") let channel2 = "dep-channel-2"
let depIds = @["dep1", "dep2", "dep3"]
# Ensure both channels exist first
check rm.ensureChannel(channel1).isOk()
check rm.ensureChannel(channel2).isOk()
# Mark dependencies as met for specific channel
check rm.markDependenciesMet(depIds, channel1).isOk()
# Dependencies should only affect the specified channel
# Dependencies in channel1 should not affect channel2
check rm.channels[channel1].bloomFilter.contains("dep1")
check not rm.channels[channel2].bloomFilter.contains("dep1")