mirror of
https://github.com/facebook/rocksdb.git
synced 2026-07-07 14:47:40 +08:00
459236341c
Summary: * Release notes from 11.3 branch * Update version.h * Add [11.3.fb](https://github.com/facebook/rocksdb/tree/11.3.fb) (to check_format_compatible.sh) * Update folly commit hash to: https://github.com/facebook/folly/releases/tag/v2026.05.11.00 (see [comment](https://github.com/facebook/rocksdb/pull/14747#issuecomment-4480217173) for more) * Copyright headers refresh * Decouple 11.1.fb from 11.2.fb in `db_forward_with_options_refs` * Add validation step in `check_format_compatible.sh` to prevent gluey release strings Pull Request resolved: https://github.com/facebook/rocksdb/pull/14747 Reviewed By: xingbowang Differential Revision: D105443941 Pulled By: mszeszko-meta fbshipit-source-id: 8499b18cc2ff118d805b3865463ad2a999868de4
103 lines
3.0 KiB
C++
103 lines
3.0 KiB
C++
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
// This source code is licensed under both the GPLv2 (found in the
|
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
// (found in the LICENSE.Apache file in the root directory).
|
|
|
|
#include "db/db_test_util.h"
|
|
#include "rocksdb/data_structure.h"
|
|
#include "rocksdb/slice.h"
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
|
|
|
class IntervalSetTest : public testing::Test {};
|
|
|
|
TEST_F(IntervalSetTest, BasicTest) {
|
|
IntervalSet<int> set;
|
|
set.insert({2, 15});
|
|
EXPECT_EQ(set.size(), 1);
|
|
set.insert({5, 9});
|
|
EXPECT_EQ(set.size(), 1);
|
|
set.insert({0, 10});
|
|
EXPECT_EQ(set.size(), 1);
|
|
set.insert({25, 30});
|
|
EXPECT_EQ(set.size(), 2);
|
|
set.insert({16, 25});
|
|
EXPECT_EQ(set.size(), 2);
|
|
set.insert({45, 85});
|
|
ASSERT_EQ(set.size(), 3);
|
|
auto iter = set.begin();
|
|
ASSERT_EQ(*iter, Interval<int>(0, 15));
|
|
iter++;
|
|
ASSERT_EQ(*iter, Interval<int>(16, 30));
|
|
iter++;
|
|
ASSERT_EQ(*iter, Interval<int>(45, 85));
|
|
set.insert({31});
|
|
iter = set.begin();
|
|
ASSERT_EQ(*iter, Interval<int>(0, 15));
|
|
iter++;
|
|
ASSERT_EQ(*iter, Interval<int>(16, 30));
|
|
iter++;
|
|
ASSERT_EQ(*iter, Interval<int>(31));
|
|
}
|
|
|
|
TEST_F(IntervalSetTest, SliceTest) {
|
|
IntervalSet<Slice, Comparator> set(BytewiseComparator());
|
|
EXPECT_TRUE(set.insert("k00", "k10"));
|
|
// Should do nothing
|
|
EXPECT_TRUE(set.insert("k02", "k08"));
|
|
auto iter = set.begin();
|
|
ASSERT_EQ(iter->start().ToString(), "k00");
|
|
ASSERT_EQ(iter->end().ToString(), "k10");
|
|
ASSERT_EQ(set.size(), 1);
|
|
iter++;
|
|
ASSERT_EQ(iter, set.end());
|
|
EXPECT_TRUE(set.insert("k15", "k20"));
|
|
EXPECT_TRUE(set.insert("k16"));
|
|
ASSERT_EQ(set.size(), 2);
|
|
iter = set.begin();
|
|
ASSERT_EQ(iter->start().ToString(), "k00");
|
|
ASSERT_EQ(iter->end().ToString(), "k10");
|
|
iter++;
|
|
ASSERT_EQ(iter->start().ToString(), "k15");
|
|
ASSERT_EQ(iter->has_end(), false);
|
|
//
|
|
}
|
|
|
|
TEST_F(IntervalSetTest, PropModeTest) {
|
|
IntervalSet<Slice, Comparator> set(BytewiseComparator(), true);
|
|
EXPECT_TRUE(set.insert("k00", "k10"));
|
|
// Should do nothing
|
|
EXPECT_FALSE(set.insert("k02", "k08"));
|
|
EXPECT_EQ(set.size(), 1);
|
|
EXPECT_TRUE(set.insert("k15", "k20"));
|
|
EXPECT_EQ(set.size(), 2);
|
|
EXPECT_FALSE(set.insert("k16"));
|
|
ASSERT_EQ(set.size(), 2);
|
|
auto iter = set.begin();
|
|
ASSERT_EQ(iter->start().ToString(), "k00");
|
|
ASSERT_EQ(iter->end().ToString(), "k10");
|
|
iter++;
|
|
ASSERT_EQ(iter->start().ToString(), "k15");
|
|
ASSERT_EQ(iter->end().ToString(), "k20");
|
|
EXPECT_TRUE(set.insert("k12", "k14"));
|
|
iter = set.begin();
|
|
ASSERT_EQ(set.size(), 3);
|
|
ASSERT_EQ(iter->start().ToString(), "k00");
|
|
ASSERT_EQ(iter->end().ToString(), "k10");
|
|
iter++;
|
|
ASSERT_EQ(iter->start().ToString(), "k12");
|
|
ASSERT_EQ(iter->end().ToString(), "k14");
|
|
iter++;
|
|
ASSERT_EQ(iter->start().ToString(), "k15");
|
|
ASSERT_EQ(iter->end().ToString(), "k20");
|
|
}
|
|
|
|
} // namespace ROCKSDB_NAMESPACE
|
|
|
|
int main(int argc, char** argv) {
|
|
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
|
|
return RUN_ALL_TESTS();
|
|
}
|