Unverified Commit b497731e authored by Xinye Tao's avatar Xinye Tao Committed by GitHub

Fix fallback test (#98)

* fix titan_db_test typo
Signed-off-by: 's avatartabokie <xy.tao@outlook.com>

* test purging blob file in fallback mode
Signed-off-by: 's avatartabokie <xy.tao@outlook.com>

* fix test
Signed-off-by: 's avatartabokie <xy.tao@outlook.com>

* simplify
Signed-off-by: 's avatartabokie <xy.tao@outlook.com>
parent 0a3f87a2
...@@ -880,10 +880,12 @@ TEST_F(TitanDBTest, SetOptions) { ...@@ -880,10 +880,12 @@ TEST_F(TitanDBTest, SetOptions) {
TEST_F(TitanDBTest, BlobRunModeBasic) { TEST_F(TitanDBTest, BlobRunModeBasic) {
options_.disable_background_gc = true; options_.disable_background_gc = true;
options_.disable_auto_compactions = true;
Open(); Open();
const uint64_t kNumEntries = 1000; const uint64_t kNumEntries = 100;
const uint64_t kMaxKeys = 100000; const uint64_t kMaxKeys = 100000;
uint64_t begin;
std::unordered_map<std::string, std::string> opts; std::unordered_map<std::string, std::string> opts;
std::map<std::string, std::string> data; std::map<std::string, std::string> data;
std::vector<KeyVersion> version; std::vector<KeyVersion> version;
...@@ -891,11 +893,12 @@ TEST_F(TitanDBTest, BlobRunModeBasic) { ...@@ -891,11 +893,12 @@ TEST_F(TitanDBTest, BlobRunModeBasic) {
std::string end_key; std::string end_key;
uint64_t num_blob_files; uint64_t num_blob_files;
for (uint64_t i = 1; i <= kNumEntries; i++) { begin = 1;
for (uint64_t i = begin; i < begin + kNumEntries; i++) {
Put(i, &data); Put(i, &data);
} }
begin_key = GenKey(1); begin_key = GenKey(begin);
end_key = GenKey(kNumEntries); end_key = GenKey(begin + kNumEntries - 1);
ASSERT_EQ(kNumEntries, data.size()); ASSERT_EQ(kNumEntries, data.size());
VerifyDB(data); VerifyDB(data);
Flush(); Flush();
...@@ -914,11 +917,12 @@ TEST_F(TitanDBTest, BlobRunModeBasic) { ...@@ -914,11 +917,12 @@ TEST_F(TitanDBTest, BlobRunModeBasic) {
opts["blob_run_mode"] = "kReadOnly"; opts["blob_run_mode"] = "kReadOnly";
db_->SetOptions(opts); db_->SetOptions(opts);
for (uint64_t i = kNumEntries + 1; i <= kNumEntries * 2; i++) { begin = kNumEntries + 1;
for (uint64_t i = begin; i < begin + kNumEntries; i++) {
Put(i, &data); Put(i, &data);
} }
begin_key = GenKey(kNumEntries + 1); begin_key = GenKey(begin);
end_key = GenKey(kNumEntries * 2); end_key = GenKey(begin + kNumEntries - 1);
ASSERT_EQ(kNumEntries * 2, data.size()); ASSERT_EQ(kNumEntries * 2, data.size());
VerifyDB(data); VerifyDB(data);
Flush(); Flush();
...@@ -931,13 +935,14 @@ TEST_F(TitanDBTest, BlobRunModeBasic) { ...@@ -931,13 +935,14 @@ TEST_F(TitanDBTest, BlobRunModeBasic) {
} }
version.clear(); version.clear();
opts["blob_run_mode"] = "fallback"; opts["blob_run_mode"] = "kFallback";
db_->SetOptions(opts); db_->SetOptions(opts);
for (uint64_t i = kNumEntries * 2 + 1; i <= kNumEntries * 3; i++) { begin = kNumEntries * 2 + 1;
for (uint64_t i = begin; i < begin + kNumEntries; i++) {
Put(i, &data); Put(i, &data);
} }
begin_key = GenKey(kNumEntries * 2 + 1); begin_key = GenKey(begin);
end_key = GenKey(kNumEntries * 3); end_key = GenKey(begin + kNumEntries - 1);
ASSERT_EQ(kNumEntries * 3, data.size()); ASSERT_EQ(kNumEntries * 3, data.size());
VerifyDB(data); VerifyDB(data);
Flush(); Flush();
...@@ -949,6 +954,25 @@ TEST_F(TitanDBTest, BlobRunModeBasic) { ...@@ -949,6 +954,25 @@ TEST_F(TitanDBTest, BlobRunModeBasic) {
ASSERT_EQ(v.type, static_cast<int>(ValueType::kTypeValue)); ASSERT_EQ(v.type, static_cast<int>(ValueType::kTypeValue));
} }
version.clear(); version.clear();
// make sure new sstable interleaves with existing sstables.
Put(0, &data);
Put(kNumEntries * 3 + 1, &data);
Flush();
CompactAll();
VerifyDB(data);
uint32_t default_cf_id = db_->DefaultColumnFamily()->GetID();
ASSERT_OK(db_impl_->TEST_StartGC(default_cf_id));
ASSERT_OK(db_impl_->TEST_PurgeObsoleteFiles());
blob = GetBlobStorage();
ASSERT_EQ(0, blob.lock()->NumBlobFiles());
begin_key = GenKey(0);
end_key = GenKey(kNumEntries * 3 + 1);
GetAllKeyVersions(db_, begin_key, end_key, kMaxKeys, &version);
for (auto v : version) {
ASSERT_EQ(v.type, static_cast<int>(ValueType::kTypeValue));
}
version.clear();
} }
TEST_F(TitanDBTest, FallbackModeEncounterMissingBlobFile) { TEST_F(TitanDBTest, FallbackModeEncounterMissingBlobFile) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment