mirror of
https://github.com/logos-storage/logos-storage-nim-validator.git
synced 2026-01-02 21:43:06 +00:00
66 lines
1.8 KiB
Nim
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
|