summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-06-04 20:44:40 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-06-04 20:44:40 -0400
commit54c3fbaaf3e10c4b9aa15f3d32864b0ebfc06eee (patch)
tree87aee2f8f4bbb0b32c55e63b5dcad5a0e4a8b6cd
parent15518175c10b9bf18b21dac0a5b3d6472b525968 (diff)
pkmem: add test for growing block_capacity
-rw-r--r--test/pkmem.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/pkmem.c b/test/pkmem.c
index 5ec2643..ad95899 100644
--- a/test/pkmem.c
+++ b/test/pkmem.c
@@ -73,5 +73,45 @@ int main(int argc, char *argv[])
teardown();
}
+ // expand buckets
+ {
+ spinup_w_instr();
+
+ struct pk_memblock *blk;
+
+ for (size_t i = 0; i < 16; ++i) {
+ pk_new_bkt(7, 8, mt.bkt1);
+ }
+
+ blk = mt.bkt1->blocks;
+
+ if (mt.bkt1->alloc_count != 16) exit(1);
+ if (mt.bkt1->head != (8*16)-1) exit(1);
+ if (mt.bkt1->block_head_r != 15) exit(1);
+ if (mt.bkt1->block_capacity != 16) exit(1);
+ if (mt.bkt1->blocks != blk) exit(1);
+
+ pk_new_bkt(7, 8, mt.bkt1);
+
+ if (mt.bkt1->alloc_count != 17) exit(1);
+ if (mt.bkt1->head != (8*17)-1) exit(1);
+ if (mt.bkt1->block_head_r != 16) exit(1);
+ if (mt.bkt1->block_capacity != 17) exit(1);
+ if (mt.bkt1->blocks == blk) exit(1);
+
+ blk = mt.bkt1->blocks;
+
+ pk_new_bkt(7, 8, mt.bkt1);
+
+ if (mt.bkt1->alloc_count != 18) exit(1);
+ if (mt.bkt1->head != (8*18)-1) exit(1);
+ if (mt.bkt1->block_head_r != 17) exit(1);
+ if (mt.bkt1->block_capacity != 18) exit(1);
+ if (mt.bkt1->blocks == blk) exit(1);
+
+ PK_LOGV_INF("%s: %s\n", __FILE__, "handles block growth");
+ teardown();
+ }
+
return 0;
}