Add server pause/resume test.
This commit is contained in:
parent
4f70cb3515
commit
0853b6a216
|
@ -0,0 +1,60 @@
|
||||||
|
# Asyncdispatch2 Test Suite
|
||||||
|
# (c) Copyright 2018
|
||||||
|
# Status Research & Development GmbH
|
||||||
|
#
|
||||||
|
# Licensed under either of
|
||||||
|
# Apache License, version 2.0, (LICENSE-APACHEv2)
|
||||||
|
# MIT license (LICENSE-MIT)
|
||||||
|
|
||||||
|
import strutils, unittest
|
||||||
|
import ../asyncdispatch2, ../asyncdispatch2/timer
|
||||||
|
|
||||||
|
const TimeoutPeriod = 2000
|
||||||
|
|
||||||
|
proc serveClient1(server: StreamServer,
|
||||||
|
transp: StreamTransport, udata: pointer) {.async.} =
|
||||||
|
var data = await transp.readLine()
|
||||||
|
if len(data) == 0:
|
||||||
|
doAssert(transp.atEof())
|
||||||
|
if data == "PAUSE":
|
||||||
|
server.pause()
|
||||||
|
data = "DONE\r\n"
|
||||||
|
var res = await transp.write(cast[pointer](addr data[0]), len(data))
|
||||||
|
doAssert(res == len(data))
|
||||||
|
await sleepAsync(TimeoutPeriod)
|
||||||
|
server.start()
|
||||||
|
elif data == "CHECK":
|
||||||
|
data = "CONFIRM\r\n"
|
||||||
|
var res = await transp.write(cast[pointer](addr data[0]), len(data))
|
||||||
|
doAssert(res == len(data))
|
||||||
|
transp.close()
|
||||||
|
|
||||||
|
proc swarmWorker1(address: TransportAddress): Future[int] {.async.} =
|
||||||
|
var transp1 = await connect(address)
|
||||||
|
var data = "PAUSE\r\n"
|
||||||
|
var res = await transp1.write(cast[pointer](addr data[0]), len(data))
|
||||||
|
doAssert(res == len(data))
|
||||||
|
var answer = await transp1.readLine()
|
||||||
|
doAssert(answer == "DONE")
|
||||||
|
var st = fastEpochTime()
|
||||||
|
var transp2 = await connect(address)
|
||||||
|
data = "CHECK\r\n"
|
||||||
|
res = await transp2.write(cast[pointer](addr data[0]), len(data))
|
||||||
|
doAssert(res == len(data))
|
||||||
|
var confirm = await transp2.readLine()
|
||||||
|
doAssert(confirm == "CONFIRM")
|
||||||
|
var et = fastEpochTime()
|
||||||
|
result = int(et - st)
|
||||||
|
|
||||||
|
proc test1(): Future[int] {.async.} =
|
||||||
|
var ta = strAddress("127.0.0.1:31354")
|
||||||
|
var server = createStreamServer(ta, {ReuseAddr}, serveClient1)
|
||||||
|
server.start()
|
||||||
|
result = await swarmWorker1(ta)
|
||||||
|
server.stop()
|
||||||
|
server.close()
|
||||||
|
|
||||||
|
when isMainModule:
|
||||||
|
suite "Additional Stream Transport test suite":
|
||||||
|
test "Server pause/resume test":
|
||||||
|
check waitFor(test1()) >= TimeoutPeriod
|
Loading…
Reference in New Issue