diff options
| author | Dan Engelbrecht <[email protected]> | 2023-11-06 15:55:39 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-06 15:55:39 +0100 |
| commit | 5295c9618cbae2bb937e188c072f66a77d793eb5 (patch) | |
| tree | 6aeca701b20af5745eb7924c901c9708c098199b /src/zenstore/compactcas.cpp | |
| parent | statsd for cas (#511) (diff) | |
| download | zen-5295c9618cbae2bb937e188c072f66a77d793eb5.tar.xz zen-5295c9618cbae2bb937e188c072f66a77d793eb5.zip | |
gc v2 tests (#512)
* set MaxBlockCount at init
* properly calculate total size
* basic blockstore compact blocks test
* correct detection of block swap
* Use one implementation for CreateRandomBlob
* reduce some data sets to increase speed of tests
* reduce test time
* rename BlockStoreCompactState::AddBlock -> BlockStoreCompactState::IncludeBlock
Diffstat (limited to 'src/zenstore/compactcas.cpp')
| -rw-r--r-- | src/zenstore/compactcas.cpp | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/src/zenstore/compactcas.cpp b/src/zenstore/compactcas.cpp index 655c0558d..de2800895 100644 --- a/src/zenstore/compactcas.cpp +++ b/src/zenstore/compactcas.cpp @@ -701,7 +701,7 @@ public: bool IsActiveWriteBlock = BlockSnapshotState.m_ActiveWriteBlocks.contains(BlockIndex); if (!IsActiveWriteBlock) { - CompactState.AddBlock(BlockIndex); + CompactState.IncludeBlock(BlockIndex); } ExpiredEntries.push_back(ExpiredEntry); } @@ -1099,24 +1099,6 @@ CasContainerStrategy::OpenContainer(bool IsNewStore) #if ZEN_WITH_TESTS -namespace { - static IoBuffer CreateRandomChunk(uint64_t Size) - { - static std::random_device rd; - static std::mt19937 g(rd()); - - std::vector<uint8_t> Values; - Values.resize(Size); - for (size_t Idx = 0; Idx < Size; ++Idx) - { - Values[Idx] = static_cast<uint8_t>(Idx); - } - std::shuffle(Values.begin(), Values.end(), g); - - return IoBufferBuilder::MakeCloneFromMemory(Values.data(), Values.size()); - } -} // namespace - TEST_CASE("compactcas.hex") { uint32_t Value; @@ -1233,7 +1215,7 @@ TEST_CASE("compactcas.compact.totalsize") for (int32_t Idx = 0; Idx < kChunkCount; ++Idx) { - IoBuffer Chunk = CreateRandomChunk(kChunkSize); + IoBuffer Chunk = CreateRandomBlob(kChunkSize); const IoHash Hash = HashBuffer(Chunk); CasStore::InsertResult InsertResult = Cas.InsertChunk(Chunk, Hash); ZEN_ASSERT(InsertResult.New); @@ -1272,7 +1254,7 @@ TEST_CASE("compactcas.gc.basic") CasContainerStrategy Cas(Gc); Cas.Initialize(TempDir.Path(), "cb", 65536, 1 << 4, true); - IoBuffer Chunk = CreateRandomChunk(128); + IoBuffer Chunk = CreateRandomBlob(128); IoHash ChunkHash = IoHash::HashBuffer(Chunk); const CasStore::InsertResult InsertResult = Cas.InsertChunk(Chunk, ChunkHash); @@ -1291,7 +1273,7 @@ TEST_CASE("compactcas.gc.removefile") { ScopedTemporaryDirectory TempDir; - IoBuffer Chunk = CreateRandomChunk(128); + IoBuffer Chunk = CreateRandomBlob(128); IoHash ChunkHash = IoHash::HashBuffer(Chunk); { GcManager Gc; @@ -1331,7 +1313,7 @@ TEST_CASE("compactcas.gc.compact") Chunks.reserve(9); for (uint64_t Size : ChunkSizes) { - Chunks.push_back(CreateRandomChunk(Size)); + Chunks.push_back(CreateRandomBlob(Size)); } std::vector<IoHash> ChunkHashes; @@ -1568,7 +1550,7 @@ TEST_CASE("compactcas.gc.deleteblockonopen") Chunks.reserve(20); for (uint64_t Size : ChunkSizes) { - Chunks.push_back(CreateRandomChunk(Size)); + Chunks.push_back(CreateRandomBlob(Size)); } std::vector<IoHash> ChunkHashes; @@ -1634,7 +1616,7 @@ TEST_CASE("compactcas.gc.handleopeniobuffer") Chunks.reserve(20); for (const uint64_t& Size : ChunkSizes) { - Chunks.push_back(CreateRandomChunk(Size)); + Chunks.push_back(CreateRandomBlob(Size)); } std::vector<IoHash> ChunkHashes; @@ -1686,7 +1668,7 @@ TEST_CASE("compactcas.threadedinsert") { while (true) { - IoBuffer Chunk = CreateRandomChunk(kChunkSize); + IoBuffer Chunk = CreateRandomBlob(kChunkSize); IoHash Hash = HashBuffer(Chunk); if (Chunks.contains(Hash)) { @@ -1755,7 +1737,7 @@ TEST_CASE("compactcas.threadedinsert") for (int32_t Idx = 0; Idx < kChunkCount; ++Idx) { - IoBuffer Chunk = CreateRandomChunk(kChunkSize); + IoBuffer Chunk = CreateRandomBlob(kChunkSize); IoHash Hash = HashBuffer(Chunk); NewChunks[Hash] = Chunk; GcChunkHashes.insert(Hash); |