add leaks tests

This commit is contained in:
Dmitriy Ryajov 2020-05-25 08:40:39 -06:00
parent 71640da8f2
commit abbb50ae34
1 changed files with 41 additions and 0 deletions

View File

@ -38,6 +38,47 @@ suite "Switch":
check tracker.isLeaked() == false check tracker.isLeaked() == false
test "e2e use switch dial proto string": test "e2e use switch dial proto string":
proc testSwitch() {.async, gcsafe.} =
let done = newFuture[void]()
proc handle(conn: Connection, proto: string) {.async, gcsafe.} =
try:
let msg = string.fromBytes(await conn.readLp(1024))
check "Hello!" == msg
await conn.writeLp("Hello!")
finally:
await conn.close()
done.complete()
let testProto = new TestProto
testProto.codec = TestCodec
testProto.handler = handle
let switch1 = newStandardSwitch()
switch1.mount(testProto)
let switch2 = newStandardSwitch()
var awaiters: seq[Future[void]]
awaiters.add(await switch1.start())
awaiters.add(await switch2.start())
let conn = await switch2.dial(switch1.peerInfo, TestCodec)
await conn.writeLp("Hello!")
let msg = string.fromBytes(await conn.readLp(1024))
check "Hello!" == msg
await conn.close()
await all(
done.wait(5.seconds), #[if OK won't happen!!]#
switch1.stop(),
switch2.stop(),
)
# this needs to go at end
await all(awaiters)
waitFor(testSwitch())
test "e2e should not leak bufferstreams and connections on channel close":
proc testSwitch() {.async, gcsafe.} = proc testSwitch() {.async, gcsafe.} =
let done = newFuture[void]() let done = newFuture[void]()
proc handle(conn: Connection, proto: string) {.async, gcsafe.} = proc handle(conn: Connection, proto: string) {.async, gcsafe.} =