Add server pause/resume test.

This commit is contained in:
cheatfate 2018-05-23 14:03:39 +03:00
parent 4f70cb3515
commit 0853b6a216
1 changed files with 60 additions and 0 deletions

60
tests/teststream2.nim Normal file
View File

@ -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