nwaku/tests/common/test_parse_size.nim
Ivan FB ed09074cc3
chore: message.nim - set max message size to 150KiB according to spec (#2298)
* message.nim: set max message size to 150KiB according to spec

Using KiB instead of KB because that seems more aligned with
the actual default defined in nim-libp2p (1024 * 1024)

Spec details: https://rfc.vac.dev/spec/64/#message-size

* test_protocol.nim: align test to current WakuMessage limit
* test_waku_client.nim: adapt test to MaxWakuMessageSize change
* make maxMessageSize configurable for wakunode2
* wakunode2 app now accepts max-num-bytes-msg-size with KiB, KB, or B units
* testlib/wakunode.nim: set maxMessageSize: "1024 KiB"
* test_waku_client.nim: remove duplicate check in "Valid Payload Sizes"
* set DefaultMaxWakuMessageSizeStr as the only source of truth
* external_config.nim: rename max-num-bytes-msg-size -> max-msg-size
2024-01-03 13:11:50 +01:00

107 lines
3.7 KiB
Nim

{.used.}
import
testutils/unittests,
stew/results
import
../../waku/common/utils/parse_size_units
suite "Size serialization test":
test "parse normal sizes":
var sizeInBytesRes = parseMsgSize("15 KiB")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 15360
sizeInBytesRes = parseMsgSize(" 1048576 B")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1048576
sizeInBytesRes = parseMsgSize("150 B")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 150
sizeInBytesRes = parseMsgSize("150 b")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 150
sizeInBytesRes = parseMsgSize("150b")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 150
sizeInBytesRes = parseMsgSize("1024kib")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1048576
sizeInBytesRes = parseMsgSize("1024KiB")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1048576
sizeInBytesRes = parseMsgSize("1024KB")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1024000
sizeInBytesRes = parseMsgSize("1024kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1024000
sizeInBytesRes = parseMsgSize("1.5 kib")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1536
sizeInBytesRes = parseMsgSize("1,5 kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1500
sizeInBytesRes = parseMsgSize("0,5 kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 500
sizeInBytesRes = parseMsgSize("1.5 kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1500
sizeInBytesRes = parseMsgSize("0.5 kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 500
sizeInBytesRes = parseMsgSize(" 1.5 KB")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 1500
sizeInBytesRes = parseMsgSize(" 0.5 kb")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == 500
sizeInBytesRes = parseMsgSize(" 1024 kib")
assert sizeInBytesRes.isOk(), sizeInBytesRes.error
check sizeInBytesRes.get() == uint64(1024 * 1024)
test "parse wrong sizes":
var sizeInBytesRes = parseMsgSize("150K")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150 iB")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150 ib")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150 MB")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
## notice that we don't allow MB units explicitly. If someone want to set 1MiB, the
## s/he should use 1024 KiB
sizeInBytesRes = parseMsgSize("150 MiB")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150MiB")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150K")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("150 K")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"
sizeInBytesRes = parseMsgSize("15..0 KiB")
assert sizeInBytesRes.isErr(), "The size should be considered incorrect"