summaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests/util
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-02-17 16:32:16 +0100
committerTor Egge <Tor.Egge@online.no>2022-02-17 16:32:16 +0100
commitdd6a7dc8deb5290ff939118eebf740c71942d880 (patch)
treea3626da51edb8e1fd8e9a0b73fe94d505e86a772 /vespalib/src/tests/util
parent46881598ff4e1362bbfe58c6a6ef1dc1de8b4f76 (diff)
Handle 64K page size in alloc unit test and rcuvector unit test.
Diffstat (limited to 'vespalib/src/tests/util')
-rw-r--r--vespalib/src/tests/util/rcuvector/rcuvector_test.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp b/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
index 14802a60ff1..e36d7da7b6a 100644
--- a/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
+++ b/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
@@ -3,6 +3,7 @@
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/test/memory_allocator_observer.h>
#include <vespa/vespalib/util/rcuvector.h>
+#include <vespa/vespalib/util/round_up_to_page_size.h>
#include <vespa/vespalib/util/size_literals.h>
using namespace vespalib;
@@ -240,15 +241,20 @@ TEST("test shrink() with buffer copying")
struct ShrinkFixture {
GenerationHolder g;
+ size_t initial_capacity;
+ size_t initial_size;
RcuVectorBase<int> vec;
int *oldPtr;
- ShrinkFixture() : g(), vec(4_Ki, 50, 0, g, alloc::Alloc::allocMMap()), oldPtr()
+ ShrinkFixture() : g(),
+ initial_capacity(4 * page_ints()),
+ initial_size(initial_capacity / 1024 * 1000),
+ vec(initial_capacity, 50, 0, g, alloc::Alloc::allocMMap()), oldPtr()
{
- for (size_t i = 0; i < 4000; ++i) {
+ for (size_t i = 0; i < initial_size; ++i) {
vec.push_back(7);
}
- EXPECT_EQUAL(4000u, vec.size());
- EXPECT_EQUAL(4_Ki, vec.capacity());
+ EXPECT_EQUAL(initial_size, vec.size());
+ EXPECT_EQUAL(initial_capacity, vec.capacity());
assertEmptyHoldList();
oldPtr = &vec[0];
}
@@ -258,22 +264,24 @@ struct ShrinkFixture {
void assertEmptyHoldList() {
EXPECT_EQUAL(0u, g.getHeldBytes());
}
+ static size_t page_ints() { return round_up_to_page_size(1) / sizeof(int); }
};
TEST_F("require that shrink() does not increase allocated memory", ShrinkFixture)
{
- f.vec.shrink(2732);
- EXPECT_EQUAL(2732u, f.vec.size());
- EXPECT_EQUAL(4_Ki, f.vec.capacity());
+ size_t shrink_size = f.initial_capacity * 2 / 3 + 2;
+ f.vec.shrink(shrink_size);
+ EXPECT_EQUAL(shrink_size, f.vec.size());
+ EXPECT_EQUAL(f.initial_capacity, f.vec.capacity());
TEST_DO(f.assertOldEqualNewBuffer());
TEST_DO(f.assertEmptyHoldList());
}
TEST_F("require that shrink() can shrink mmap allocation", ShrinkFixture)
{
- f.vec.shrink(2048);
- EXPECT_EQUAL(2048u, f.vec.size());
- EXPECT_EQUAL(3072u, f.vec.capacity());
+ f.vec.shrink(2 * f.page_ints());
+ EXPECT_EQUAL(2 * f.page_ints(), f.vec.size());
+ EXPECT_EQUAL(3 * f.page_ints(), f.vec.capacity());
TEST_DO(f.assertOldEqualNewBuffer());
TEST_DO(f.assertEmptyHoldList());
}