537855a0b2
* Fix usages of constexpr
82 lines
2.2 KiB
C++
82 lines
2.2 KiB
C++
// Copyright 2022 Memgraph Ltd.
|
|
//
|
|
// Use of this software is governed by the Business Source License
|
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
|
// License, and you may not use this file except in compliance with the Business Source License.
|
|
//
|
|
// As of the Change Date specified in that file, in accordance with
|
|
// the Business Source License, use of this software will be governed
|
|
// by the Apache License, Version 2.0, included in the file
|
|
// licenses/APL.txt.
|
|
|
|
#include "storage/v2/commit_log.hpp"
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace {
|
|
inline constexpr size_t ids_per_block = 8192 * 64;
|
|
} // namespace
|
|
|
|
TEST(CommitLog, Simple) {
|
|
memgraph::storage::CommitLog log;
|
|
EXPECT_EQ(log.OldestActive(), 0);
|
|
|
|
log.MarkFinished(1);
|
|
EXPECT_EQ(log.OldestActive(), 0);
|
|
|
|
log.MarkFinished(0);
|
|
EXPECT_EQ(log.OldestActive(), 2);
|
|
}
|
|
|
|
TEST(CommitLog, Fields) {
|
|
memgraph::storage::CommitLog log;
|
|
|
|
for (uint64_t i = 0; i < 64; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), i + 1);
|
|
}
|
|
|
|
for (uint64_t i = 128; i < 192; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), 64);
|
|
}
|
|
|
|
for (uint64_t i = 64; i < 128; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), i < 127 ? i + 1 : 192);
|
|
}
|
|
}
|
|
|
|
TEST(CommitLog, Blocks) {
|
|
memgraph::storage::CommitLog log;
|
|
|
|
for (uint64_t i = 0; i < ids_per_block; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), i + 1);
|
|
}
|
|
|
|
for (uint64_t i = ids_per_block * 2; i < ids_per_block * 3; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), ids_per_block);
|
|
}
|
|
|
|
for (uint64_t i = ids_per_block; i < ids_per_block; ++i) {
|
|
log.MarkFinished(i);
|
|
EXPECT_EQ(log.OldestActive(), i < ids_per_block - 1 ? i + 1 : ids_per_block * 3);
|
|
}
|
|
}
|
|
|
|
TEST(CommitLog, TrackAfterInitialId) {
|
|
const auto check_marking_ids = [](auto *log, auto current_oldest_active) {
|
|
ASSERT_EQ(log->OldestActive(), current_oldest_active);
|
|
log->MarkFinished(current_oldest_active);
|
|
++current_oldest_active;
|
|
ASSERT_EQ(log->OldestActive(), current_oldest_active);
|
|
};
|
|
|
|
for (uint64_t i = 0; i < 2 * ids_per_block; ++i) {
|
|
memgraph::storage::CommitLog log{i};
|
|
check_marking_ids(&log, i);
|
|
}
|
|
}
|