aboutsummaryrefslogtreecommitdiff
path: root/zenstore/gc.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-03-11 23:34:43 +0100
committerDan Engelbrecht <[email protected]>2022-03-31 11:28:31 +0200
commitf2074aa777decc5104b548b3a1dbe44434bc177f (patch)
treea1685a9bf14a2a1045653ead5e215505269e1c16 /zenstore/gc.cpp
parentOverview of CasContainerStrategy::CollectGarbage implementation (diff)
downloadzen-f2074aa777decc5104b548b3a1dbe44434bc177f.tar.xz
zen-f2074aa777decc5104b548b3a1dbe44434bc177f.zip
Fix insert offset when moving last chunk
Diffstat (limited to 'zenstore/gc.cpp')
-rw-r--r--zenstore/gc.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/zenstore/gc.cpp b/zenstore/gc.cpp
index b685200bc..8a9fceb65 100644
--- a/zenstore/gc.cpp
+++ b/zenstore/gc.cpp
@@ -661,6 +661,8 @@ TEST_CASE("gc.compact")
CasStore->InsertChunk(Chunks[7], ChunkHashes[7]);
CasStore->InsertChunk(Chunks[8], ChunkHashes[8]);
+ auto InitialSize = CasStore->TotalSize();
+
// Keep first and last
{
GcContext GcCtx;
@@ -790,8 +792,23 @@ TEST_CASE("gc.compact")
CasStore->InsertChunk(Chunks[1], ChunkHashes[1]);
CasStore->InsertChunk(Chunks[2], ChunkHashes[2]);
CasStore->InsertChunk(Chunks[3], ChunkHashes[3]);
+ CasStore->InsertChunk(Chunks[4], ChunkHashes[4]);
CasStore->InsertChunk(Chunks[5], ChunkHashes[5]);
}
+
+ // Verify that we nicely appended blocks even after all GC operations
+ CHECK(ChunkHashes[0] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[0])));
+ CHECK(ChunkHashes[1] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[1])));
+ CHECK(ChunkHashes[2] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[2])));
+ CHECK(ChunkHashes[3] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[3])));
+ CHECK(ChunkHashes[4] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[4])));
+ CHECK(ChunkHashes[5] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[5])));
+ CHECK(ChunkHashes[6] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[6])));
+ CHECK(ChunkHashes[7] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[7])));
+ CHECK(ChunkHashes[8] == IoHash::HashBuffer(CasStore->FindChunk(ChunkHashes[8])));
+
+ auto FinalSize = CasStore->TotalSize();
+ CHECK(InitialSize.TinySize == FinalSize.TinySize);
}
#endif