Merge pull request #4785 from cheatfate/update_tnewasyncudp

Fix tnewasyncudp test
This commit is contained in:
Dominik Picheta 2016-09-17 12:48:32 +02:00 • committed by GitHub
commit 04c1caf025

View file

@ -39,8 +39,11 @@ proc prepareAddress(intaddr: uint32, intport: uint16): ptr Sockaddr_in =
proc launchSwarm(name: ptr SockAddr) {.async.} = proc launchSwarm(name: ptr SockAddr) {.async.} =
var i = 0 var i = 0
var k = 0 var k = 0
var buffer: array[16384, char]
var slen = sizeof(Sockaddr_in).SockLen
var saddr = Sockaddr_in()
while i < swarmSize: while i < swarmSize:
var peeraddr = prepareAddress(INADDR_ANY, 0) var peeraddr = prepareAddress(0x7F000001, 0)
var sock = newAsyncNativeSocket(nativesockets.AF_INET, var sock = newAsyncNativeSocket(nativesockets.AF_INET,
nativesockets.SOCK_DGRAM, nativesockets.SOCK_DGRAM,
Protocol.IPPROTO_UDP) Protocol.IPPROTO_UDP)
@ -50,10 +53,19 @@ proc launchSwarm(name: ptr SockAddr) {.async.} =
let sockport = getSockName(sock.SocketHandle).int let sockport = getSockName(sock.SocketHandle).int
k = 0 k = 0
while k < messagesToSend: while k < messagesToSend:
zeroMem(addr(buffer[0]), 16384)
zeroMem(cast[pointer](addr(saddr)), sizeof(Sockaddr_in))
var message = "Message " & $(i * messagesToSend + k) var message = "Message " & $(i * messagesToSend + k)
await sendTo(sock, addr message[0], len(message), await sendTo(sock, addr message[0], len(message),
name, sizeof(Sockaddr_in).SockLen) name, sizeof(Sockaddr_in).SockLen)
var size = await recvFromInto(sock, cast[pointer](addr buffer[0]),
16384, cast[ptr SockAddr](addr saddr),
addr slen)
size = 0
var grammString = $buffer
if grammString == message:
saveSendingPort(sockport) saveSendingPort(sockport)
inc(recvCount)
inc(k) inc(k)
closeSocket(sock) closeSocket(sock)
inc(i) inc(i)
@ -75,13 +87,14 @@ proc readMessages(server: AsyncFD) {.async.} =
var grammString = $buffer var grammString = $buffer
if grammString.startswith("Message ") and if grammString.startswith("Message ") and
saddr.sin_addr.s_addr == 0x100007F: saddr.sin_addr.s_addr == 0x100007F:
await sendTo(server, addr grammString[0], len(grammString),
cast[ptr SockAddr](addr saddr), slen)
inc(msgCount) inc(msgCount)
saveReceivedPort(ntohs(saddr.sin_port).int) saveReceivedPort(ntohs(saddr.sin_port).int)
inc(recvCount)
inc(i) inc(i)
proc createServer() {.async.} = proc createServer() {.async.} =
var name = prepareAddress(INADDR_ANY, serverPort) var name = prepareAddress(0x7F000001, serverPort)
var server = newAsyncNativeSocket(nativesockets.AF_INET, var server = newAsyncNativeSocket(nativesockets.AF_INET,
nativesockets.SOCK_DGRAM, nativesockets.SOCK_DGRAM,
Protocol.IPPROTO_UDP) Protocol.IPPROTO_UDP)