mirror of
https://github.com/status-im/nim-chronos.git
synced 2025-02-20 23:18:22 +00:00
Merge pull request #57 from status-im/nim102
Nim 1.0.2 cleanup and fixes.
This commit is contained in:
commit
299adfa76f
@ -1,5 +1,5 @@
|
||||
packageName = "chronos"
|
||||
version = "2.3.2"
|
||||
version = "2.3.3"
|
||||
author = "Status Research & Development GmbH"
|
||||
description = "Chronos"
|
||||
license = "Apache License 2.0 or MIT"
|
||||
|
@ -243,7 +243,6 @@ proc addFirstNoWait*[T](aq: AsyncQueue[T], item: T) =
|
||||
## Put an item ``item`` to the beginning of the queue ``aq`` immediately.
|
||||
##
|
||||
## If queue ``aq`` is full, then ``AsyncQueueFullError`` exception raised.
|
||||
var w: Future[void]
|
||||
if aq.full():
|
||||
raise newException(AsyncQueueFullError, "AsyncQueue is full!")
|
||||
aq.queue.addFirst(item)
|
||||
@ -253,7 +252,6 @@ proc addLastNoWait*[T](aq: AsyncQueue[T], item: T) =
|
||||
## Put an item ``item`` at the end of the queue ``aq`` immediately.
|
||||
##
|
||||
## If queue ``aq`` is full, then ``AsyncQueueFullError`` exception raised.
|
||||
var w: Future[void]
|
||||
if aq.full():
|
||||
raise newException(AsyncQueueFullError, "AsyncQueue is full!")
|
||||
aq.queue.addLast(item)
|
||||
@ -263,7 +261,6 @@ proc popFirstNoWait*[T](aq: AsyncQueue[T]): T =
|
||||
## Get an item from the beginning of the queue ``aq`` immediately.
|
||||
##
|
||||
## If queue ``aq`` is empty, then ``AsyncQueueEmptyError`` exception raised.
|
||||
var w: Future[void]
|
||||
if aq.empty():
|
||||
raise newException(AsyncQueueEmptyError, "AsyncQueue is empty!")
|
||||
result = aq.queue.popFirst()
|
||||
@ -273,7 +270,6 @@ proc popLastNoWait*[T](aq: AsyncQueue[T]): T =
|
||||
## Get an item from the end of the queue ``aq`` immediately.
|
||||
##
|
||||
## If queue ``aq`` is empty, then ``AsyncQueueEmptyError`` exception raised.
|
||||
var w: Future[void]
|
||||
if aq.empty():
|
||||
raise newException(AsyncQueueEmptyError, "AsyncQueue is empty!")
|
||||
result = aq.queue.popLast()
|
||||
|
@ -25,8 +25,6 @@
|
||||
const asyncTimer* {.strdefine.} = "mono"
|
||||
|
||||
when defined(windows):
|
||||
from winlean import DWORD
|
||||
|
||||
when asyncTimer == "system":
|
||||
from winlean import getSystemTimeAsFileTime, FILETIME
|
||||
|
||||
|
@ -69,10 +69,6 @@ template setReadError(t, e: untyped) =
|
||||
(t).state.incl(ReadError)
|
||||
(t).error = getTransportOsError(e)
|
||||
|
||||
template setWriterWSABuffer(t, v: untyped) =
|
||||
(t).wwsabuf.buf = cast[cstring](v.buf)
|
||||
(t).wwsabuf.len = cast[int32](v.buflen)
|
||||
|
||||
proc setupDgramTransportTracker(): DgramTransportTracker {.gcsafe.}
|
||||
|
||||
proc getDgramTransportTracker(): DgramTransportTracker {.inline.} =
|
||||
@ -106,6 +102,11 @@ proc setupDgramTransportTracker(): DgramTransportTracker {.gcsafe.} =
|
||||
addTracker(DgramTransportTrackerName, result)
|
||||
|
||||
when defined(windows):
|
||||
|
||||
template setWriterWSABuffer(t, v: untyped) =
|
||||
(t).wwsabuf.buf = cast[cstring](v.buf)
|
||||
(t).wwsabuf.len = cast[int32](v.buflen)
|
||||
|
||||
const
|
||||
IOC_VENDOR = DWORD(0x18000000)
|
||||
SIO_UDP_CONNRESET = DWORD(winlean.IOC_IN) or IOC_VENDOR or DWORD(12)
|
||||
|
@ -342,15 +342,15 @@ when defined(linux):
|
||||
NETLINK_ROUTE = cint(0)
|
||||
NLMSG_ALIGNTO = 4'u
|
||||
RTA_ALIGNTO = 4'u
|
||||
RTA_UNSPEC = 0'u16
|
||||
# RTA_UNSPEC = 0'u16
|
||||
RTA_DST = 1'u16
|
||||
RTA_SRC = 2'u16
|
||||
RTA_IIF = 3'u16
|
||||
# RTA_SRC = 2'u16
|
||||
# RTA_IIF = 3'u16
|
||||
RTA_OIF = 4'u16
|
||||
RTA_GATEWAY = 5'u16
|
||||
RTA_PRIORITY = 6'u16
|
||||
# RTA_PRIORITY = 6'u16
|
||||
RTA_PREFSRC = 7'u16
|
||||
RTA_METRICS = 8'u16
|
||||
# RTA_METRICS = 8'u16
|
||||
|
||||
RTM_F_LOOKUP_TABLE = 0x1000
|
||||
|
||||
@ -364,9 +364,9 @@ when defined(linux):
|
||||
IFLIST_REPLY_BUFFER = 8192
|
||||
InvalidSocketHandle = SocketHandle(-1)
|
||||
NLMSG_DONE = 0x03
|
||||
NLMSG_MIN_TYPE = 0x10
|
||||
# NLMSG_MIN_TYPE = 0x10
|
||||
NLMSG_ERROR = 0x02
|
||||
MSG_TRUNC = 0x20
|
||||
# MSG_TRUNC = 0x20
|
||||
|
||||
IFLA_ADDRESS = 1
|
||||
IFLA_IFNAME = 3
|
||||
@ -375,7 +375,7 @@ when defined(linux):
|
||||
|
||||
IFA_ADDRESS = 1
|
||||
IFA_LOCAL = 2
|
||||
IFA_BROADCAST = 4
|
||||
# IFA_BROADCAST = 4
|
||||
|
||||
# ARPHRD_NETROM = 0
|
||||
ARPHRD_ETHER = 1
|
||||
|
@ -7,7 +7,7 @@
|
||||
# Apache License, version 2.0, (LICENSE-APACHEv2)
|
||||
# MIT license (LICENSE-MIT)
|
||||
import net, nativesockets, os, deques
|
||||
import ../asyncloop, ../handles, ../sendfile
|
||||
import ../asyncloop, ../handles
|
||||
import common
|
||||
|
||||
{.deadCodeElim: on.}
|
||||
@ -972,12 +972,7 @@ when defined(windows):
|
||||
server.aovl.data.cb(addr server.aovl)
|
||||
|
||||
else:
|
||||
|
||||
template initBufferStreamVector(v, p, n, t: untyped) =
|
||||
(v).kind = DataBuffer
|
||||
(v).buf = cast[pointer]((p))
|
||||
(v).buflen = int(n)
|
||||
(v).writer = (t)
|
||||
import ../sendfile
|
||||
|
||||
proc isConnResetError(err: OSErrorCode): bool {.inline.} =
|
||||
result = (err == OSErrorCode(ECONNRESET)) or
|
||||
@ -1601,7 +1596,7 @@ proc createStreamServer*[T](host: TransportAddress,
|
||||
init: TransportInitCallback = nil): StreamServer =
|
||||
var fflags = flags + {GCUserData}
|
||||
GC_ref(udata)
|
||||
result = createStreamServer(host, cbproc, flags, sock, backlog, bufferSize,
|
||||
result = createStreamServer(host, cbproc, fflags, sock, backlog, bufferSize,
|
||||
child, init, cast[pointer](udata))
|
||||
|
||||
proc getUserData*[T](server: StreamServer): T {.inline.} =
|
||||
|
@ -1,4 +1,4 @@
|
||||
switch("hints", "off")
|
||||
switch("verbosity", "0")
|
||||
switch("threads", "on")
|
||||
# switch("hints", "off")
|
||||
# switch("verbosity", "0")
|
||||
# switch("threads", "on")
|
||||
|
||||
|
@ -111,7 +111,7 @@ suite "TransportAddress test suite":
|
||||
var errcounter = 0
|
||||
for item in tests:
|
||||
try:
|
||||
var ta = initTAddress(item)
|
||||
discard initTAddress(item)
|
||||
except TransportAddressError:
|
||||
inc(errcounter)
|
||||
check errcounter == len(tests)
|
||||
@ -126,7 +126,7 @@ suite "TransportAddress test suite":
|
||||
var errcounter = 0
|
||||
for item in tests:
|
||||
try:
|
||||
var ta = initTAddress(item, Port(443))
|
||||
discard initTAddress(item, Port(443))
|
||||
except TransportAddressError:
|
||||
inc(errcounter)
|
||||
check errcounter == len(tests)
|
||||
@ -134,7 +134,7 @@ suite "TransportAddress test suite":
|
||||
test "Faulty initTAddress(string, Port)":
|
||||
var errcounter = 0
|
||||
try:
|
||||
var ta = initTAddress("127.0.0.1", 100000)
|
||||
discard initTAddress("127.0.0.1", 100000)
|
||||
except TransportAddressError:
|
||||
inc(errcounter)
|
||||
check errcounter == 1
|
||||
@ -151,7 +151,7 @@ suite "TransportAddress test suite":
|
||||
var errcounter = 0
|
||||
for item in numeric:
|
||||
try:
|
||||
var taseq = resolveTAddress(item)
|
||||
discard resolveTAddress(item)
|
||||
except TransportAddressError:
|
||||
inc(errcounter)
|
||||
check errcounter == len(numeric)
|
||||
@ -168,7 +168,7 @@ suite "TransportAddress test suite":
|
||||
var errcounter = 0
|
||||
for item in numeric:
|
||||
try:
|
||||
var taseq = resolveTAddress(item, Port(443))
|
||||
discard resolveTAddress(item, Port(443))
|
||||
except TransportAddressError:
|
||||
inc(errcounter)
|
||||
check errcounter == len(numeric)
|
||||
|
@ -547,7 +547,8 @@ suite "ChunkedStream test suite":
|
||||
var rstream2 = newChunkedStreamReader(rstream)
|
||||
try:
|
||||
var r = await rstream2.read()
|
||||
except AsyncStreamReadError as e:
|
||||
doAssert(len(r) > 0)
|
||||
except AsyncStreamReadError:
|
||||
res = true
|
||||
await rstream2.closeWait()
|
||||
await rstream.closeWait()
|
||||
|
@ -453,7 +453,6 @@ suite "Datagram Transport test suite":
|
||||
|
||||
proc testTransportClose(): Future[bool] {.async.} =
|
||||
var ta = initTAddress("127.0.0.1:45000")
|
||||
var counter = 0
|
||||
proc clientMark(transp: DatagramTransport,
|
||||
raddr: TransportAddress): Future[void] {.async.} =
|
||||
discard
|
||||
|
@ -27,7 +27,7 @@ suite "Future[T] behavior test suite":
|
||||
## Test for not immediately completed future and timeout = -1
|
||||
result = 0
|
||||
try:
|
||||
var res = await wait(testFuture1(), InfiniteDuration)
|
||||
discard await wait(testFuture1(), InfiniteDuration)
|
||||
result = 1
|
||||
except:
|
||||
result = 0
|
||||
@ -38,7 +38,7 @@ suite "Future[T] behavior test suite":
|
||||
## Test for immediately completed future and timeout = -1
|
||||
result = 0
|
||||
try:
|
||||
var res = await wait(testFuture2(), InfiniteDuration)
|
||||
discard await wait(testFuture2(), InfiniteDuration)
|
||||
result = 2
|
||||
except:
|
||||
result = 0
|
||||
@ -49,7 +49,7 @@ suite "Future[T] behavior test suite":
|
||||
## Test for not immediately completed future and timeout = 0
|
||||
result = 0
|
||||
try:
|
||||
var res = await wait(testFuture1(), 0.milliseconds)
|
||||
discard await wait(testFuture1(), 0.milliseconds)
|
||||
except AsyncTimeoutError:
|
||||
result = 3
|
||||
|
||||
@ -59,7 +59,7 @@ suite "Future[T] behavior test suite":
|
||||
## Test for immediately completed future and timeout = 0
|
||||
result = 0
|
||||
try:
|
||||
var res = await wait(testFuture2(), 0.milliseconds)
|
||||
discard await wait(testFuture2(), 0.milliseconds)
|
||||
result = 4
|
||||
except:
|
||||
result = 0
|
||||
@ -70,7 +70,7 @@ suite "Future[T] behavior test suite":
|
||||
## Test for future which cannot be completed in timeout period
|
||||
result = 0
|
||||
try:
|
||||
var res = await wait(testFuture100(), 50.milliseconds)
|
||||
discard await wait(testFuture100(), 50.milliseconds)
|
||||
except AsyncTimeoutError:
|
||||
result = 5
|
||||
|
||||
@ -79,7 +79,7 @@ suite "Future[T] behavior test suite":
|
||||
|
||||
## Test for future which will be completed before timeout exceeded.
|
||||
try:
|
||||
var res = await wait(testFuture100(), 500.milliseconds)
|
||||
discard await wait(testFuture100(), 500.milliseconds)
|
||||
result = 6
|
||||
except:
|
||||
result = -6
|
||||
|
@ -43,7 +43,7 @@ proc testAwait(): Future[bool] {.async.} =
|
||||
discard
|
||||
res = 0
|
||||
try:
|
||||
var res = await asyncRetExceptionValue(100)
|
||||
discard await asyncRetExceptionValue(100)
|
||||
return false
|
||||
except ValueError:
|
||||
discard
|
||||
@ -68,7 +68,7 @@ proc testAwaitne(): Future[bool] {.async.} =
|
||||
|
||||
res2 = awaitne asyncRetExceptionValue(100)
|
||||
try:
|
||||
var res = res2.read()
|
||||
discard res2.read()
|
||||
return false
|
||||
except ValueError:
|
||||
discard
|
||||
|
@ -90,6 +90,7 @@ suite "Server's test suite":
|
||||
var msg = "TEST\r\n"
|
||||
discard await transp.write(msg)
|
||||
var line = await transp.readLine()
|
||||
doAssert(len(line) > 0)
|
||||
transp.close()
|
||||
server.stop()
|
||||
server.close()
|
||||
@ -115,6 +116,7 @@ suite "Server's test suite":
|
||||
var pserver = createStreamServer(ta, serveCustomStreamClient, {ReuseAddr},
|
||||
child = cast[StreamServer](server),
|
||||
init = customServerTransport)
|
||||
doAssert(not isNil(pserver))
|
||||
waitFor client1(server, ta)
|
||||
result = (server.test1 == "CONNECTION") and (server.test2 == "CUSTOM")
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
# Licensed under either of
|
||||
# Apache License, version 2.0, (LICENSE-APACHEv2)
|
||||
# MIT license (LICENSE-MIT)
|
||||
import unittest, strutils
|
||||
import unittest
|
||||
import ../chronos
|
||||
|
||||
when defined(nimHasUsed): {.used.}
|
||||
|
@ -280,6 +280,7 @@ suite "Stream Transport test suite":
|
||||
var res = await transp.write(data)
|
||||
doAssert(res == len(data))
|
||||
var res = await transp.write(crlf)
|
||||
doAssert(res == len(crlf))
|
||||
var line = await transp.readLine()
|
||||
doAssert(line == "DONE")
|
||||
result = 1
|
||||
@ -294,6 +295,7 @@ suite "Stream Transport test suite":
|
||||
var res = await transp.write(data)
|
||||
doAssert(res == len(data))
|
||||
var res = await transp.write(crlf)
|
||||
doAssert(res == len(crlf))
|
||||
var line = await transp.readLine()
|
||||
doAssert(line == "DONE")
|
||||
result = 1
|
||||
@ -313,7 +315,6 @@ suite "Stream Transport test suite":
|
||||
|
||||
proc swarmManager1(address: TransportAddress): Future[int] {.async.} =
|
||||
var workers = newSeq[Future[int]](ClientsCount)
|
||||
var count = ClientsCount
|
||||
for i in 0..<ClientsCount:
|
||||
workers[i] = swarmWorker1(address)
|
||||
await waitAll(workers)
|
||||
@ -323,7 +324,6 @@ suite "Stream Transport test suite":
|
||||
|
||||
proc swarmManager2(address: TransportAddress): Future[int] {.async.} =
|
||||
var workers = newSeq[Future[int]](ClientsCount)
|
||||
var count = ClientsCount
|
||||
for i in 0..<ClientsCount:
|
||||
workers[i] = swarmWorker2(address)
|
||||
await waitAll(workers)
|
||||
@ -333,7 +333,6 @@ suite "Stream Transport test suite":
|
||||
|
||||
proc swarmManager3(address: TransportAddress): Future[int] {.async.} =
|
||||
var workers = newSeq[Future[int]](ClientsCount)
|
||||
var count = ClientsCount
|
||||
for i in 0..<ClientsCount:
|
||||
workers[i] = swarmWorker3(address)
|
||||
await waitAll(workers)
|
||||
@ -343,7 +342,6 @@ suite "Stream Transport test suite":
|
||||
|
||||
proc swarmManager4(address: TransportAddress): Future[int] {.async.} =
|
||||
var workers = newSeq[Future[int]](FilesCount)
|
||||
var count = FilesCount
|
||||
for i in 0..<FilesCount:
|
||||
workers[i] = swarmWorker4(address)
|
||||
await waitAll(workers)
|
||||
@ -360,7 +358,6 @@ suite "Stream Transport test suite":
|
||||
await server.join()
|
||||
|
||||
proc test2(address: TransportAddress): Future[int] {.async.} =
|
||||
var counter = 0
|
||||
var server = createStreamServer(address, serveClient2, {ReuseAddr})
|
||||
server.start()
|
||||
result = await swarmManager2(address)
|
||||
@ -369,7 +366,6 @@ suite "Stream Transport test suite":
|
||||
await server.join()
|
||||
|
||||
proc test3(address: TransportAddress): Future[int] {.async.} =
|
||||
var counter = 0
|
||||
var server = createStreamServer(address, serveClient3, {ReuseAddr})
|
||||
server.start()
|
||||
result = await swarmManager3(address)
|
||||
@ -393,13 +389,13 @@ suite "Stream Transport test suite":
|
||||
var data = ConstantMessage
|
||||
for i in 0..<MessagesCount:
|
||||
var res = await transp.write(data)
|
||||
doAssert(res == len(data))
|
||||
result = MessagesCount
|
||||
transp.close()
|
||||
await transp.join()
|
||||
|
||||
proc swarmManager(address: TransportAddress): Future[int] {.async.} =
|
||||
var workers = newSeq[Future[int]](ClientsCount)
|
||||
var count = ClientsCount
|
||||
for i in 0..<ClientsCount:
|
||||
workers[i] = swarmWorker(address)
|
||||
await waitAll(workers)
|
||||
@ -448,6 +444,7 @@ suite "Stream Transport test suite":
|
||||
copyMem(addr seqdata[0], addr data[0], len(data))
|
||||
for i in 0..<MessagesCount:
|
||||
var res = await transp.write(seqdata)
|
||||
doAssert(res == len(seqdata))
|
||||
result = MessagesCount
|
||||
transp.close()
|
||||
await transp.join()
|
||||
@ -577,6 +574,7 @@ suite "Stream Transport test suite":
|
||||
var transp = await connect(address)
|
||||
try:
|
||||
var res = await transp.readUntil(addr buffer[0], len(buffer), sep)
|
||||
doAssert(res == 0)
|
||||
except TransportIncompleteError:
|
||||
result = 1
|
||||
transp.close()
|
||||
@ -640,6 +638,7 @@ suite "Stream Transport test suite":
|
||||
proc testConnectionRefused(address: TransportAddress): Future[bool] {.async.} =
|
||||
try:
|
||||
var transp = await connect(address)
|
||||
doAssert(isNil(transp))
|
||||
except TransportOsError as e:
|
||||
let ecode = int(e.code)
|
||||
when defined(windows):
|
||||
|
Loading…
x
Reference in New Issue
Block a user