mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-02-23 18:18:20 +00:00
* fix: createReservation lock (#825) * fix: createReservation lock * fix: additional locking places * fix: acquire lock * chore: feedback Co-authored-by: markspanbroek <mark@spanbroek.net> Signed-off-by: Adam Uhlíř <adam@uhlir.dev> * feat: withLock template and fixed tests * fix: use proc for MockReservations constructor * chore: feedback Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com> Signed-off-by: Adam Uhlíř <adam@uhlir.dev> * chore: feedback implementation --------- Signed-off-by: Adam Uhlíř <adam@uhlir.dev> Co-authored-by: markspanbroek <mark@spanbroek.net> Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com> * Block deletion with ref count & repostore refactor (#631) * Fix StoreStream so it doesn't return parity bytes (#838) * fix storestream so it doesn\'t return parity bits for protected/verifiable manifests * use Cid.example instead of creating a mock manually * Fix verifiable manifest initialization (#839) * fix verifiable manifest initialization * fix linearstrategy, use verifiableStrategy to select blocks for slots * check for both strategies in attribute inheritance test * ci: add verify_circuit=true to the releases (#840) * provisional fix so EC errors do not crash the node on download (#841) --------- Signed-off-by: Adam Uhlíř <adam@uhlir.dev> Co-authored-by: Adam Uhlíř <adam@uhlir.dev> Co-authored-by: markspanbroek <mark@spanbroek.net> Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com> Co-authored-by: Tomasz Bekas <tomasz.bekas@gmail.com> Co-authored-by: Giuliano Mega <giuliano.mega@gmail.com>
72 lines
1.8 KiB
Nim
72 lines
1.8 KiB
Nim
import std/unittest
|
|
import std/random
|
|
|
|
import pkg/stew/objects
|
|
import pkg/questionable
|
|
import pkg/questionable/results
|
|
|
|
import pkg/codex/clock
|
|
import pkg/codex/stores/repostore/types
|
|
import pkg/codex/stores/repostore/coders
|
|
|
|
import ../../helpers
|
|
|
|
checksuite "Test coders":
|
|
|
|
proc rand(T: type NBytes): T =
|
|
rand(Natural).NBytes
|
|
|
|
proc rand(E: type[enum]): E =
|
|
let ordinals = enumRangeInt64(E)
|
|
E(ordinals[rand(ordinals.len - 1)])
|
|
|
|
proc rand(T: type QuotaUsage): T =
|
|
QuotaUsage(
|
|
used: rand(NBytes),
|
|
reserved: rand(NBytes)
|
|
)
|
|
|
|
proc rand(T: type BlockMetadata): T =
|
|
BlockMetadata(
|
|
expiry: rand(SecondsSince1970),
|
|
size: rand(NBytes),
|
|
refCount: rand(Natural)
|
|
)
|
|
|
|
proc rand(T: type DeleteResult): T =
|
|
DeleteResult(
|
|
kind: rand(DeleteResultKind),
|
|
released: rand(NBytes)
|
|
)
|
|
|
|
proc rand(T: type StoreResult): T =
|
|
StoreResult(
|
|
kind: rand(StoreResultKind),
|
|
used: rand(NBytes)
|
|
)
|
|
|
|
test "Natural encode/decode":
|
|
for val in newSeqWith[Natural](100, rand(Natural)) & @[Natural.low, Natural.high]:
|
|
check:
|
|
success(val) == Natural.decode(encode(val))
|
|
|
|
test "QuotaUsage encode/decode":
|
|
for val in newSeqWith[QuotaUsage](100, rand(QuotaUsage)):
|
|
check:
|
|
success(val) == QuotaUsage.decode(encode(val))
|
|
|
|
test "BlockMetadata encode/decode":
|
|
for val in newSeqWith[BlockMetadata](100, rand(BlockMetadata)):
|
|
check:
|
|
success(val) == BlockMetadata.decode(encode(val))
|
|
|
|
test "DeleteResult encode/decode":
|
|
for val in newSeqWith[DeleteResult](100, rand(DeleteResult)):
|
|
check:
|
|
success(val) == DeleteResult.decode(encode(val))
|
|
|
|
test "StoreResult encode/decode":
|
|
for val in newSeqWith[StoreResult](100, rand(StoreResult)):
|
|
check:
|
|
success(val) == StoreResult.decode(encode(val))
|