summaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vespalib/src/tests/util/generationhandler/generationhandler_test.cpp')
-rw-r--r--vespalib/src/tests/util/generationhandler/generationhandler_test.cpp154
1 files changed, 67 insertions, 87 deletions
diff --git a/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp b/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
index f269fe729fa..00da752a749 100644
--- a/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
+++ b/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
@@ -1,157 +1,137 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/util/generationhandler.h>
#include <deque>
namespace vespalib {
-typedef GenerationHandler::Guard GenGuard;
+using GenGuard = GenerationHandler::Guard;
-class Test : public vespalib::TestApp {
-private:
- void requireThatGenerationCanBeIncreased();
- void requireThatReadersCanTakeGuards();
- void requireThatGuardsCanBeCopied();
- void requireThatTheFirstUsedGenerationIsCorrect();
- void requireThatGenerationCanGrowLarge();
-public:
- int Main() override;
+class GenerationHandlerTest : public ::testing::Test {
+protected:
+ GenerationHandler gh;
+ GenerationHandlerTest();
+ ~GenerationHandlerTest() override;
};
-void
-Test::requireThatGenerationCanBeIncreased()
+GenerationHandlerTest::GenerationHandlerTest()
+ : ::testing::Test(),
+ gh()
{
- GenerationHandler gh;
- EXPECT_EQUAL(0u, gh.getCurrentGeneration());
- EXPECT_EQUAL(0u, gh.getFirstUsedGeneration());
+}
+
+GenerationHandlerTest::~GenerationHandlerTest() = default;
+
+TEST_F(GenerationHandlerTest, require_that_generation_can_be_increased)
+{
+ EXPECT_EQ(0u, gh.getCurrentGeneration());
+ EXPECT_EQ(0u, gh.getFirstUsedGeneration());
gh.incGeneration();
- EXPECT_EQUAL(1u, gh.getCurrentGeneration());
- EXPECT_EQUAL(1u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(1u, gh.getCurrentGeneration());
+ EXPECT_EQ(1u, gh.getFirstUsedGeneration());
}
-void
-Test::requireThatReadersCanTakeGuards()
+TEST_F(GenerationHandlerTest, require_that_readers_can_take_guards)
{
- GenerationHandler gh;
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(0));
{
GenGuard g1 = gh.takeGuard();
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(0));
{
GenGuard g2 = gh.takeGuard();
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
gh.incGeneration();
{
GenGuard g3 = gh.takeGuard();
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(1));
- EXPECT_EQUAL(3u, gh.getGenerationRefCount());
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(3u, gh.getGenerationRefCount());
}
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
gh.incGeneration();
{
GenGuard g3 = gh.takeGuard();
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(2));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(2));
}
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(2));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(2));
}
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(2));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(2));
}
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(2));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(2));
}
-void
-Test::requireThatGuardsCanBeCopied()
+TEST_F(GenerationHandlerTest, require_that_guards_can_be_copied)
{
- GenerationHandler gh;
GenGuard g1 = gh.takeGuard();
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(0));
GenGuard g2(g1);
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
gh.incGeneration();
GenGuard g3 = gh.takeGuard();
- EXPECT_EQUAL(2u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(1u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(2u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(1u, gh.getGenerationRefCount(1));
g3 = g2;
- EXPECT_EQUAL(3u, gh.getGenerationRefCount(0));
- EXPECT_EQUAL(0u, gh.getGenerationRefCount(1));
+ EXPECT_EQ(3u, gh.getGenerationRefCount(0));
+ EXPECT_EQ(0u, gh.getGenerationRefCount(1));
}
-void
-Test::requireThatTheFirstUsedGenerationIsCorrect()
+TEST_F(GenerationHandlerTest, require_that_the_first_used_generation_is_correct)
{
- GenerationHandler gh;
- EXPECT_EQUAL(0u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(0u, gh.getFirstUsedGeneration());
gh.incGeneration();
- EXPECT_EQUAL(1u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(1u, gh.getFirstUsedGeneration());
{
GenGuard g1 = gh.takeGuard();
gh.incGeneration();
- EXPECT_EQUAL(1u, gh.getGenerationRefCount());
- EXPECT_EQUAL(1u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(1u, gh.getGenerationRefCount());
+ EXPECT_EQ(1u, gh.getFirstUsedGeneration());
}
- EXPECT_EQUAL(1u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(1u, gh.getFirstUsedGeneration());
gh.updateFirstUsedGeneration(); // Only writer should call this
- EXPECT_EQUAL(0u, gh.getGenerationRefCount());
- EXPECT_EQUAL(2u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(0u, gh.getGenerationRefCount());
+ EXPECT_EQ(2u, gh.getFirstUsedGeneration());
{
GenGuard g1 = gh.takeGuard();
gh.incGeneration();
gh.incGeneration();
- EXPECT_EQUAL(1u, gh.getGenerationRefCount());
- EXPECT_EQUAL(2u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(1u, gh.getGenerationRefCount());
+ EXPECT_EQ(2u, gh.getFirstUsedGeneration());
{
GenGuard g2 = gh.takeGuard();
- EXPECT_EQUAL(2u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(2u, gh.getFirstUsedGeneration());
}
}
- EXPECT_EQUAL(2u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(2u, gh.getFirstUsedGeneration());
gh.updateFirstUsedGeneration(); // Only writer should call this
- EXPECT_EQUAL(0u, gh.getGenerationRefCount());
- EXPECT_EQUAL(4u, gh.getFirstUsedGeneration());
+ EXPECT_EQ(0u, gh.getGenerationRefCount());
+ EXPECT_EQ(4u, gh.getFirstUsedGeneration());
}
-void
-Test::requireThatGenerationCanGrowLarge()
+TEST_F(GenerationHandlerTest, require_that_generation_can_grow_large)
{
- GenerationHandler gh;
std::deque<GenGuard> guards;
for (size_t i = 0; i < 10000; ++i) {
- EXPECT_EQUAL(i, gh.getCurrentGeneration());
+ EXPECT_EQ(i, gh.getCurrentGeneration());
guards.push_back(gh.takeGuard()); // take guard on current generation
if (i >= 128) {
- EXPECT_EQUAL(i - 128, gh.getFirstUsedGeneration());
+ EXPECT_EQ(i - 128, gh.getFirstUsedGeneration());
guards.pop_front();
- EXPECT_EQUAL(128u, gh.getGenerationRefCount());
+ EXPECT_EQ(128u, gh.getGenerationRefCount());
}
gh.incGeneration();
}
}
-int
-Test::Main()
-{
- TEST_INIT("generationhandler_test");
-
- TEST_DO(requireThatGenerationCanBeIncreased());
- TEST_DO(requireThatReadersCanTakeGuards());
- TEST_DO(requireThatGuardsCanBeCopied());
- TEST_DO(requireThatTheFirstUsedGenerationIsCorrect());
- TEST_DO(requireThatGenerationCanGrowLarge());
-
- TEST_DONE();
-}
-
}
-TEST_APPHOOK(vespalib::Test);
+GTEST_MAIN_RUN_ALL_TESTS()