2023-08-17 10:56:08 -03:00
|
|
|
import unittest
|
|
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
import swarmsim/engine/message
|
2023-08-18 16:09:04 -07:00
|
|
|
import swarmsim/engine/eventdrivenengine
|
|
|
|
|
import swarmsim/engine/network
|
|
|
|
|
import swarmsim/engine/peer
|
|
|
|
|
import swarmsim/engine/protocol
|
2023-08-17 10:56:08 -03:00
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
import ../helpers/inbox
|
2023-08-25 15:46:38 -03:00
|
|
|
import ../helpers/types
|
2023-08-17 10:56:08 -03:00
|
|
|
|
|
|
|
|
suite "network":
|
2023-08-29 17:30:08 -03:00
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
test "should dispatch message to the correct peer":
|
|
|
|
|
|
2023-08-17 10:56:08 -03:00
|
|
|
let engine = EventDrivenEngine()
|
|
|
|
|
|
2023-08-25 15:46:38 -03:00
|
|
|
let i1 = Inbox(protocolId: "inbox", messageTypes: @["m"])
|
|
|
|
|
let i2 = Inbox(protocolId: "inbox", messageTypes: @["m"])
|
2023-08-24 13:29:00 -03:00
|
|
|
|
|
|
|
|
let p1 = Peer.new(protocols = @[Protocol i1])
|
|
|
|
|
let p2 = Peer.new(protocols = @[Protocol i2])
|
|
|
|
|
|
2023-08-17 10:56:08 -03:00
|
|
|
let network = Network.new(engine = engine, defaultLinkDelay = 20)
|
|
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
let m1: Message = FreelyTypedMessage(receiver: p1, messageType: "m")
|
|
|
|
|
let m2: Message = FreelyTypedMessage(receiver: p2, messageType: "m")
|
2023-08-17 10:56:08 -03:00
|
|
|
|
|
|
|
|
let message2handle = network.send(m2, linkDelay = uint64(10).some)
|
|
|
|
|
let message1handle = network.send(m1, linkDelay = uint64(5).some)
|
|
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
let noMessages: seq[Message] = @[]
|
|
|
|
|
|
|
|
|
|
check(i1.messages == noMessages)
|
|
|
|
|
check(i2.messages == noMessages)
|
2023-08-17 10:56:08 -03:00
|
|
|
|
|
|
|
|
message1Handle.doAwait()
|
|
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
check(i1.messages == @[m1])
|
|
|
|
|
check(i2.messages == noMessages)
|
2023-08-17 10:56:08 -03:00
|
|
|
|
|
|
|
|
message2Handle.doAwait()
|
|
|
|
|
|
2023-08-24 13:29:00 -03:00
|
|
|
check(i1.messages == @[m1])
|
|
|
|
|
check(i2.messages == @[m2])
|