diff options
author | Araq <rumpf_a@web.de> | 2012-08-13 18:52:00 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-08-13 18:52:00 +0200 |
commit | adb73ec9ed87a5c5fe1ced35f3440b85bac49d8a (patch) | |
tree | 1cecba68cdfca101900750e8e84d8dc62f520084 /tests/run | |
parent | 8805829d7ff2d3fc6c692cfa4931439d25d1bb6e (diff) | |
parent | 8dd1a5a1818584535edbb3cbf90c599cf4b9eefc (diff) | |
download | Nim-adb73ec9ed87a5c5fe1ced35f3440b85bac49d8a.tar.gz |
Merge branch 'master' of github.com:Araq/Nimrod
Diffstat (limited to 'tests/run')
-rw-r--r-- | tests/run/tasynciossl.nim | 8 | ||||
-rw-r--r-- | tests/run/tasyncudp.nim | 77 |
2 files changed, 82 insertions, 3 deletions
diff --git a/tests/run/tasynciossl.nim b/tests/run/tasynciossl.nim index 99e7df172..e5fb9610c 100644 --- a/tests/run/tasynciossl.nim +++ b/tests/run/tasynciossl.nim @@ -18,13 +18,13 @@ const swarmSize = 50 messagesToSend = 100 -proc swarmConnect(s: PAsyncSocket, arg: PObject) {.nimcall.} = +proc swarmConnect(s: PAsyncSocket) = #echo("Connected") for i in 1..messagesToSend: s.send("Message " & $i & "\c\L") s.close() -proc serverRead(s: PAsyncSocket, arg: PObject) {.nimcall.} = +proc serverRead(s: PAsyncSocket) = var line = "" assert s.recvLine(line) if line != "": @@ -36,7 +36,7 @@ proc serverRead(s: PAsyncSocket, arg: PObject) {.nimcall.} = else: s.close() -proc serverAccept(s: PAsyncSocket, arg: Pobject) {.nimcall.} = +proc serverAccept(s: PAsyncSocket) = var client: PAsyncSocket new(client) s.accept(client) @@ -83,6 +83,8 @@ while true: break if not disp.poll(): break if disp.len == serverCount: + # Only the servers are left in the dispatcher. All clients finished, + # we need to therefore break. break assert msgCount == (swarmSize * messagesToSend) * serverCount diff --git a/tests/run/tasyncudp.nim b/tests/run/tasyncudp.nim new file mode 100644 index 000000000..b404169dc --- /dev/null +++ b/tests/run/tasyncudp.nim @@ -0,0 +1,77 @@ +discard """ + file: "tasyncudp.nim" + output: "2000" +""" +import asyncio, sockets, strutils, times + +const + swarmSize = 5 + messagesToSend = 200 + +var + disp = newDispatcher() + msgCount = 0 + currentClient = 0 + +proc serverRead(s: PAsyncSocket) = + var data = "" + var address = "" + if s.recvFromAsync(data, 9, address): + assert address == "127.0.0.1" + msgCount.inc() + + discard """ + + var line = "" + assert s.recvLine(line) + + if line == "": + assert(false) + else: + if line.startsWith("Message "): + msgCount.inc() + else: + assert(false) + """ + +proc swarmConnect(s: PAsyncSocket) = + for i in 1..messagesToSend: + s.send("Message\c\L") + +proc createClient(disp: var PDispatcher, port: TPort, + buffered = true) = + currentClient.inc() + var client = AsyncSocket(typ = SOCK_DGRAM, protocol = IPPROTO_UDP, + buffered = buffered) + client.handleConnect = swarmConnect + disp.register(client) + client.connect("localhost", port) + +proc createServer(port: TPort, buffered = true) = + var server = AsyncSocket(typ = SOCK_DGRAM, protocol = IPPROTO_UDP, + buffered = buffered) + server.handleRead = serverRead + disp.register(server) + server.bindAddr(port) + +let serverCount = 2 + +createServer(TPort(10335), false) +createServer(TPort(10336), true) +var startTime = epochTime() +while true: + if epochTime() - startTime >= 300.0: + break + + if not disp.poll(): + break + + if (msgCount div messagesToSend) * serverCount == currentClient: + createClient(disp, TPort(10335), false) + createClient(disp, TPort(10336), true) + + if msgCount == messagesToSend * serverCount * swarmSize: + break + +assert msgCount == messagesToSend * serverCount * swarmSize +echo(msgCount) \ No newline at end of file |