2024-12-19 17:16:17 +01:00

66 lines
1.8 KiB
Nim

import ./basics
import codexvalidator/network
suite "Network connections":
test "connections to a server can be made":
let server = await NetworkServer.open()
let outgoing = await NetworkConnection.connect(!server.address)
let incoming = await server.accept()
await outgoing.close()
await incoming.close()
await server.close()
test "outgoing connections can fail":
let address = !NetworkAddress.init("127.0.0.1:1011") # port reserved by IANA
expect NetworkError:
discard await NetworkConnection.connect(address)
suite "Network packets":
var server: NetworkServer
setup:
server = await NetworkServer.open()
teardown:
await server.close()
test "packets of bytes can be exchanged over a network connection":
let packet = seq[byte].example
var received: seq[byte]
proc send {.async.} =
let outgoing = await NetworkConnection.connect(!server.address)
await outgoing.sendPacket(packet)
await outgoing.close()
proc receive {.async.} =
let incoming = await server.accept()
received = !await incoming.receivePacket()
await incoming.close()
await allFutures(send(), receive())
check received == packet
test "connection handles multiple packets of different size":
let packets = newSeqWith(100, seq[byte].example)
var received: seq[seq[byte]]
proc send {.async.} =
let outgoing = await NetworkConnection.connect(!server.address)
for packet in packets:
await outgoing.sendPacket(packet)
await outgoing.close()
proc receive {.async.} =
let incoming = await server.accept()
while packet =? await incoming.receivePacket():
received.add(packet)
await incoming.close()
await allFutures(send(), receive())
check received == packets