diff --git a/codex/proof/slotblocks.nim b/codex/proof/slotblocks.nim new file mode 100644 index 00000000..9f580671 --- /dev/null +++ b/codex/proof/slotblocks.nim @@ -0,0 +1,17 @@ +import std/bitops +import std/sugar + +import pkg/chronos +import pkg/libp2p +import pkg/questionable +import pkg/questionable/results + +import ../contracts/requests +import ../stores/blockstore + +proc getTreeCidForSlot*(slot: Slot, blockstore: BlockStore): Future[?!Cid] {.async.} = + raiseAssert("a") + +proc getSlotBlock*(slot: Slot, blockstore: BlockStore, treeCid: Cid, slotBlockIndex: int): Future[?!Block] {.async.} = + raiseAssert("a") + diff --git a/tests/codex/proof/testslotblocks.nim b/tests/codex/proof/testslotblocks.nim new file mode 100644 index 00000000..ce079f7e --- /dev/null +++ b/tests/codex/proof/testslotblocks.nim @@ -0,0 +1,77 @@ +import std/os +import std/strutils +import std/sequtils +import std/sugar + +import pkg/questionable +import pkg/questionable/results +import pkg/constantine/math/arithmetic +import pkg/poseidon2/types +import pkg/poseidon2 +import pkg/chronos +import pkg/asynctest +import pkg/stew/byteutils +import pkg/stew/endians2 +import pkg/datastore +import pkg/codex/rng +import pkg/codex/stores/cachestore +import pkg/codex/chunker +import pkg/codex/stores +import pkg/codex/blocktype as bt +import pkg/codex/clock +import pkg/codex/utils/asynciter +import pkg/codex/contracts/requests +import pkg/codex/contracts + +import pkg/codex/proof/slotblocks + +import ../helpers +import ../examples + +let + bytesPerBlock = 64 * 1024 + numberOfSlotBlocks = 16 + slotIndex = 3 + + +asyncchecksuite "Test slotblocks": + let + localStore = CacheStore.new() + manifest = Manifest.new( + treeCid = Cid.example, + blockSize = 1.MiBs, + datasetSize = 100.MiBs) + manifestBlock = bt.Block.new(manifest.encode().tryGet(), codec = DagPBCodec).tryGet() + slot = Slot( + request: StorageRequest( + ask: StorageAsk( + slotSize: u256(bytesPerBlock * numberOfSlotBlocks) + ), + content: StorageContent( + cid: $manifestBlock.cid + ), + ), + slotIndex: u256(slotIndex) + ) + + # let chunker = RandomChunker.new(rng.Rng.instance(), + # size = bytesPerBlock * numberOfSlotBlocks, + # chunkSize = bytesPerBlock) + + # var slotBlocks: seq[bt.Block] + + # proc createSlotBlocks(): Future[void] {.async.} = + # while true: + # let chunk = await chunker.getBytes() + # if chunk.len <= 0: + # break + # slotBlocks.add(bt.Block.new(chunk).tryGet()) + + # setup: + # await createSlotBlocks() + + test "Can get tree root for slot": + let cid = (await getTreeCidForSlot(slot, localStore)).tryGet() + + check: + cid == manifest.treeCid diff --git a/tests/codex/testproof.nim b/tests/codex/testproof.nim index e6c9b36a..3b562fea 100644 --- a/tests/codex/testproof.nim +++ b/tests/codex/testproof.nim @@ -1,3 +1,4 @@ import ./proof/testdatasampler +import ./proof/testslotblocks {.warning[UnusedImport]: off.}