diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2017-07-11 19:19:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-11 19:19:19 +0100 |
commit | ccbc09fb0bd82e0ee0db8293cded129b48fa48ee (patch) | |
tree | f82a0debfeea59425b009eecdf65e16f8a5ad78b /tests | |
parent | 2ad9a16e0ad84517eab3555b2736ffa38ef86514 (diff) | |
parent | 7e4ca9a8716e571ad6a70d28e416969d33d251cb (diff) | |
download | Nim-ccbc09fb0bd82e0ee0db8293cded129b48fa48ee.tar.gz |
Merge pull request #6047 from euantorano/patch-1
Wait for reads to finish before reading the result
Diffstat (limited to 'tests')
-rw-r--r-- | tests/async/tasyncRecvLine.nim | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/async/tasyncRecvLine.nim b/tests/async/tasyncRecvLine.nim new file mode 100644 index 000000000..679831b27 --- /dev/null +++ b/tests/async/tasyncRecvLine.nim @@ -0,0 +1,54 @@ +discard """ + file: "tasyncRecvLine.nim" + output: ''' +Hello World +Hello World +''' +""" + +import asyncdispatch, asyncnet + +const recvLinePort = Port(6047) + +proc setupTestServer(): AsyncSocket = + result = newAsyncSocket() + result.setSockOpt(OptReuseAddr, true) + result.bindAddr(recvLinePort) + result.listen() + +proc testUnbuffered(): Future[void] {.async.} = + let serverSock = setupTestServer() + let serverAcceptClientFut = serverSock.accept() + + let clientSock = newAsyncSocket(buffered = false) + let clientConnectFut = clientSock.connect("localhost", recvLinePort) + + let serverAcceptedClient = await serverAcceptClientFut + await clientConnectFut + + await serverAcceptedClient.send("Hello World\c\L") + + echo await clientSock.recvLine() + + clientSock.close() + serverSock.close() + +proc testBuffered(): Future[void] {.async.} = + let serverSock = setupTestServer() + let serverAcceptClientFut = serverSock.accept() + + let clientSock = newAsyncSocket(buffered = true) + let clientConnectFut = clientSock.connect("localhost", recvLinePort) + + let serverAcceptedClient = await serverAcceptClientFut + await clientConnectFut + + await serverAcceptedClient.send("Hello World\c\L") + + echo await clientSock.recvLine() + + clientSock.close() + serverSock.close() + +waitFor testUnbuffered() +waitFor testBuffered() |