fix #14320 (tasyncawait.nim is recently very flaky) + avoid hardcoding service ports everywhere + flakyAssert (#14327)

* hotfix #14320 tasyncawait.nim is recently very flaky
* fix #14327
* add flakyAssert
This commit is contained in:
Timothee Cour 2020-05-13 02:05:47 -07:00 • committed by GitHub
commit 1648f1dd99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 102 additions and 92 deletions

View file

@ -1,9 +1,6 @@
discard """
output: "5000"
"""
when defined(windows):
import asyncdispatch, nativesockets, net, strutils, os, winlean
from stdtest/netutils import bindAvailablePort
var msgCount = 0
const
@ -228,29 +225,19 @@ when defined(windows):
else:
doAssert false
proc createServer(port: Port) {.async.} =
var server = createNativeSocket()
setBlocking(server, false)
block:
var name = Sockaddr_in()
name.sin_family = toInt(Domain.AF_INET).uint16
name.sin_port = htons(uint16(port))
name.sin_addr.s_addr = htonl(INADDR_ANY)
if bindAddr(server, cast[ptr SockAddr](addr(name)),
sizeof(name).Socklen) < 0'i32:
raiseOSError(osLastError())
proc createServer(server: SocketHandle) {.async.} =
discard server.listen()
while true:
asyncCheck readMessages(await winAccept(AsyncFD(server)))
asyncCheck createServer(Port(10335))
asyncCheck launchSwarm(Port(10335))
var server = createNativeSocket()
setBlocking(server, false)
let port = bindAvailablePort(server)
asyncCheck createServer(server)
asyncCheck launchSwarm(port)
while true:
poll()
if clientCount == swarmSize: break
assert msgCount == swarmSize * messagesToSend
echo msgCount
else:
echo(5000)
doAssert msgCount == 5000