removed async test that never produced reliable results
This commit is contained in:
parent
bae3baf9cc
commit
a8dc4df8be
1 changed files with 0 additions and 66 deletions
|
|
@ -1,66 +0,0 @@
|
||||||
discard """
|
|
||||||
file: "tasynceverror.nim"
|
|
||||||
exitcode: 1
|
|
||||||
outputsub: "Error: unhandled exception: "
|
|
||||||
"""
|
|
||||||
# error message is actually different on OSX
|
|
||||||
import
|
|
||||||
asyncdispatch,
|
|
||||||
asyncnet,
|
|
||||||
nativesockets,
|
|
||||||
os
|
|
||||||
|
|
||||||
|
|
||||||
const
|
|
||||||
testHost = "127.0.0.1"
|
|
||||||
testPort = Port(17357)
|
|
||||||
|
|
||||||
|
|
||||||
when defined(windows) or defined(nimdoc):
|
|
||||||
# TODO: just make it work on Windows for now.
|
|
||||||
quit("Error: unhandled exception: Connection reset by peer")
|
|
||||||
else:
|
|
||||||
proc createListenSocket(host: string, port: Port): TAsyncFD =
|
|
||||||
result = newAsyncNativeSocket()
|
|
||||||
|
|
||||||
SocketHandle(result).setSockOptInt(SOL_SOCKET, SO_REUSEADDR, 1)
|
|
||||||
|
|
||||||
var aiList = getAddrInfo(host, port, AF_INET)
|
|
||||||
if SocketHandle(result).bindAddr(aiList.ai_addr, aiList.ai_addrlen.Socklen) < 0'i32:
|
|
||||||
dealloc(aiList)
|
|
||||||
raiseOSError(osLastError())
|
|
||||||
dealloc(aiList)
|
|
||||||
|
|
||||||
if SocketHandle(result).listen(1) < 0'i32:
|
|
||||||
raiseOSError(osLastError())
|
|
||||||
|
|
||||||
|
|
||||||
proc testAsyncSend() {.async.} =
|
|
||||||
var
|
|
||||||
ls = createListenSocket(testHost, testPort)
|
|
||||||
s = newAsyncSocket()
|
|
||||||
|
|
||||||
await s.connect(testHost, testPort)
|
|
||||||
|
|
||||||
var ps = await ls.accept()
|
|
||||||
closeSocket(ls)
|
|
||||||
|
|
||||||
await ps.send("test 1", flags={})
|
|
||||||
s.close()
|
|
||||||
# This send should raise EPIPE
|
|
||||||
await ps.send("test 2", flags={})
|
|
||||||
SocketHandle(ps).close()
|
|
||||||
|
|
||||||
|
|
||||||
# The bug was, when the poll function handled EvError for us,
|
|
||||||
# our callbacks may never get executed, thus making the event
|
|
||||||
# loop block indefinitely. This is a timer to keep everything
|
|
||||||
# rolling. 400 ms is an arbitrary value, should be enough though.
|
|
||||||
proc timer() {.async.} =
|
|
||||||
await sleepAsync(400)
|
|
||||||
echo("Timer expired.")
|
|
||||||
quit(2)
|
|
||||||
|
|
||||||
|
|
||||||
asyncCheck(testAsyncSend())
|
|
||||||
waitFor(timer())
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue