import std/monotimes import os import pkg/chronos import pkg/questionable import pkg/questionable/results import pkg/libp2p/cid import pkg/datastore import pkg/codex/rng import pkg/codex/chunker import pkg/codex/blocktype as bt import ../leveldb/leveldbds import ../rocksdb/rocksdbds import ./asynctest import ./checktest import ./helpers import ./codex/helpers proc setGetTest(store: DataStore) {.async.} = let chunker = RandomChunker.new(Rng.instance(), size = 4096000, chunkSize = 256) var blocks: seq[bt.Block] while true: let chunk = await chunker.getBytes() if chunk.len <= 0: break blocks.add(bt.Block.new(chunk).tryGet()) for blk in blocks: let key = Key.init($blk.cid).tryGet() discard (await store.put(key, blk.data)) let bytes = (await store.get(key)).tryGet() check: bytes == blk.data proc doTest(name: string, store: DataStore) {.async.} = let chunker = RandomChunker.new(Rng.instance(), size = 4096000, chunkSize = 256) var blocks: seq[bt.Block] while true: let chunk = await chunker.getBytes() if chunk.len <= 0: break blocks.add(bt.Block.new(chunk).tryGet()) let t0 = getMonoTime() for blk in blocks: let key = Key.init($blk.cid).tryGet() discard (await store.put(key, blk.data)) let t1 = getMonoTime() var read: seq[seq[byte]] for blk in blocks: let key = Key.init($blk.cid).tryGet() let bytes = (await store.get(key)).tryGet() read.add(bytes) let t2 = getMonoTime() setGetTest(store) let t3 = getMonoTime() for i in 0..