Remove gtest dependency in non-test code under utilities/cassandra (#6908)

Summary:
production code under utilities/cassandra depends on gtest.h. Remove them.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6908

Test Plan: Run all existing tests.

Reviewed By: ajkr

Differential Revision: D21842606

fbshipit-source-id: a098e0b49c9aeac51cc90a79562ad9897a36122c
This commit is contained in:
sdong 2020-06-02 13:54:03 -07:00 committed by Facebook GitHub Bot
parent 38f988d3b4
commit bfc9737aca
6 changed files with 68 additions and 64 deletions

View File

@ -184,6 +184,8 @@ TEST(TombstoneTest, Tombstone) {
== 0); == 0);
} }
class RowValueTest : public testing::Test {};
TEST(RowValueTest, RowTombstone) { TEST(RowValueTest, RowTombstone) {
int32_t local_deletion_time = 1494022807; int32_t local_deletion_time = 1494022807;
int64_t marked_for_delete_at = 1494022807044; int64_t marked_for_delete_at = 1494022807044;
@ -327,10 +329,13 @@ TEST(RowValueTest, PurgeTtlShouldRemvoeAllColumnsExpired) {
bool changed = false; bool changed = false;
auto purged = row_value.RemoveExpiredColumns(&changed); auto purged = row_value.RemoveExpiredColumns(&changed);
EXPECT_TRUE(changed); EXPECT_TRUE(changed);
EXPECT_EQ(purged.columns_.size(), 3); EXPECT_EQ(purged.get_columns().size(), 3);
VerifyRowValueColumns(purged.columns_, 0, kColumn, 0, ToMicroSeconds(now)); VerifyRowValueColumns(purged.get_columns(), 0, kColumn, 0,
VerifyRowValueColumns(purged.columns_, 1, kExpiringColumn, 2, ToMicroSeconds(now)); ToMicroSeconds(now));
VerifyRowValueColumns(purged.columns_, 2, kTombstone, 3, ToMicroSeconds(now)); VerifyRowValueColumns(purged.get_columns(), 1, kExpiringColumn, 2,
ToMicroSeconds(now));
VerifyRowValueColumns(purged.get_columns(), 2, kTombstone, 3,
ToMicroSeconds(now));
purged.RemoveExpiredColumns(&changed); purged.RemoveExpiredColumns(&changed);
EXPECT_FALSE(changed); EXPECT_FALSE(changed);
@ -349,11 +354,15 @@ TEST(RowValueTest, ExpireTtlShouldConvertExpiredColumnsToTombstones) {
bool changed = false; bool changed = false;
auto compacted = row_value.ConvertExpiredColumnsToTombstones(&changed); auto compacted = row_value.ConvertExpiredColumnsToTombstones(&changed);
EXPECT_TRUE(changed); EXPECT_TRUE(changed);
EXPECT_EQ(compacted.columns_.size(), 4); EXPECT_EQ(compacted.get_columns().size(), 4);
VerifyRowValueColumns(compacted.columns_, 0, kColumn, 0, ToMicroSeconds(now)); VerifyRowValueColumns(compacted.get_columns(), 0, kColumn, 0,
VerifyRowValueColumns(compacted.columns_, 1, kTombstone, 1, ToMicroSeconds(now - 10)); ToMicroSeconds(now));
VerifyRowValueColumns(compacted.columns_, 2, kExpiringColumn, 2, ToMicroSeconds(now)); VerifyRowValueColumns(compacted.get_columns(), 1, kTombstone, 1,
VerifyRowValueColumns(compacted.columns_, 3, kTombstone, 3, ToMicroSeconds(now)); ToMicroSeconds(now - 10));
VerifyRowValueColumns(compacted.get_columns(), 2, kExpiringColumn, 2,
ToMicroSeconds(now));
VerifyRowValueColumns(compacted.get_columns(), 3, kTombstone, 3,
ToMicroSeconds(now));
compacted.ConvertExpiredColumnsToTombstones(&changed); compacted.ConvertExpiredColumnsToTombstones(&changed);
EXPECT_FALSE(changed); EXPECT_FALSE(changed);

View File

@ -164,12 +164,17 @@ TEST_F(CassandraFunctionalTest, SimpleMergeTest) {
ASSERT_TRUE(std::get<0>(ret)); ASSERT_TRUE(std::get<0>(ret));
RowValue& merged = std::get<1>(ret); RowValue& merged = std::get<1>(ret);
EXPECT_EQ(merged.columns_.size(), 5); EXPECT_EQ(merged.get_columns().size(), 5);
VerifyRowValueColumns(merged.columns_, 0, kExpiringColumn, 0, ToMicroSeconds(now + 6)); VerifyRowValueColumns(merged.get_columns(), 0, kExpiringColumn, 0,
VerifyRowValueColumns(merged.columns_, 1, kColumn, 1, ToMicroSeconds(now + 8)); ToMicroSeconds(now + 6));
VerifyRowValueColumns(merged.columns_, 2, kTombstone, 2, ToMicroSeconds(now + 7)); VerifyRowValueColumns(merged.get_columns(), 1, kColumn, 1,
VerifyRowValueColumns(merged.columns_, 3, kExpiringColumn, 7, ToMicroSeconds(now + 17)); ToMicroSeconds(now + 8));
VerifyRowValueColumns(merged.columns_, 4, kTombstone, 11, ToMicroSeconds(now + 11)); VerifyRowValueColumns(merged.get_columns(), 2, kTombstone, 2,
ToMicroSeconds(now + 7));
VerifyRowValueColumns(merged.get_columns(), 3, kExpiringColumn, 7,
ToMicroSeconds(now + 17));
VerifyRowValueColumns(merged.get_columns(), 4, kTombstone, 11,
ToMicroSeconds(now + 11));
} }
TEST_F(CassandraFunctionalTest, TEST_F(CassandraFunctionalTest,
@ -196,11 +201,15 @@ TEST_F(CassandraFunctionalTest,
auto ret = store.Get("k1"); auto ret = store.Get("k1");
ASSERT_TRUE(std::get<0>(ret)); ASSERT_TRUE(std::get<0>(ret));
RowValue& merged = std::get<1>(ret); RowValue& merged = std::get<1>(ret);
EXPECT_EQ(merged.columns_.size(), 4); EXPECT_EQ(merged.get_columns().size(), 4);
VerifyRowValueColumns(merged.columns_, 0, kTombstone, 0, ToMicroSeconds(now - 10)); VerifyRowValueColumns(merged.get_columns(), 0, kTombstone, 0,
VerifyRowValueColumns(merged.columns_, 1, kExpiringColumn, 1, ToMicroSeconds(now - kTtl + 10)); ToMicroSeconds(now - 10));
VerifyRowValueColumns(merged.columns_, 2, kColumn, 2, ToMicroSeconds(now)); VerifyRowValueColumns(merged.get_columns(), 1, kExpiringColumn, 1,
VerifyRowValueColumns(merged.columns_, 3, kTombstone, 3, ToMicroSeconds(now)); ToMicroSeconds(now - kTtl + 10));
VerifyRowValueColumns(merged.get_columns(), 2, kColumn, 2,
ToMicroSeconds(now));
VerifyRowValueColumns(merged.get_columns(), 3, kTombstone, 3,
ToMicroSeconds(now));
} }
@ -229,10 +238,13 @@ TEST_F(CassandraFunctionalTest,
auto ret = store.Get("k1"); auto ret = store.Get("k1");
ASSERT_TRUE(std::get<0>(ret)); ASSERT_TRUE(std::get<0>(ret));
RowValue& merged = std::get<1>(ret); RowValue& merged = std::get<1>(ret);
EXPECT_EQ(merged.columns_.size(), 3); EXPECT_EQ(merged.get_columns().size(), 3);
VerifyRowValueColumns(merged.columns_, 0, kExpiringColumn, 1, ToMicroSeconds(now)); VerifyRowValueColumns(merged.get_columns(), 0, kExpiringColumn, 1,
VerifyRowValueColumns(merged.columns_, 1, kColumn, 2, ToMicroSeconds(now)); ToMicroSeconds(now));
VerifyRowValueColumns(merged.columns_, 2, kTombstone, 3, ToMicroSeconds(now)); VerifyRowValueColumns(merged.get_columns(), 1, kColumn, 2,
ToMicroSeconds(now));
VerifyRowValueColumns(merged.get_columns(), 2, kTombstone, 3,
ToMicroSeconds(now));
} }
TEST_F(CassandraFunctionalTest, TEST_F(CassandraFunctionalTest,
@ -284,8 +296,8 @@ TEST_F(CassandraFunctionalTest,
auto ret = store.Get("k1"); auto ret = store.Get("k1");
ASSERT_TRUE(std::get<0>(ret)); ASSERT_TRUE(std::get<0>(ret));
RowValue& gced = std::get<1>(ret); RowValue& gced = std::get<1>(ret);
EXPECT_EQ(gced.columns_.size(), 1); EXPECT_EQ(gced.get_columns().size(), 1);
VerifyRowValueColumns(gced.columns_, 0, kColumn, 1, ToMicroSeconds(now)); VerifyRowValueColumns(gced.get_columns(), 0, kColumn, 1, ToMicroSeconds(now));
} }
TEST_F(CassandraFunctionalTest, CompactionShouldRemoveTombstoneFromPut) { TEST_F(CassandraFunctionalTest, CompactionShouldRemoveTombstoneFromPut) {

View File

@ -11,6 +11,8 @@
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
namespace cassandra { namespace cassandra {
class RowValueMergeTest : public testing::Test {};
TEST(RowValueMergeTest, Merge) { TEST(RowValueMergeTest, Merge) {
std::vector<RowValue> row_values; std::vector<RowValue> row_values;
row_values.push_back( row_values.push_back(
@ -41,12 +43,12 @@ TEST(RowValueMergeTest, Merge) {
RowValue merged = RowValue::Merge(std::move(row_values)); RowValue merged = RowValue::Merge(std::move(row_values));
EXPECT_FALSE(merged.IsTombstone()); EXPECT_FALSE(merged.IsTombstone());
EXPECT_EQ(merged.columns_.size(), 5); EXPECT_EQ(merged.get_columns().size(), 5);
VerifyRowValueColumns(merged.columns_, 0, kExpiringColumn, 0, 6); VerifyRowValueColumns(merged.get_columns(), 0, kExpiringColumn, 0, 6);
VerifyRowValueColumns(merged.columns_, 1, kColumn, 1, 8); VerifyRowValueColumns(merged.get_columns(), 1, kColumn, 1, 8);
VerifyRowValueColumns(merged.columns_, 2, kTombstone, 2, 7); VerifyRowValueColumns(merged.get_columns(), 2, kTombstone, 2, 7);
VerifyRowValueColumns(merged.columns_, 3, kExpiringColumn, 7, 17); VerifyRowValueColumns(merged.get_columns(), 3, kExpiringColumn, 7, 17);
VerifyRowValueColumns(merged.columns_, 4, kTombstone, 11, 11); VerifyRowValueColumns(merged.get_columns(), 4, kTombstone, 11, 11);
} }
TEST(RowValueMergeTest, MergeWithRowTombstone) { TEST(RowValueMergeTest, MergeWithRowTombstone) {
@ -83,10 +85,10 @@ TEST(RowValueMergeTest, MergeWithRowTombstone) {
RowValue merged = RowValue::Merge(std::move(row_values)); RowValue merged = RowValue::Merge(std::move(row_values));
EXPECT_FALSE(merged.IsTombstone()); EXPECT_FALSE(merged.IsTombstone());
EXPECT_EQ(merged.columns_.size(), 3); EXPECT_EQ(merged.get_columns().size(), 3);
VerifyRowValueColumns(merged.columns_, 0, kColumn, 3, 12); VerifyRowValueColumns(merged.get_columns(), 0, kColumn, 3, 12);
VerifyRowValueColumns(merged.columns_, 1, kColumn, 4, 13); VerifyRowValueColumns(merged.get_columns(), 1, kColumn, 4, 13);
VerifyRowValueColumns(merged.columns_, 2, kColumn, 5, 14); VerifyRowValueColumns(merged.get_columns(), 2, kColumn, 5, 14);
// If the tombstone's timestamp is the latest, then it returns a // If the tombstone's timestamp is the latest, then it returns a
// row tombstone. // row tombstone.

View File

@ -60,7 +60,6 @@
#include <vector> #include <vector>
#include "rocksdb/merge_operator.h" #include "rocksdb/merge_operator.h"
#include "rocksdb/slice.h" #include "rocksdb/slice.h"
#include "test_util/testharness.h"
namespace ROCKSDB_NAMESPACE { namespace ROCKSDB_NAMESPACE {
namespace cassandra { namespace cassandra {
@ -172,25 +171,13 @@ public:
// Merge multiple rows according to their timestamp. // Merge multiple rows according to their timestamp.
static RowValue Merge(std::vector<RowValue>&& values); static RowValue Merge(std::vector<RowValue>&& values);
private: const Columns& get_columns() { return columns_; }
private:
int32_t local_deletion_time_; int32_t local_deletion_time_;
int64_t marked_for_delete_at_; int64_t marked_for_delete_at_;
Columns columns_; Columns columns_;
int64_t last_modified_time_; int64_t last_modified_time_;
FRIEND_TEST(RowValueTest, PurgeTtlShouldRemvoeAllColumnsExpired);
FRIEND_TEST(RowValueTest, ExpireTtlShouldConvertExpiredColumnsToTombstones);
FRIEND_TEST(RowValueMergeTest, Merge);
FRIEND_TEST(RowValueMergeTest, MergeWithRowTombstone);
FRIEND_TEST(CassandraFunctionalTest, SimpleMergeTest);
FRIEND_TEST(
CassandraFunctionalTest, CompactionShouldConvertExpiredColumnsToTombstone);
FRIEND_TEST(
CassandraFunctionalTest, CompactionShouldPurgeExpiredColumnsIfPurgeTtlIsOn);
FRIEND_TEST(
CassandraFunctionalTest, CompactionShouldRemoveRowWhenAllColumnExpiredIfPurgeTtlIsOn);
FRIEND_TEST(CassandraFunctionalTest,
CompactionShouldRemoveTombstoneExceedingGCGracePeriod);
}; };
} // namepsace cassandrda } // namepsace cassandrda

View File

@ -53,12 +53,9 @@ RowValue CreateRowTombstone(int64_t timestamp) {
} }
void VerifyRowValueColumns( void VerifyRowValueColumns(
std::vector<std::shared_ptr<ColumnBase>> &columns, const std::vector<std::shared_ptr<ColumnBase>> &columns,
std::size_t index_of_vector, std::size_t index_of_vector, int8_t expected_mask, int8_t expected_index,
int8_t expected_mask, int64_t expected_timestamp) {
int8_t expected_index,
int64_t expected_timestamp
) {
EXPECT_EQ(expected_timestamp, columns[index_of_vector]->Timestamp()); EXPECT_EQ(expected_timestamp, columns[index_of_vector]->Timestamp());
EXPECT_EQ(expected_mask, columns[index_of_vector]->Mask()); EXPECT_EQ(expected_mask, columns[index_of_vector]->Mask());
EXPECT_EQ(expected_index, columns[index_of_vector]->Index()); EXPECT_EQ(expected_index, columns[index_of_vector]->Index());

View File

@ -33,12 +33,9 @@ RowValue CreateTestRowValue(
RowValue CreateRowTombstone(int64_t timestamp); RowValue CreateRowTombstone(int64_t timestamp);
void VerifyRowValueColumns( void VerifyRowValueColumns(
std::vector<std::shared_ptr<ColumnBase>> &columns, const std::vector<std::shared_ptr<ColumnBase>> &columns,
std::size_t index_of_vector, std::size_t index_of_vector, int8_t expected_mask, int8_t expected_index,
int8_t expected_mask, int64_t expected_timestamp);
int8_t expected_index,
int64_t expected_timestamp
);
int64_t ToMicroSeconds(int64_t seconds); int64_t ToMicroSeconds(int64_t seconds);
int32_t ToSeconds(int64_t microseconds); int32_t ToSeconds(int64_t microseconds);