Skip to content

Commit

Permalink
Iterate on nda_mem test fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Wentzell committed Sep 27, 2024
1 parent a7a349b commit 168570b
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions test/c++/nda_mem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,16 +301,20 @@ TEST(NDA, MemoryMultiBucketAllocator) {
bucket2[0] = allo.allocate_zero(chunksize);
EXPECT_EQ(allo.buckets().size(), 2);
EXPECT_TRUE(allo.owns(bucket2[0]));
EXPECT_TRUE(allo.buckets()[0].owns(bucket2[0]) != allo.buckets()[1].owns(bucket2[0]));
// The new bucket may be first inside allo.buckets(),
// as it respects memory ordering. Let's get the indeces
std::size_t first_bucket_idx = allo.buckets()[1].owns(bucket1[0]);
std::size_t second_bucket_idx = allo.buckets()[1].owns(bucket2[0]);
EXPECT_TRUE(allo.buckets()[first_bucket_idx].is_full());
EXPECT_FALSE(allo.buckets()[first_bucket_idx].owns(bucket2[0]));
EXPECT_TRUE(allo.buckets()[second_bucket_idx].owns(bucket2[0]));

// deallocate and reallocate in the 1st bucket
std::size_t idx = 0;
if (allo.buckets()[1].owns(bucket1[20])) idx = 1;
allo.deallocate(bucket1[20]);
EXPECT_FALSE(allo.buckets()[idx].is_full());
EXPECT_FALSE(allo.buckets()[first_bucket_idx].is_full());
auto mb_realloc = allo.allocate_zero(chunksize);
EXPECT_TRUE(allo.buckets()[idx].owns(mb_realloc));
EXPECT_TRUE(allo.buckets()[idx].is_full());
EXPECT_TRUE(allo.buckets()[first_bucket_idx].owns(mb_realloc));
EXPECT_TRUE(allo.buckets()[first_bucket_idx].is_full());

// erase 2nd bucket
allo.deallocate(bucket2[0]);
Expand Down

0 comments on commit 168570b

Please sign in to comment.