Fixes for upcoming asyncdispatch and ioselectors. (#5309)
This commit is contained in:
parent
3c773c189f
commit
d90f3f59ac
6 changed files with 113 additions and 70 deletions
|
|
@ -1,9 +1,6 @@
|
|||
discard """
|
||||
output: '''
|
||||
OK
|
||||
OK
|
||||
OK
|
||||
OK
|
||||
'''
|
||||
"""
|
||||
|
||||
|
|
@ -31,11 +28,39 @@ when defined(upcoming):
|
|||
var fut = waitEvent(event)
|
||||
asyncCheck(delayedSet(event, 500))
|
||||
waitFor(fut or sleepAsync(1000))
|
||||
if fut.finished:
|
||||
echo "OK"
|
||||
else:
|
||||
if not fut.finished:
|
||||
echo "eventTest: Timeout expired before event received!"
|
||||
|
||||
proc eventTest5304() =
|
||||
# Event should not be signaled if it was uregistered,
|
||||
# even in case, when poll() was not called yet.
|
||||
# Issue #5304.
|
||||
var unregistered = false
|
||||
let e = newAsyncEvent()
|
||||
addEvent(e) do (fd: AsyncFD) -> bool:
|
||||
assert(not unregistered)
|
||||
e.setEvent()
|
||||
e.unregister()
|
||||
unregistered = true
|
||||
poll()
|
||||
|
||||
proc eventTest5298() =
|
||||
# Event must raise `AssertionError` if event was unregistered twice.
|
||||
# Issue #5298.
|
||||
let e = newAsyncEvent()
|
||||
var eventReceived = false
|
||||
addEvent(e) do (fd: AsyncFD) -> bool:
|
||||
eventReceived = true
|
||||
return true
|
||||
e.setEvent()
|
||||
while not eventReceived:
|
||||
poll()
|
||||
try:
|
||||
e.unregister()
|
||||
except AssertionError:
|
||||
discard
|
||||
e.close()
|
||||
|
||||
when ioselSupportedPlatform or defined(windows):
|
||||
|
||||
import osproc
|
||||
|
|
@ -56,7 +81,6 @@ when defined(upcoming):
|
|||
|
||||
proc timerTest() =
|
||||
waitFor(waitTimer(200))
|
||||
echo "OK"
|
||||
|
||||
proc processTest() =
|
||||
when defined(windows):
|
||||
|
|
@ -70,7 +94,7 @@ when defined(upcoming):
|
|||
var fut = waitProcess(process)
|
||||
waitFor(fut or waitTimer(2000))
|
||||
if fut.finished and process.peekExitCode() == 0:
|
||||
echo "OK"
|
||||
discard
|
||||
else:
|
||||
echo "processTest: Timeout expired before process exited!"
|
||||
|
||||
|
|
@ -92,23 +116,28 @@ when defined(upcoming):
|
|||
var fut = waitSignal(posix.SIGINT)
|
||||
asyncCheck(delayedSignal(posix.SIGINT, 500))
|
||||
waitFor(fut or waitTimer(1000))
|
||||
if fut.finished:
|
||||
echo "OK"
|
||||
else:
|
||||
if not fut.finished:
|
||||
echo "signalTest: Timeout expired before signal received!"
|
||||
|
||||
when ioselSupportedPlatform:
|
||||
timerTest()
|
||||
eventTest()
|
||||
eventTest5304()
|
||||
eventTest5298()
|
||||
processTest()
|
||||
signalTest()
|
||||
echo "OK"
|
||||
elif defined(windows):
|
||||
timerTest()
|
||||
eventTest()
|
||||
eventTest5304()
|
||||
eventTest5298()
|
||||
processTest()
|
||||
echo "OK"
|
||||
else:
|
||||
eventTest()
|
||||
echo "OK\nOK\nOK"
|
||||
eventTest5304()
|
||||
eventTest5298()
|
||||
echo "OK"
|
||||
else:
|
||||
echo "OK\nOK\nOK\nOK"
|
||||
echo "OK"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue