mirror of
https://github.com/status-im/nim-websock.git
synced 2025-02-17 11:56:46 +00:00
test fixes (#115)
* don't use global for server instance * it gets shared between tests and causes gcsafe to trigger * enable `chronosStrictException` in tests * avoid asynctests dep * testcommon -> all_tests (like the other projects)
This commit is contained in:
parent
fc6538fa85
commit
e974acbe0a
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
*.exe
|
*.exe
|
||||||
|
nimcache
|
||||||
|
@ -8,8 +8,7 @@
|
|||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import std/os
|
import std/os
|
||||||
import pkg/[chronos, stew/io2]
|
import pkg/[chronicles, chronos/unittest2/asynctests, stew/io2]
|
||||||
import pkg/asynctest/unittest2
|
|
||||||
import ../../websock/websock
|
import ../../websock/websock
|
||||||
import ../../websock/extensions/compression/deflate
|
import ../../websock/extensions/compression/deflate
|
||||||
|
|
||||||
@ -17,15 +16,17 @@ const
|
|||||||
dataFolder = "tests" / "extensions" / "data"
|
dataFolder = "tests" / "extensions" / "data"
|
||||||
|
|
||||||
suite "permessage deflate compression":
|
suite "permessage deflate compression":
|
||||||
|
setup:
|
||||||
var server: HttpServer
|
var server: HttpServer
|
||||||
let address = initTAddress("127.0.0.1:8888")
|
let address = initTAddress("127.0.0.1:8888")
|
||||||
let deflateFactory = deflateFactory()
|
let deflateFactory = deflateFactory()
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "text compression":
|
asyncTest "text compression":
|
||||||
let textData = io2.readAllBytes(dataFolder / "alice29.txt").get()
|
let textData = io2.readAllBytes(dataFolder / "alice29.txt").get()
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
let server = WSServer.new(
|
let server = WSServer.new(
|
||||||
@ -66,7 +67,7 @@ suite "permessage deflate compression":
|
|||||||
check textData == recvData
|
check textData == recvData
|
||||||
await client.close()
|
await client.close()
|
||||||
|
|
||||||
test "binary data compression":
|
asyncTest "binary data compression":
|
||||||
let binaryData = io2.readAllBytes(dataFolder / "fireworks.jpg").get()
|
let binaryData = io2.readAllBytes(dataFolder / "fireworks.jpg").get()
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
let server = WSServer.new(
|
let server = WSServer.new(
|
||||||
|
@ -7,22 +7,23 @@
|
|||||||
## This file may not be copied, modified, or distributed except according to
|
## This file may not be copied, modified, or distributed except according to
|
||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import pkg/[chronos, stew/byteutils]
|
import pkg/[chronicles, chronos/unittest2/asynctests, stew/byteutils]
|
||||||
import pkg/asynctest/unittest2
|
|
||||||
import ./base64ext, ./hexext
|
import ./base64ext, ./hexext
|
||||||
import ../../websock/websock, ../helpers
|
import ../../websock/websock, ../helpers
|
||||||
|
|
||||||
suite "multiple extensions flow":
|
suite "multiple extensions flow":
|
||||||
|
setup:
|
||||||
var server: HttpServer
|
var server: HttpServer
|
||||||
let address = initTAddress("127.0.0.1:8888")
|
let address = initTAddress("127.0.0.1:8888")
|
||||||
let hexFactory = hexFactory()
|
let hexFactory = hexFactory()
|
||||||
let base64Factory = base64Factory(padding = true)
|
let base64Factory = base64Factory(padding = true)
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "hex to base64 ext flow":
|
asyncTest "hex to base64 ext flow":
|
||||||
let testData = "hello world"
|
let testData = "hello world"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
let server = WSServer.new(
|
let server = WSServer.new(
|
||||||
@ -54,7 +55,7 @@ suite "multiple extensions flow":
|
|||||||
check testData.toBytes() == res
|
check testData.toBytes() == res
|
||||||
await client.close()
|
await client.close()
|
||||||
|
|
||||||
test "base64 to hex ext flow":
|
asyncTest "base64 to hex ext flow":
|
||||||
let testData = "hello world"
|
let testData = "hello world"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
let server = WSServer.new(
|
let server = WSServer.new(
|
||||||
|
@ -8,8 +8,7 @@
|
|||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import
|
import
|
||||||
pkg/chronos,
|
unittest2,
|
||||||
pkg/asynctest/unittest2,
|
|
||||||
../websock/extensions
|
../websock/extensions
|
||||||
|
|
||||||
suite "extension parser":
|
suite "extension parser":
|
||||||
|
@ -7,8 +7,9 @@
|
|||||||
## This file may not be copied, modified, or distributed except according to
|
## This file may not be copied, modified, or distributed except according to
|
||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import pkg/stew/byteutils
|
import
|
||||||
import pkg/asynctest/unittest2
|
pkg/stew/byteutils,
|
||||||
|
pkg/chronos/unittest2/asynctests
|
||||||
|
|
||||||
include ../websock/frame
|
include ../websock/frame
|
||||||
include ../websock/utils
|
include ../websock/utils
|
||||||
@ -16,10 +17,10 @@ include ../websock/utils
|
|||||||
# TODO: Fix Test.
|
# TODO: Fix Test.
|
||||||
|
|
||||||
suite "Test data frames":
|
suite "Test data frames":
|
||||||
|
setup:
|
||||||
var maskKey: array[4, char]
|
var maskKey: array[4, char]
|
||||||
|
|
||||||
test "# 7bit length text":
|
asyncTest "# 7bit length text":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: false,
|
fin: false,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -30,7 +31,7 @@ suite "Test data frames":
|
|||||||
data: toBytes("hi there")
|
data: toBytes("hi there")
|
||||||
).encode()) == toBytes("\1\8hi there")
|
).encode()) == toBytes("\1\8hi there")
|
||||||
|
|
||||||
test "# 7bit length text fin bit":
|
asyncTest "# 7bit length text fin bit":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: true,
|
fin: true,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -42,7 +43,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\129\8hi there")
|
).encode()) == toBytes("\129\8hi there")
|
||||||
|
|
||||||
test "# 7bit length binary":
|
asyncTest "# 7bit length binary":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: false,
|
fin: false,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -54,7 +55,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\2\8hi there")
|
).encode()) == toBytes("\2\8hi there")
|
||||||
|
|
||||||
test "# 7bit length binary fin bit":
|
asyncTest "# 7bit length binary fin bit":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: true,
|
fin: true,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -66,7 +67,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\130\8hi there")
|
).encode()) == toBytes("\130\8hi there")
|
||||||
|
|
||||||
test "# 7bit length continuation":
|
asyncTest "# 7bit length continuation":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: false,
|
fin: false,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -78,7 +79,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\0\8hi there")
|
).encode()) == toBytes("\0\8hi there")
|
||||||
|
|
||||||
test "# 7+16 length text":
|
asyncTest "# 7+16 length text":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..32:
|
for i in 0..32:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -94,7 +95,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\1\126\4\98" & data)
|
).encode()) == toBytes("\1\126\4\98" & data)
|
||||||
|
|
||||||
test "# 7+16 length text fin bit":
|
asyncTest "# 7+16 length text fin bit":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..32:
|
for i in 0..32:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -110,7 +111,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\1\126\4\98" & data)
|
).encode()) == toBytes("\1\126\4\98" & data)
|
||||||
|
|
||||||
test "# 7+16 length binary":
|
asyncTest "# 7+16 length binary":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..32:
|
for i in 0..32:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -126,7 +127,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\2\126\4\98" & data)
|
).encode()) == toBytes("\2\126\4\98" & data)
|
||||||
|
|
||||||
test "# 7+16 length binary fin bit":
|
asyncTest "# 7+16 length binary fin bit":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..32:
|
for i in 0..32:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -142,7 +143,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\130\126\4\98" & data)
|
).encode()) == toBytes("\130\126\4\98" & data)
|
||||||
|
|
||||||
test "# 7+16 length continuation":
|
asyncTest "# 7+16 length continuation":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..32:
|
for i in 0..32:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -158,7 +159,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\0\126\4\98" & data)
|
).encode()) == toBytes("\0\126\4\98" & data)
|
||||||
|
|
||||||
test "# 7+64 length text":
|
asyncTest "# 7+64 length text":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..3200:
|
for i in 0..3200:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -174,7 +175,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\1\127\0\0\0\0\0\1\169\34" & data)
|
).encode()) == toBytes("\1\127\0\0\0\0\0\1\169\34" & data)
|
||||||
|
|
||||||
test "# 7+64 length fin bit":
|
asyncTest "# 7+64 length fin bit":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..3200:
|
for i in 0..3200:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -190,7 +191,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\129\127\0\0\0\0\0\1\169\34" & data)
|
).encode()) == toBytes("\129\127\0\0\0\0\0\1\169\34" & data)
|
||||||
|
|
||||||
test "# 7+64 length binary":
|
asyncTest "# 7+64 length binary":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..3200:
|
for i in 0..3200:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -206,7 +207,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\2\127\0\0\0\0\0\1\169\34" & data)
|
).encode()) == toBytes("\2\127\0\0\0\0\0\1\169\34" & data)
|
||||||
|
|
||||||
test "# 7+64 length binary fin bit":
|
asyncTest "# 7+64 length binary fin bit":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..3200:
|
for i in 0..3200:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -222,7 +223,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\130\127\0\0\0\0\0\1\169\34" & data)
|
).encode()) == toBytes("\130\127\0\0\0\0\0\1\169\34" & data)
|
||||||
|
|
||||||
test "# 7+64 length binary":
|
asyncTest "# 7+64 length binary":
|
||||||
var data = ""
|
var data = ""
|
||||||
for i in 0..3200:
|
for i in 0..3200:
|
||||||
data.add "How are you this is the payload!!!"
|
data.add "How are you this is the payload!!!"
|
||||||
@ -238,7 +239,7 @@ suite "Test data frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\0\127\0\0\0\0\0\1\169\34" & data)
|
).encode()) == toBytes("\0\127\0\0\0\0\0\1\169\34" & data)
|
||||||
|
|
||||||
test "# masking":
|
asyncTest "# masking":
|
||||||
let data = (await Frame(
|
let data = (await Frame(
|
||||||
fin: true,
|
fin: true,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -253,10 +254,10 @@ suite "Test data frames":
|
|||||||
check data == toBytes("\129\136\207\216\5e\167\177%\17\167\189w\0")
|
check data == toBytes("\129\136\207\216\5e\167\177%\17\167\189w\0")
|
||||||
|
|
||||||
suite "Test control frames":
|
suite "Test control frames":
|
||||||
|
setup:
|
||||||
var maskKey: array[4, char]
|
var maskKey: array[4, char]
|
||||||
|
|
||||||
test "Close":
|
asyncTest "Close":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: true,
|
fin: true,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -268,7 +269,7 @@ suite "Test control frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\136\10\3\232hi there")
|
).encode()) == toBytes("\136\10\3\232hi there")
|
||||||
|
|
||||||
test "Ping":
|
asyncTest "Ping":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: false,
|
fin: false,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
@ -279,7 +280,7 @@ suite "Test control frames":
|
|||||||
maskKey: maskKey
|
maskKey: maskKey
|
||||||
).encode()) == toBytes("\9\0")
|
).encode()) == toBytes("\9\0")
|
||||||
|
|
||||||
test "Pong":
|
asyncTest "Pong":
|
||||||
check (await Frame(
|
check (await Frame(
|
||||||
fin: false,
|
fin: false,
|
||||||
rsv1: false,
|
rsv1: false,
|
||||||
|
@ -7,13 +7,11 @@
|
|||||||
## This file may not be copied, modified, or distributed except according to
|
## This file may not be copied, modified, or distributed except according to
|
||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import std/strutils
|
|
||||||
import pkg/[
|
import pkg/[
|
||||||
httputils,
|
httputils,
|
||||||
chronos,
|
chronos/unittest2/asynctests,
|
||||||
chronicles,
|
chronicles,
|
||||||
stew/byteutils,
|
]
|
||||||
asynctest/unittest2]
|
|
||||||
|
|
||||||
import ../websock/websock
|
import ../websock/websock
|
||||||
|
|
||||||
@ -96,16 +94,18 @@ proc serverHookWithCode(request: HttpRequest): Hook =
|
|||||||
)
|
)
|
||||||
|
|
||||||
suite "Test Hooks":
|
suite "Test Hooks":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
goodCP = goodClientHook()
|
goodCP = goodClientHook()
|
||||||
badCP = badClientHook()
|
badCP = badClientHook()
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "client with valid token":
|
asyncTest "client with valid token":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let
|
let
|
||||||
@ -129,7 +129,7 @@ suite "Test Hooks":
|
|||||||
check TokenHook(goodCP).token == "accept"
|
check TokenHook(goodCP).token == "accept"
|
||||||
await session.stream.closeWait()
|
await session.stream.closeWait()
|
||||||
|
|
||||||
test "client with bad token":
|
asyncTest "client with bad token":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let
|
let
|
||||||
@ -153,7 +153,7 @@ suite "Test Hooks":
|
|||||||
check TokenHook(badCP).token == "reject"
|
check TokenHook(badCP).token == "reject"
|
||||||
await session.stream.closeWait()
|
await session.stream.closeWait()
|
||||||
|
|
||||||
test "server hook with code get good client":
|
asyncTest "server hook with code get good client":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let
|
let
|
||||||
@ -177,7 +177,7 @@ suite "Test Hooks":
|
|||||||
check TokenHook(goodCP).token == "accept"
|
check TokenHook(goodCP).token == "accept"
|
||||||
await session.stream.closeWait()
|
await session.stream.closeWait()
|
||||||
|
|
||||||
test "server hook with code get bad client":
|
asyncTest "server hook with code get bad client":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let
|
let
|
||||||
|
@ -11,8 +11,7 @@ import
|
|||||||
std/[strutils],
|
std/[strutils],
|
||||||
pkg/[
|
pkg/[
|
||||||
stew/byteutils,
|
stew/byteutils,
|
||||||
asynctest/unittest2,
|
chronos/unittest2/asynctests,
|
||||||
chronos,
|
|
||||||
chronicles
|
chronicles
|
||||||
],
|
],
|
||||||
../websock/[websock, utf8dfa]
|
../websock/[websock, utf8dfa]
|
||||||
@ -79,15 +78,16 @@ proc waitForClose(ws: WSSession) {.async.} =
|
|||||||
trace "Closing websocket"
|
trace "Closing websocket"
|
||||||
|
|
||||||
suite "UTF-8 validator in action":
|
suite "UTF-8 validator in action":
|
||||||
|
setup:
|
||||||
var server: HttpServer
|
var server: HttpServer
|
||||||
let address = initTAddress("127.0.0.1:8888")
|
let address = initTAddress("127.0.0.1:8888")
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "valid UTF-8 sequence":
|
asyncTest "valid UTF-8 sequence":
|
||||||
let testData = "hello world"
|
let testData = "hello world"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == "/ws"
|
check request.uri.path == "/ws"
|
||||||
@ -117,7 +117,7 @@ suite "UTF-8 validator in action":
|
|||||||
await session.send(testData)
|
await session.send(testData)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "valid UTF-8 sequence in close reason":
|
asyncTest "valid UTF-8 sequence in close reason":
|
||||||
let testData = "hello world"
|
let testData = "hello world"
|
||||||
let closeReason = "i want to close"
|
let closeReason = "i want to close"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
@ -158,7 +158,7 @@ suite "UTF-8 validator in action":
|
|||||||
await session.send(testData)
|
await session.send(testData)
|
||||||
await session.close(reason = closeReason)
|
await session.close(reason = closeReason)
|
||||||
|
|
||||||
test "invalid UTF-8 sequence":
|
asyncTest "invalid UTF-8 sequence":
|
||||||
let testData = "hello world\xc0\xaf"
|
let testData = "hello world\xc0\xaf"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == "/ws"
|
check request.uri.path == "/ws"
|
||||||
@ -183,7 +183,7 @@ suite "UTF-8 validator in action":
|
|||||||
expect WSInvalidUTF8:
|
expect WSInvalidUTF8:
|
||||||
let data = await session.recvMsg()
|
let data = await session.recvMsg()
|
||||||
|
|
||||||
test "invalid UTF-8 sequence close code":
|
asyncTest "invalid UTF-8 sequence close code":
|
||||||
let closeReason = "i want to close\xc0\xaf"
|
let closeReason = "i want to close\xc0\xaf"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == "/ws"
|
check request.uri.path == "/ws"
|
||||||
|
@ -10,10 +10,9 @@
|
|||||||
import std/strutils
|
import std/strutils
|
||||||
import pkg/[
|
import pkg/[
|
||||||
httputils,
|
httputils,
|
||||||
chronos,
|
chronos/unittest2/asynctests,
|
||||||
chronicles,
|
chronicles,
|
||||||
stew/byteutils,
|
stew/byteutils]
|
||||||
asynctest/unittest2]
|
|
||||||
|
|
||||||
import ../websock/websock
|
import ../websock/websock
|
||||||
|
|
||||||
@ -22,15 +21,16 @@ import ./helpers
|
|||||||
let address = initTAddress("127.0.0.1:8888")
|
let address = initTAddress("127.0.0.1:8888")
|
||||||
|
|
||||||
suite "Test handshake":
|
suite "Test handshake":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Should not select incorrect protocol":
|
asyncTest "Should not select incorrect protocol":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let
|
let
|
||||||
@ -50,7 +50,7 @@ suite "Test handshake":
|
|||||||
check session.proto == ""
|
check session.proto == ""
|
||||||
await session.stream.closeWait()
|
await session.stream.closeWait()
|
||||||
|
|
||||||
test "Test for incorrect version":
|
asyncTest "Test for incorrect version":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["ws"])
|
let server = WSServer.new(protos = ["ws"])
|
||||||
@ -68,7 +68,7 @@ suite "Test handshake":
|
|||||||
address = initTAddress("127.0.0.1:8888"),
|
address = initTAddress("127.0.0.1:8888"),
|
||||||
version = 14)
|
version = 14)
|
||||||
|
|
||||||
test "Test for client headers":
|
asyncTest "Test for client headers":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
check request.headers.getString("Connection").toUpperAscii() ==
|
check request.headers.getString("Connection").toUpperAscii() ==
|
||||||
@ -90,7 +90,7 @@ suite "Test handshake":
|
|||||||
expect WSFailedUpgradeError:
|
expect WSFailedUpgradeError:
|
||||||
discard await connectClient()
|
discard await connectClient()
|
||||||
|
|
||||||
test "Test for incorrect scheme":
|
asyncTest "Test for incorrect scheme":
|
||||||
let uri = "wx://127.0.0.1:8888/ws"
|
let uri = "wx://127.0.0.1:8888/ws"
|
||||||
expect WSWrongUriSchemeError:
|
expect WSWrongUriSchemeError:
|
||||||
discard await WebSocket.connect(
|
discard await WebSocket.connect(
|
||||||
@ -98,14 +98,16 @@ suite "Test handshake":
|
|||||||
protocols = @["proto"])
|
protocols = @["proto"])
|
||||||
|
|
||||||
suite "Test transmission":
|
suite "Test transmission":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Server - test reading simple frame":
|
asyncTest "Server - asyncTest reading simple frame":
|
||||||
let testString = "Hello!"
|
let testString = "Hello!"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -126,7 +128,7 @@ suite "Test transmission":
|
|||||||
await session.send(testString)
|
await session.send(testString)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send text message message with payload of length 65535":
|
asyncTest "Send text message message with payload of length 65535":
|
||||||
let testString = rndStr(65535)
|
let testString = rndStr(65535)
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -145,7 +147,7 @@ suite "Test transmission":
|
|||||||
await session.send(testString)
|
await session.send(testString)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Client - test reading simple frame":
|
asyncTest "Client - asyncTest reading simple frame":
|
||||||
let testString = "Hello!"
|
let testString = "Hello!"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -166,15 +168,16 @@ suite "Test transmission":
|
|||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
|
|
||||||
suite "Test ping-pong":
|
suite "Test ping-pong":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Server - test ping-pong control messages":
|
asyncTest "Server - asyncTest ping-pong control messages":
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -204,7 +207,7 @@ suite "Test ping-pong":
|
|||||||
ping
|
ping
|
||||||
pong
|
pong
|
||||||
|
|
||||||
test "Client - test ping-pong control messages":
|
asyncTest "Client - asyncTest ping-pong control messages":
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -234,7 +237,7 @@ suite "Test ping-pong":
|
|||||||
await session.ping()
|
await session.ping()
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send ping with small text payload":
|
asyncTest "Send ping with small text payload":
|
||||||
let testData = toBytes("Hello, world!")
|
let testData = toBytes("Hello, world!")
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
@ -265,7 +268,7 @@ suite "Test ping-pong":
|
|||||||
ping
|
ping
|
||||||
pong
|
pong
|
||||||
|
|
||||||
test "Test ping payload message length":
|
asyncTest "Test ping payload message length":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["proto"])
|
let server = WSServer.new(protos = ["proto"])
|
||||||
@ -287,15 +290,16 @@ suite "Test ping-pong":
|
|||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
suite "Test framing":
|
suite "Test framing":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "should split message into frames":
|
asyncTest "should split message into frames":
|
||||||
let testString = "1234567890"
|
let testString = "1234567890"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -328,7 +332,7 @@ suite "Test framing":
|
|||||||
await session.send(testString)
|
await session.send(testString)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "should fail to read past max message size":
|
asyncTest "should fail to read past max message size":
|
||||||
let testString = "1234567890"
|
let testString = "1234567890"
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -349,15 +353,16 @@ suite "Test framing":
|
|||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
|
|
||||||
suite "Test Closing":
|
suite "Test Closing":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Server closing":
|
asyncTest "Server closing":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["proto"])
|
let server = WSServer.new(protos = ["proto"])
|
||||||
@ -373,7 +378,7 @@ suite "Test Closing":
|
|||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
check session.readyState == ReadyState.Closed
|
check session.readyState == ReadyState.Closed
|
||||||
|
|
||||||
test "Server closing with status":
|
asyncTest "Server closing with status":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
|
|
||||||
@ -415,7 +420,7 @@ suite "Test Closing":
|
|||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
check session.readyState == ReadyState.Closed
|
check session.readyState == ReadyState.Closed
|
||||||
|
|
||||||
test "Client closing":
|
asyncTest "Client closing":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["proto"])
|
let server = WSServer.new(protos = ["proto"])
|
||||||
@ -430,7 +435,7 @@ suite "Test Closing":
|
|||||||
let session = await connectClient()
|
let session = await connectClient()
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Client closing with status":
|
asyncTest "Client closing with status":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
proc closeServer(status: StatusCodes, reason: string): CloseResult{.gcsafe,
|
proc closeServer(status: StatusCodes, reason: string): CloseResult{.gcsafe,
|
||||||
@ -470,7 +475,7 @@ suite "Test Closing":
|
|||||||
await session.close()
|
await session.close()
|
||||||
check session.readyState == ReadyState.Closed
|
check session.readyState == ReadyState.Closed
|
||||||
|
|
||||||
test "Mutual closing":
|
asyncTest "Mutual closing":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["proto"])
|
let server = WSServer.new(protos = ["proto"])
|
||||||
@ -487,7 +492,7 @@ suite "Test Closing":
|
|||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
check session.readyState == ReadyState.Closed
|
check session.readyState == ReadyState.Closed
|
||||||
|
|
||||||
test "Server closing with valid close code 3999":
|
asyncTest "Server closing with valid close code 3999":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
let server = WSServer.new(protos = ["proto"])
|
let server = WSServer.new(protos = ["proto"])
|
||||||
@ -514,7 +519,7 @@ suite "Test Closing":
|
|||||||
|
|
||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
|
|
||||||
test "Client closing with valid close code 3999":
|
asyncTest "Client closing with valid close code 3999":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
proc closeServer(status: StatusCodes, reason: string): CloseResult{.gcsafe,
|
proc closeServer(status: StatusCodes, reason: string): CloseResult{.gcsafe,
|
||||||
@ -541,7 +546,7 @@ suite "Test Closing":
|
|||||||
let session = await connectClient()
|
let session = await connectClient()
|
||||||
await session.close(code = StatusCodes(3999))
|
await session.close(code = StatusCodes(3999))
|
||||||
|
|
||||||
test "Server closing with Payload of length 2":
|
asyncTest "Server closing with Payload of length 2":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
|
|
||||||
@ -559,7 +564,7 @@ suite "Test Closing":
|
|||||||
let session = await connectClient()
|
let session = await connectClient()
|
||||||
await waitForClose(session)
|
await waitForClose(session)
|
||||||
|
|
||||||
test "Client closing with Payload of length 2":
|
asyncTest "Client closing with Payload of length 2":
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
|
|
||||||
@ -579,14 +584,16 @@ suite "Test Closing":
|
|||||||
await session.close(reason = "HH")
|
await session.close(reason = "HH")
|
||||||
|
|
||||||
suite "Test Payload":
|
suite "Test Payload":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Test payload of length 0":
|
asyncTest "Test payload of length 0":
|
||||||
let emptyStr = ""
|
let emptyStr = ""
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -617,7 +624,7 @@ suite "Test Payload":
|
|||||||
|
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Test multiple payloads of length 0":
|
asyncTest "Test multiple payloads of length 0":
|
||||||
let emptyStr = ""
|
let emptyStr = ""
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -655,7 +662,7 @@ suite "Test Payload":
|
|||||||
|
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send two fragments":
|
asyncTest "Send two fragments":
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
let testString = "1234567890"
|
let testString = "1234567890"
|
||||||
let msg = toBytes(testString)
|
let msg = toBytes(testString)
|
||||||
@ -709,7 +716,7 @@ suite "Test Payload":
|
|||||||
|
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send two fragments with a ping with payload in-between":
|
asyncTest "Send two fragments with a ping with payload in-between":
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
let testString = "1234567890"
|
let testString = "1234567890"
|
||||||
let msg = toBytes(testString)
|
let msg = toBytes(testString)
|
||||||
@ -774,7 +781,7 @@ suite "Test Payload":
|
|||||||
ping
|
ping
|
||||||
pong
|
pong
|
||||||
|
|
||||||
test "Send text message with multiple frames":
|
asyncTest "Send text message with multiple frames":
|
||||||
const FrameSize = 3000
|
const FrameSize = 3000
|
||||||
let testData = rndStr(FrameSize * 3)
|
let testData = rndStr(FrameSize * 3)
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
@ -807,14 +814,16 @@ suite "Test Payload":
|
|||||||
ws.binary == false
|
ws.binary == false
|
||||||
|
|
||||||
suite "Test Binary message with Payload":
|
suite "Test Binary message with Payload":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
|
if server != nil:
|
||||||
server.stop()
|
server.stop()
|
||||||
await server.closeWait()
|
waitFor server.closeWait()
|
||||||
|
|
||||||
test "Test binary message with single empty payload message":
|
asyncTest "Test binary message with single empty payload message":
|
||||||
let emptyData = newSeq[byte](0)
|
let emptyData = newSeq[byte](0)
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -838,7 +847,7 @@ suite "Test Binary message with Payload":
|
|||||||
await session.send(emptyData, Opcode.Binary)
|
await session.send(emptyData, Opcode.Binary)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Test binary message with multiple empty payload":
|
asyncTest "Test binary message with multiple empty payload":
|
||||||
let emptyData = newSeq[byte](0)
|
let emptyData = newSeq[byte](0)
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
check request.uri.path == WSPath
|
check request.uri.path == WSPath
|
||||||
@ -865,7 +874,7 @@ suite "Test Binary message with Payload":
|
|||||||
await session.send(emptyData, Opcode.Binary)
|
await session.send(emptyData, Opcode.Binary)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send binary data with small text payload":
|
asyncTest "Send binary data with small text payload":
|
||||||
let testData = rndBin(10)
|
let testData = rndBin(10)
|
||||||
trace "testData", testData = testData
|
trace "testData", testData = testData
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
@ -900,7 +909,7 @@ suite "Test Binary message with Payload":
|
|||||||
await session.send(testData, Opcode.Binary)
|
await session.send(testData, Opcode.Binary)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send binary message message with payload of length 125":
|
asyncTest "Send binary message message with payload of length 125":
|
||||||
let testData = rndBin(125)
|
let testData = rndBin(125)
|
||||||
var ping, pong = false
|
var ping, pong = false
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
@ -934,7 +943,7 @@ suite "Test Binary message with Payload":
|
|||||||
await session.send(testData, Opcode.Binary)
|
await session.send(testData, Opcode.Binary)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "Send binary message with multiple frames":
|
asyncTest "Send binary message with multiple frames":
|
||||||
const FrameSize = 3000
|
const FrameSize = 3000
|
||||||
let testData = rndBin(FrameSize * 3)
|
let testData = rndBin(FrameSize * 3)
|
||||||
proc handle(request: HttpRequest) {.async.} =
|
proc handle(request: HttpRequest) {.async.} =
|
||||||
@ -974,13 +983,10 @@ suite "Test Binary message with Payload":
|
|||||||
ws.binary == true
|
ws.binary == true
|
||||||
|
|
||||||
suite "Partial frames":
|
suite "Partial frames":
|
||||||
|
setup:
|
||||||
var
|
var
|
||||||
server: HttpServer
|
server: HttpServer
|
||||||
|
|
||||||
teardown:
|
|
||||||
server.stop()
|
|
||||||
await server.closeWait()
|
|
||||||
|
|
||||||
proc lowLevelRecv(
|
proc lowLevelRecv(
|
||||||
senderFrameSize, receiverFrameSize, readChunkSize: int) {.async.} =
|
senderFrameSize, receiverFrameSize, readChunkSize: int) {.async.} =
|
||||||
|
|
||||||
@ -1022,14 +1028,19 @@ suite "Partial frames":
|
|||||||
await session.send(howMuchWood)
|
await session.send(howMuchWood)
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
test "read in chunks less than sender frameSize":
|
teardown:
|
||||||
|
if server != nil:
|
||||||
|
server.stop()
|
||||||
|
waitFor server.closeWait()
|
||||||
|
|
||||||
|
asyncTest "read in chunks less than sender frameSize":
|
||||||
await lowLevelRecv(7, 7, 5)
|
await lowLevelRecv(7, 7, 5)
|
||||||
|
|
||||||
test "read in chunks greater than sender frameSize":
|
asyncTest "read in chunks greater than sender frameSize":
|
||||||
await lowLevelRecv(3, 7, 5)
|
await lowLevelRecv(3, 7, 5)
|
||||||
|
|
||||||
test "sender frameSize greater than receiver":
|
asyncTest "sender frameSize greater than receiver":
|
||||||
await lowLevelRecv(7, 5, 5)
|
await lowLevelRecv(7, 5, 5)
|
||||||
|
|
||||||
test "receiver frameSize greater than sender":
|
asyncTest "receiver frameSize greater than sender":
|
||||||
await lowLevelRecv(7, 10, 5)
|
await lowLevelRecv(7, 10, 5)
|
||||||
|
@ -19,28 +19,31 @@ requires "chronos >= 3.0.0"
|
|||||||
requires "httputils >= 0.2.0"
|
requires "httputils >= 0.2.0"
|
||||||
requires "chronicles >= 0.10.2"
|
requires "chronicles >= 0.10.2"
|
||||||
requires "stew >= 0.1.0"
|
requires "stew >= 0.1.0"
|
||||||
requires "asynctest >= 0.3.0 & < 0.4.0"
|
|
||||||
requires "nimcrypto"
|
requires "nimcrypto"
|
||||||
requires "bearssl"
|
requires "bearssl"
|
||||||
requires "zlib"
|
requires "zlib"
|
||||||
|
|
||||||
task test, "run tests":
|
task test, "run tests":
|
||||||
let envNimflags = getEnv("NIMFLAGS")
|
let
|
||||||
|
envNimflags = getEnv("NIMFLAGS")
|
||||||
|
nimFlags = envNimFlags &
|
||||||
|
" --verbosity:0 --hints:off --hint:Name:on " &
|
||||||
|
"--styleCheck:usages --styleCheck:hint -d:chronosStrictException"
|
||||||
|
|
||||||
# dont't need to run it, only want to test if it is compileable
|
# dont't need to run it, only want to test if it is compileable
|
||||||
exec "nim c -c " & envNimflags & " --verbosity:0 --hints:off --hint:Name:on -d:chronicles_log_level=TRACE -d:chronicles_sinks:json --styleCheck:usages --styleCheck:hint ./tests/testcommon"
|
exec "nim c -c " & nimFlags & " -d:chronicles_log_level=TRACE -d:chronicles_sinks:json --styleCheck:usages --styleCheck:hint ./tests/all_tests"
|
||||||
|
|
||||||
exec "nim --hints:off c -r " & envNimflags & " --opt:speed -d:debug --verbosity:0 --hints:off -d:chronicles_log_level=INFO ./tests/testcommon.nim"
|
exec "nim c -r " & nimFlags & " --opt:speed -d:debug -d:chronicles_log_level=INFO ./tests/all_tests.nim"
|
||||||
rmFile "./tests/testcommon"
|
rmFile "./tests/all_tests"
|
||||||
|
|
||||||
exec "nim --hints:off c -r " & envNimflags & " --opt:speed -d:debug --verbosity:0 --hints:off -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
exec "nim c -r " & nimFlags & " --opt:speed -d:debug -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
||||||
rmFile "./tests/testwebsockets"
|
rmFile "./tests/testwebsockets"
|
||||||
|
|
||||||
exec "nim --hints:off -d:secure c -r " & envNimflags & " --opt:speed -d:debug --verbosity:0 --hints:off -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
exec "nim -d:secure c -r " & nimFlags & " --opt:speed -d:debug -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
||||||
rmFile "./tests/testwebsockets"
|
rmFile "./tests/testwebsockets"
|
||||||
|
|
||||||
exec "nim --hints:off -d:accepts c -r " & envNimflags & " --opt:speed -d:debug --verbosity:0 --hints:off -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
exec "nim -d:accepts c -r " & nimFlags & " --opt:speed -d:debug -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
||||||
rmFile "./tests/testwebsockets"
|
rmFile "./tests/testwebsockets"
|
||||||
|
|
||||||
exec "nim --hints:off -d:secure -d:accepts c -r " & envNimflags & " --opt:speed -d:debug --verbosity:0 --hints:off -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
exec "nim -d:secure -d:accepts c -r " & nimFlags & " --opt:speed -d:debug -d:chronicles_log_level=INFO ./tests/testwebsockets.nim"
|
||||||
rmFile "./tests/testwebsockets"
|
rmFile "./tests/testwebsockets"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
## This file may not be copied, modified, or distributed except according to
|
## This file may not be copied, modified, or distributed except according to
|
||||||
## those terms.
|
## those terms.
|
||||||
|
|
||||||
import bearssl/[hash, rand]
|
import bearssl/[rand]
|
||||||
export rand
|
export rand
|
||||||
|
|
||||||
## Random helpers: similar as in stdlib, but with HmacDrbgContext rng
|
## Random helpers: similar as in stdlib, but with HmacDrbgContext rng
|
||||||
|
Loading…
x
Reference in New Issue
Block a user