Fix db_test under ROCKSDB_LITE

Summary:
This diff exclude alot of tests in db_test that are not compiling / failing under ROCKSD_LITE

Test Plan:
OPT=-DROCKSDB_LITE make check -j64
make check -j64

Reviewers: yhchiang, igor, sdong

Reviewed By: sdong

Subscribers: dhruba

Differential Revision: https://reviews.facebook.net/D48771
This commit is contained in:
Islam AbdelRahman 2015-10-15 10:59:31 -07:00
parent 6d730b4ae7
commit 952ad994a9
3 changed files with 138 additions and 53 deletions

View File

@ -550,8 +550,10 @@ check: all
echo "===== Running $$t"; ./$$t || exit 1; done; \ echo "===== Running $$t"; ./$$t || exit 1; done; \
fi fi
rm -rf $(TMPD) rm -rf $(TMPD)
ifeq ($(filter -DROCKSDB_LITE,$(OPT)),)
python tools/ldb_test.py python tools/ldb_test.py
sh tools/rocksdb_dump_test.sh sh tools/rocksdb_dump_test.sh
endif
check_some: $(SUBSET) ldb_tests check_some: $(SUBSET) ldb_tests
for t in $(SUBSET); do echo "===== Running $$t"; ./$$t || exit 1; done for t in $(SUBSET); do echo "===== Running $$t"; ./$$t || exit 1; done

View File

@ -78,6 +78,7 @@ static long TestGetTickerCount(const Options& options, Tickers ticker_type) {
return options.statistics->getTickerCount(ticker_type); return options.statistics->getTickerCount(ticker_type);
} }
#ifndef ROCKSDB_LITE
// A helper function that ensures the table properties returned in // A helper function that ensures the table properties returned in
// `GetPropertiesOfAllTablesTest` is correct. // `GetPropertiesOfAllTablesTest` is correct.
// This test assumes entries size is different for each of the tables. // This test assumes entries size is different for each of the tables.
@ -113,6 +114,7 @@ uint64_t GetNumberOfSstFilesForColumnFamily(DB* db,
} }
} // namespace } // namespace
#endif // ROCKSDB_LITE
class DBTest : public DBTestBase { class DBTest : public DBTestBase {
public: public:
@ -131,46 +133,7 @@ class DBTestWithParam : public DBTest,
uint32_t max_subcompactions_; uint32_t max_subcompactions_;
}; };
class BloomStatsTestWithParam #ifndef ROCKSDB_LITE
: public DBTest,
public testing::WithParamInterface<std::tuple<bool, bool>> {
public:
BloomStatsTestWithParam() {
use_block_table_ = std::get<0>(GetParam());
use_block_based_builder_ = std::get<1>(GetParam());
options_.create_if_missing = true;
options_.prefix_extractor.reset(rocksdb::NewFixedPrefixTransform(4));
options_.memtable_prefix_bloom_bits = 8 * 1024;
if (use_block_table_) {
BlockBasedTableOptions table_options;
table_options.hash_index_allow_collision = false;
table_options.filter_policy.reset(
NewBloomFilterPolicy(10, use_block_based_builder_));
options_.table_factory.reset(NewBlockBasedTableFactory(table_options));
} else {
PlainTableOptions table_options;
options_.table_factory.reset(NewPlainTableFactory(table_options));
}
perf_context.Reset();
DestroyAndReopen(options_);
}
~BloomStatsTestWithParam() {
perf_context.Reset();
Destroy(options_);
}
// Required if inheriting from testing::WithParamInterface<>
static void SetUpTestCase() {}
static void TearDownTestCase() {}
bool use_block_table_;
bool use_block_based_builder_;
Options options_;
};
TEST_F(DBTest, Empty) { TEST_F(DBTest, Empty) {
do { do {
Options options; Options options;
@ -232,6 +195,7 @@ TEST_F(DBTest, Empty) {
ASSERT_EQ("0", num); ASSERT_EQ("0", num);
} while (ChangeOptions()); } while (ChangeOptions());
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, WriteEmptyBatch) { TEST_F(DBTest, WriteEmptyBatch) {
Options options; Options options;
@ -254,6 +218,7 @@ TEST_F(DBTest, WriteEmptyBatch) {
ASSERT_EQ("bar", Get(1, "foo")); ASSERT_EQ("bar", Get(1, "foo"));
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, ReadOnlyDB) { TEST_F(DBTest, ReadOnlyDB) {
ASSERT_OK(Put("foo", "v1")); ASSERT_OK(Put("foo", "v1"));
ASSERT_OK(Put("bar", "v2")); ASSERT_OK(Put("bar", "v2"));
@ -790,6 +755,7 @@ TEST_F(DBTest, AggregatedTablePropertiesAtLevel) {
} }
} }
} }
#endif // ROCKSDB_LITE
class CoutingUserTblPropCollector : public TablePropertiesCollector { class CoutingUserTblPropCollector : public TablePropertiesCollector {
public: public:
@ -842,6 +808,7 @@ class CoutingUserTblPropCollectorFactory
uint32_t num_created_; uint32_t num_created_;
}; };
#ifndef ROCKSDB_LITE
TEST_F(DBTest, GetUserDefinedTableProperties) { TEST_F(DBTest, GetUserDefinedTableProperties) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.level0_file_num_compaction_trigger = (1<<30); options.level0_file_num_compaction_trigger = (1<<30);
@ -881,6 +848,7 @@ TEST_F(DBTest, GetUserDefinedTableProperties) {
dbfull()->TEST_CompactRange(0, nullptr, nullptr); dbfull()->TEST_CompactRange(0, nullptr, nullptr);
ASSERT_GT(collector_factory->num_created_, 0); ASSERT_GT(collector_factory->num_created_, 0);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, UserDefinedTablePropertiesContext) { TEST_F(DBTest, UserDefinedTablePropertiesContext) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -943,6 +911,7 @@ TEST_F(DBTest, UserDefinedTablePropertiesContext) {
ASSERT_GT(collector_factory->num_created_, 0); ASSERT_GT(collector_factory->num_created_, 0);
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, LevelLimitReopen) { TEST_F(DBTest, LevelLimitReopen) {
Options options = CurrentOptions(); Options options = CurrentOptions();
CreateAndReopenWithCF({"pikachu"}, options); CreateAndReopenWithCF({"pikachu"}, options);
@ -964,6 +933,7 @@ TEST_F(DBTest, LevelLimitReopen) {
options.max_bytes_for_level_multiplier_additional.resize(10, 1); options.max_bytes_for_level_multiplier_additional.resize(10, 1);
ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, options)); ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, options));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, PutDeleteGet) { TEST_F(DBTest, PutDeleteGet) {
do { do {
@ -1110,6 +1080,7 @@ TEST_F(DBTest, GetFromVersions) {
} while (ChangeOptions()); } while (ChangeOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, GetSnapshot) { TEST_F(DBTest, GetSnapshot) {
anon::OptionsOverride options_override; anon::OptionsOverride options_override;
options_override.skip_policy = kSkipNoSnapshot; options_override.skip_policy = kSkipNoSnapshot;
@ -1135,6 +1106,7 @@ TEST_F(DBTest, GetSnapshot) {
} }
} while (ChangeOptions()); } while (ChangeOptions());
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, GetLevel0Ordering) { TEST_F(DBTest, GetLevel0Ordering) {
do { do {
@ -1162,6 +1134,7 @@ TEST_F(DBTest, WrongLevel0Config) {
ASSERT_OK(DB::Open(options, dbname_, &db_)); ASSERT_OK(DB::Open(options, dbname_, &db_));
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, GetOrderedByLevels) { TEST_F(DBTest, GetOrderedByLevels) {
do { do {
CreateAndReopenWithCF({"pikachu"}, CurrentOptions()); CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
@ -1233,6 +1206,7 @@ TEST_F(DBTest, GetEncountersEmptyLevel) {
ASSERT_EQ(NumTableFilesAtLevel(0, 1), 1); // XXX ASSERT_EQ(NumTableFilesAtLevel(0, 1), 1); // XXX
} while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction)); } while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction));
} }
#endif // ROCKSDB_LITE
// KeyMayExist can lead to a few false positives, but not false negatives. // KeyMayExist can lead to a few false positives, but not false negatives.
// To make test deterministic, use a much larger number of bits per key-20 than // To make test deterministic, use a much larger number of bits per key-20 than
@ -1365,6 +1339,7 @@ TEST_F(DBTest, NonBlockingIteration) {
kSkipMmapReads)); kSkipMmapReads));
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, ManagedNonBlockingIteration) { TEST_F(DBTest, ManagedNonBlockingIteration) {
do { do {
ReadOptions non_blocking_opts, regular_opts; ReadOptions non_blocking_opts, regular_opts;
@ -1429,6 +1404,7 @@ TEST_F(DBTest, ManagedNonBlockingIteration) {
} while (ChangeOptions(kSkipPlainTable | kSkipNoSeekToLast | kSkipHashCuckoo | } while (ChangeOptions(kSkipPlainTable | kSkipNoSeekToLast | kSkipHashCuckoo |
kSkipMmapReads)); kSkipMmapReads));
} }
#endif // ROCKSDB_LITE
// A delete is skipped for key if KeyMayExist(key) returns False // A delete is skipped for key if KeyMayExist(key) returns False
// Tests Writebatch consistency and proper delete behaviour // Tests Writebatch consistency and proper delete behaviour
@ -2333,6 +2309,7 @@ TEST_F(DBTest, FlushMultipleMemtable) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, NumImmutableMemTable) { TEST_F(DBTest, NumImmutableMemTable) {
do { do {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -2442,6 +2419,7 @@ TEST_F(DBTest, NumImmutableMemTable) {
ASSERT_TRUE(GetPerfLevel() == kDisable); ASSERT_TRUE(GetPerfLevel() == kDisable);
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, FlushEmptyColumnFamily) { TEST_F(DBTest, FlushEmptyColumnFamily) {
// Block flush thread and disable compaction thread // Block flush thread and disable compaction thread
@ -2487,6 +2465,7 @@ TEST_F(DBTest, FlushEmptyColumnFamily) {
sleeping_task_low.WaitUntilDone(); sleeping_task_low.WaitUntilDone();
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, GetProperty) { TEST_F(DBTest, GetProperty) {
// Set sizes to both background thread pool to be 1 and block them. // Set sizes to both background thread pool to be 1 and block them.
env_->SetBackgroundThreads(1, Env::HIGH); env_->SetBackgroundThreads(1, Env::HIGH);
@ -2792,6 +2771,7 @@ TEST_F(DBTest, EstimatePendingCompBytes) {
"rocksdb.estimate-pending-compaction-bytes", &int_num)); "rocksdb.estimate-pending-compaction-bytes", &int_num));
ASSERT_EQ(int_num, 0U); ASSERT_EQ(int_num, 0U);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, FLUSH) { TEST_F(DBTest, FLUSH) {
do { do {
@ -2851,7 +2831,7 @@ TEST_F(DBTest, RecoveryWithEmptyLog) {
} while (ChangeOptions()); } while (ChangeOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, FlushSchedule) { TEST_F(DBTest, FlushSchedule) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.disable_auto_compactions = true; options.disable_auto_compactions = true;
@ -2892,7 +2872,7 @@ TEST_F(DBTest, FlushSchedule) {
ASSERT_LE(pikachu_tables, static_cast<uint64_t>(10)); ASSERT_LE(pikachu_tables, static_cast<uint64_t>(10));
ASSERT_GT(pikachu_tables, static_cast<uint64_t>(0)); ASSERT_GT(pikachu_tables, static_cast<uint64_t>(0));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, ManifestRollOver) { TEST_F(DBTest, ManifestRollOver) {
do { do {
@ -2940,6 +2920,7 @@ TEST_F(DBTest, IdentityAcrossRestarts) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, RecoverWithLargeLog) { TEST_F(DBTest, RecoverWithLargeLog) {
do { do {
{ {
@ -2966,6 +2947,7 @@ TEST_F(DBTest, RecoverWithLargeLog) {
ASSERT_GT(NumTableFilesAtLevel(0, 1), 1); ASSERT_GT(NumTableFilesAtLevel(0, 1), 1);
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#endif // ROCKSDB_LITE
namespace { namespace {
class KeepFilter : public CompactionFilter { class KeepFilter : public CompactionFilter {
@ -3030,6 +3012,7 @@ class DelayFilterFactory : public CompactionFilterFactory {
}; };
} // namespace } // namespace
#ifndef ROCKSDB_LITE
TEST_F(DBTest, CompressedCache) { TEST_F(DBTest, CompressedCache) {
if (!Snappy_Supported()) { if (!Snappy_Supported()) {
return; return;
@ -3153,6 +3136,7 @@ static std::string CompressibleString(Random* rnd, int len) {
test::CompressibleString(rnd, 0.8, len, &r); test::CompressibleString(rnd, 0.8, len, &r);
return r; return r;
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, FailMoreDbPaths) { TEST_F(DBTest, FailMoreDbPaths) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -3183,6 +3167,7 @@ void CheckColumnFamilyMeta(const ColumnFamilyMetaData& cf_meta) {
ASSERT_EQ(cf_meta.size, cf_size); ASSERT_EQ(cf_meta.size, cf_size);
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, ColumnFamilyMetaDataTest) { TEST_F(DBTest, ColumnFamilyMetaDataTest) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.create_if_missing = true; options.create_if_missing = true;
@ -3329,6 +3314,7 @@ TEST_F(DBTest, RepeatedWritesToSameKey) {
} }
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, SparseMerge) { TEST_F(DBTest, SparseMerge) {
do { do {
@ -3375,6 +3361,7 @@ TEST_F(DBTest, SparseMerge) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
static bool Between(uint64_t val, uint64_t low, uint64_t high) { static bool Between(uint64_t val, uint64_t low, uint64_t high) {
bool result = (val >= low) && (val <= high); bool result = (val >= low) && (val <= high);
if (!result) { if (!result) {
@ -3587,6 +3574,7 @@ TEST_F(DBTest, ApproximateSizes_MixOfSmallAndLarge) {
// ApproximateOffsetOf() is not yet implemented in plain table format. // ApproximateOffsetOf() is not yet implemented in plain table format.
} while (ChangeOptions(kSkipPlainTable)); } while (ChangeOptions(kSkipPlainTable));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, IteratorPinsRef) { TEST_F(DBTest, IteratorPinsRef) {
do { do {
@ -3614,6 +3602,7 @@ TEST_F(DBTest, IteratorPinsRef) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, Snapshot) { TEST_F(DBTest, Snapshot) {
anon::OptionsOverride options_override; anon::OptionsOverride options_override;
options_override.skip_policy = kSkipNoSnapshot; options_override.skip_policy = kSkipNoSnapshot;
@ -3716,6 +3705,7 @@ TEST_F(DBTest, HiddenValuesAreRemoved) {
} while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction | } while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction |
kSkipPlainTable | kSkipHashCuckoo)); kSkipPlainTable | kSkipHashCuckoo));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, CompactBetweenSnapshots) { TEST_F(DBTest, CompactBetweenSnapshots) {
anon::OptionsOverride options_override; anon::OptionsOverride options_override;
@ -3821,6 +3811,7 @@ TEST_F(DBTest, UnremovableSingleDelete) {
kSkipUniversalCompaction | kSkipMergePut)); kSkipUniversalCompaction | kSkipMergePut));
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, DeletionMarkers1) { TEST_F(DBTest, DeletionMarkers1) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.max_background_flushes = 0; options.max_background_flushes = 0;
@ -3930,6 +3921,7 @@ TEST_F(DBTest, OverlapInLevel0) {
ASSERT_EQ("NOT_FOUND", Get(1, "600")); ASSERT_EQ("NOT_FOUND", Get(1, "600"));
} while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction)); } while (ChangeOptions(kSkipUniversalCompaction | kSkipFIFOCompaction));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, ComparatorCheck) { TEST_F(DBTest, ComparatorCheck) {
class NewComparator : public Comparator { class NewComparator : public Comparator {
@ -4122,6 +4114,7 @@ TEST_F(DBTest, DestroyDBMetaDatabase) {
ASSERT_TRUE(!(DB::Open(options, metametadbname, &db)).ok()); ASSERT_TRUE(!(DB::Open(options, metametadbname, &db)).ok());
} }
#ifndef ROCKSDB_LITE
// Check that number of files does not grow when writes are dropped // Check that number of files does not grow when writes are dropped
TEST_F(DBTest, DropWrites) { TEST_F(DBTest, DropWrites) {
do { do {
@ -4192,6 +4185,7 @@ TEST_F(DBTest, DropWritesFlush) {
env_->drop_writes_.store(false, std::memory_order_release); env_->drop_writes_.store(false, std::memory_order_release);
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#endif // ROCKSDB_LITE
// Check that CompactRange() returns failure if there is not enough space left // Check that CompactRange() returns failure if there is not enough space left
// on device // on device
@ -4241,6 +4235,7 @@ TEST_F(DBTest, NonWritableFileSystem) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, ManifestWriteError) { TEST_F(DBTest, ManifestWriteError) {
// Test for the following problem: // Test for the following problem:
// (a) Compaction produces file F // (a) Compaction produces file F
@ -4282,6 +4277,7 @@ TEST_F(DBTest, ManifestWriteError) {
ASSERT_EQ("bar", Get("foo")); ASSERT_EQ("bar", Get("foo"));
} }
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, PutFailsParanoid) { TEST_F(DBTest, PutFailsParanoid) {
// Test the following: // Test the following:
@ -4540,6 +4536,7 @@ TEST_F(DBTest, BloomFilterWrapper) {
ASSERT_EQ(2U * maxKey, policy->GetCounter()); ASSERT_EQ(2U * maxKey, policy->GetCounter());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, SnapshotFiles) { TEST_F(DBTest, SnapshotFiles) {
do { do {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -4667,6 +4664,7 @@ TEST_F(DBTest, SnapshotFiles) {
dbfull()->DisableFileDeletions(); dbfull()->DisableFileDeletions();
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#endif
TEST_F(DBTest, CompactOnFlush) { TEST_F(DBTest, CompactOnFlush) {
anon::OptionsOverride options_override; anon::OptionsOverride options_override;
@ -4806,6 +4804,7 @@ TEST_F(DBTest, FlushOneColumnFamily) {
} }
} }
#ifndef ROCKSDB_LITE
// In https://reviews.facebook.net/D20661 we change // In https://reviews.facebook.net/D20661 we change
// recovery behavior: previously for each log file each column family // recovery behavior: previously for each log file each column family
// memtable was flushed, even it was empty. Now it's changed: // memtable was flushed, even it was empty. Now it's changed:
@ -5011,6 +5010,7 @@ TEST_F(DBTest, SharedWriteBuffer) {
static_cast<uint64_t>(4)); static_cast<uint64_t>(4));
} }
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, PurgeInfoLogs) { TEST_F(DBTest, PurgeInfoLogs) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -5083,6 +5083,7 @@ TEST_F(DBTest, SyncMultipleLogs) {
ASSERT_OK(dbfull()->SyncWAL()); ASSERT_OK(dbfull()->SyncWAL());
} }
#ifndef ROCKSDB_LITE
// //
// Test WAL recovery for the various modes available // Test WAL recovery for the various modes available
// //
@ -5365,7 +5366,6 @@ TEST_F(DBTest, kSkipAnyCorruptedRecords) {
} }
} }
// Multi-threaded test: // Multi-threaded test:
namespace { namespace {
@ -5532,6 +5532,7 @@ TEST_P(MultiThreadedDBTest, MultiThreaded) {
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
MultiThreaded, MultiThreadedDBTest, MultiThreaded, MultiThreadedDBTest,
::testing::ValuesIn(MultiThreadedDBTest::GenerateOptionConfigs())); ::testing::ValuesIn(MultiThreadedDBTest::GenerateOptionConfigs()));
#endif // ROCKSDB_LITE
// Group commit test: // Group commit test:
namespace { namespace {
@ -5672,6 +5673,7 @@ class ModelDB: public DB {
return s; return s;
} }
#ifndef ROCKSDB_LITE
using DB::AddFile; using DB::AddFile;
virtual Status AddFile(ColumnFamilyHandle* column_family, virtual Status AddFile(ColumnFamilyHandle* column_family,
const ExternalSstFileInfo* file_path, const ExternalSstFileInfo* file_path,
@ -5690,6 +5692,7 @@ class ModelDB: public DB {
TablePropertiesCollection* props) override { TablePropertiesCollection* props) override {
return Status(); return Status();
} }
#endif // ROCKSDB_LITE
using DB::KeyMayExist; using DB::KeyMayExist;
virtual bool KeyMayExist(const ReadOptions& options, virtual bool KeyMayExist(const ReadOptions& options,
@ -5834,7 +5837,9 @@ class ModelDB: public DB {
return Status::OK(); return Status::OK();
} }
#ifndef ROCKSDB_LITE
virtual Status DisableFileDeletions() override { return Status::OK(); } virtual Status DisableFileDeletions() override { return Status::OK(); }
virtual Status EnableFileDeletions(bool force) override { virtual Status EnableFileDeletions(bool force) override {
return Status::OK(); return Status::OK();
} }
@ -5849,11 +5854,6 @@ class ModelDB: public DB {
virtual Status DeleteFile(std::string name) override { return Status::OK(); } virtual Status DeleteFile(std::string name) override { return Status::OK(); }
virtual Status GetDbIdentity(std::string& identity) const override {
return Status::OK();
}
virtual SequenceNumber GetLatestSequenceNumber() const override { return 0; }
virtual Status GetUpdatesSince( virtual Status GetUpdatesSince(
rocksdb::SequenceNumber, unique_ptr<rocksdb::TransactionLogIterator>*, rocksdb::SequenceNumber, unique_ptr<rocksdb::TransactionLogIterator>*,
const TransactionLogIterator::ReadOptions& const TransactionLogIterator::ReadOptions&
@ -5861,13 +5861,20 @@ class ModelDB: public DB {
return Status::NotSupported("Not supported in Model DB"); return Status::NotSupported("Not supported in Model DB");
} }
virtual ColumnFamilyHandle* DefaultColumnFamily() const override {
return nullptr;
}
virtual void GetColumnFamilyMetaData( virtual void GetColumnFamilyMetaData(
ColumnFamilyHandle* column_family, ColumnFamilyHandle* column_family,
ColumnFamilyMetaData* metadata) override {} ColumnFamilyMetaData* metadata) override {}
#endif // ROCKSDB_LITE
virtual Status GetDbIdentity(std::string& identity) const override {
return Status::OK();
}
virtual SequenceNumber GetLatestSequenceNumber() const override { return 0; }
virtual ColumnFamilyHandle* DefaultColumnFamily() const override {
return nullptr;
}
private: private:
class ModelIter: public Iterator { class ModelIter: public Iterator {
@ -6128,6 +6135,7 @@ TEST_F(DBTest, MultiGetEmpty) {
} while (ChangeCompactOptions()); } while (ChangeCompactOptions());
} }
#ifndef ROCKSDB_LITE
namespace { namespace {
void PrefixScanInit(DBTest *dbtest) { void PrefixScanInit(DBTest *dbtest) {
char buf[100]; char buf[100];
@ -6230,6 +6238,7 @@ TEST_F(DBTest, PrefixScan) {
} // end of while } // end of while
XFUNC_TEST("", "dbtest_prefix", prefix_skip1, XFuncPoint::SetSkip, 0); XFUNC_TEST("", "dbtest_prefix", prefix_skip1, XFuncPoint::SetSkip, 0);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, BlockBasedTablePrefixIndexTest) { TEST_F(DBTest, BlockBasedTablePrefixIndexTest) {
// create a DB with block prefix index // create a DB with block prefix index
@ -6291,6 +6300,7 @@ TEST_F(DBTest, ChecksumTest) {
ASSERT_EQ("h", Get("g")); ASSERT_EQ("h", Get("g"));
} }
#ifndef ROCKSDB_LITE
TEST_P(DBTestWithParam, FIFOCompactionTest) { TEST_P(DBTestWithParam, FIFOCompactionTest) {
for (int iter = 0; iter < 2; ++iter) { for (int iter = 0; iter < 2; ++iter) {
// first iteration -- auto compaction // first iteration -- auto compaction
@ -6330,6 +6340,7 @@ TEST_P(DBTestWithParam, FIFOCompactionTest) {
} }
} }
} }
#endif // ROCKSDB_LITE
// verify that we correctly deprecated timeout_hint_us // verify that we correctly deprecated timeout_hint_us
TEST_F(DBTest, SimpleWriteTimeoutTest) { TEST_F(DBTest, SimpleWriteTimeoutTest) {
@ -6340,6 +6351,7 @@ TEST_F(DBTest, SimpleWriteTimeoutTest) {
ASSERT_NOK(Put(Key(1), Key(1) + std::string(100, 'v'), write_opt)); ASSERT_NOK(Put(Key(1), Key(1) + std::string(100, 'v'), write_opt));
} }
#ifndef ROCKSDB_LITE
/* /*
* This test is not reliable enough as it heavily depends on disk behavior. * This test is not reliable enough as it heavily depends on disk behavior.
*/ */
@ -6432,6 +6444,7 @@ TEST_F(DBTest, TableOptionsSanitizeTest) {
options.prefix_extractor.reset(NewFixedPrefixTransform(1)); options.prefix_extractor.reset(NewFixedPrefixTransform(1));
ASSERT_OK(TryReopen(options)); ASSERT_OK(TryReopen(options));
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, SanitizeNumThreads) { TEST_F(DBTest, SanitizeNumThreads) {
for (int attempt = 0; attempt < 2; attempt++) { for (int attempt = 0; attempt < 2; attempt++) {
@ -6677,6 +6690,7 @@ TEST_F(DBTest, DisableDataSyncTest) {
} }
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, DynamicMemtableOptions) { TEST_F(DBTest, DynamicMemtableOptions) {
const uint64_t k64KB = 1 << 16; const uint64_t k64KB = 1 << 16;
const uint64_t k128KB = 1 << 17; const uint64_t k128KB = 1 << 17;
@ -6818,6 +6832,7 @@ TEST_F(DBTest, DynamicMemtableOptions) {
rocksdb::SyncPoint::GetInstance()->DisableProcessing(); rocksdb::SyncPoint::GetInstance()->DisableProcessing();
} }
#endif // ROCKSDB_LITE
#if ROCKSDB_USING_THREAD_STATUS #if ROCKSDB_USING_THREAD_STATUS
namespace { namespace {
@ -7243,6 +7258,7 @@ TEST_P(DBTestWithParam, PreShutdownCompactionMiddle) {
#endif // ROCKSDB_USING_THREAD_STATUS #endif // ROCKSDB_USING_THREAD_STATUS
#ifndef ROCKSDB_LITE
TEST_F(DBTest, FlushOnDestroy) { TEST_F(DBTest, FlushOnDestroy) {
WriteOptions wo; WriteOptions wo;
wo.disableWAL = true; wo.disableWAL = true;
@ -7696,6 +7712,7 @@ TEST_F(DBTest, DynamicCompactionOptions) {
rocksdb::SyncPoint::GetInstance()->DisableProcessing(); rocksdb::SyncPoint::GetInstance()->DisableProcessing();
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, FileCreationRandomFailure) { TEST_F(DBTest, FileCreationRandomFailure) {
Options options; Options options;
@ -7757,6 +7774,7 @@ TEST_F(DBTest, FileCreationRandomFailure) {
} }
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, DynamicMiscOptions) { TEST_F(DBTest, DynamicMiscOptions) {
// Test max_sequential_skip_in_iterations // Test max_sequential_skip_in_iterations
Options options; Options options;
@ -7806,6 +7824,7 @@ TEST_F(DBTest, DynamicMiscOptions) {
// No reseek // No reseek
assert_reseek_count(300, 1); assert_reseek_count(300, 1);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, DontDeletePendingOutputs) { TEST_F(DBTest, DontDeletePendingOutputs) {
Options options; Options options;
@ -7839,6 +7858,7 @@ TEST_F(DBTest, DontDeletePendingOutputs) {
Compact("a", "b"); Compact("a", "b");
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, DontDeleteMovedFile) { TEST_F(DBTest, DontDeleteMovedFile) {
// This test triggers move compaction and verifies that the file is not // This test triggers move compaction and verifies that the file is not
// deleted when it's part of move compaction // deleted when it's part of move compaction
@ -7941,6 +7961,7 @@ TEST_F(DBTest, OptimizeFiltersForHits) {
ASSERT_EQ(Get(1, Key(i)), "val"); ASSERT_EQ(Get(1, Key(i)), "val");
} }
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, L0L1L2AndUpHitCounter) { TEST_F(DBTest, L0L1L2AndUpHitCounter) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -8040,6 +8061,7 @@ TEST_F(DBTest, MutexWaitStats) {
ThreadStatus::STATE_MUTEX_WAIT, 0); ThreadStatus::STATE_MUTEX_WAIT, 0);
} }
#ifndef ROCKSDB_LITE
// This reproduces a bug where we don't delete a file because when it was // This reproduces a bug where we don't delete a file because when it was
// supposed to be deleted, it was blocked by pending_outputs // supposed to be deleted, it was blocked by pending_outputs
// Consider: // Consider:
@ -8135,6 +8157,7 @@ TEST_F(DBTest, DeleteObsoleteFilesPendingOutputs) {
ASSERT_EQ(Status::NotFound(), env_->FileExists(dbname_ + file_on_L2)); ASSERT_EQ(Status::NotFound(), env_->FileExists(dbname_ + file_on_L2));
listener->VerifyMatchedCount(1); listener->VerifyMatchedCount(1);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, CloseSpeedup) { TEST_F(DBTest, CloseSpeedup) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -8256,6 +8279,7 @@ TEST_F(DBTest, MergeTestTime) {
#endif // ROCKSDB_USING_THREAD_STATUS #endif // ROCKSDB_USING_THREAD_STATUS
} }
#ifndef ROCKSDB_LITE
TEST_P(DBTestWithParam, MergeCompactionTimeTest) { TEST_P(DBTestWithParam, MergeCompactionTimeTest) {
SetPerfLevel(kEnableTime); SetPerfLevel(kEnableTime);
Options options; Options options;
@ -8306,6 +8330,7 @@ TEST_P(DBTestWithParam, FilterCompactionTimeTest) {
ASSERT_NE(TestGetTickerCount(options, FILTER_OPERATION_TOTAL_TIME), 0); ASSERT_NE(TestGetTickerCount(options, FILTER_OPERATION_TOTAL_TIME), 0);
delete itr; delete itr;
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, TestLogCleanup) { TEST_F(DBTest, TestLogCleanup) {
Options options = CurrentOptions(); Options options = CurrentOptions();
@ -8322,6 +8347,7 @@ TEST_F(DBTest, TestLogCleanup) {
} }
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, EmptyCompactedDB) { TEST_F(DBTest, EmptyCompactedDB) {
Options options; Options options;
options.max_open_files = -1; options.max_open_files = -1;
@ -8332,6 +8358,7 @@ TEST_F(DBTest, EmptyCompactedDB) {
ASSERT_TRUE(s.IsNotSupported()); ASSERT_TRUE(s.IsNotSupported());
Close(); Close();
} }
#endif // ROCKSDB_LITE
class CountingDeleteTabPropCollector : public TablePropertiesCollector { class CountingDeleteTabPropCollector : public TablePropertiesCollector {
public: public:
@ -8373,6 +8400,7 @@ class CountingDeleteTabPropCollectorFactory
} }
}; };
#ifndef ROCKSDB_LITE
TEST_F(DBTest, TablePropertiesNeedCompactTest) { TEST_F(DBTest, TablePropertiesNeedCompactTest) {
Random rnd(301); Random rnd(301);
@ -8671,6 +8699,7 @@ TEST_F(DBTest, PromoteL0Failure) {
status = experimental::PromoteL0(db_, db_->DefaultColumnFamily()); status = experimental::PromoteL0(db_, db_->DefaultColumnFamily());
ASSERT_TRUE(status.IsInvalidArgument()); ASSERT_TRUE(status.IsInvalidArgument());
} }
#endif // ROCKSDB_LITE
// Github issue #596 // Github issue #596
TEST_F(DBTest, HugeNumberOfLevels) { TEST_F(DBTest, HugeNumberOfLevels) {
@ -8877,6 +8906,7 @@ TEST_F(DBTest, HardLimit) {
rocksdb::SyncPoint::GetInstance()->DisableProcessing(); rocksdb::SyncPoint::GetInstance()->DisableProcessing();
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, SoftLimit) { TEST_F(DBTest, SoftLimit) {
Options options; Options options;
options.env = env_; options.env = env_;
@ -8996,6 +9026,7 @@ TEST_F(DBTest, SoftLimit) {
ASSERT_EQ(sleep_count.load(), 0); ASSERT_EQ(sleep_count.load(), 0);
rocksdb::SyncPoint::GetInstance()->DisableProcessing(); rocksdb::SyncPoint::GetInstance()->DisableProcessing();
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, FailWhenCompressionNotSupportedTest) { TEST_F(DBTest, FailWhenCompressionNotSupportedTest) {
CompressionType compressions[] = {kZlibCompression, kBZip2Compression, CompressionType compressions[] = {kZlibCompression, kBZip2Compression,
@ -9017,6 +9048,7 @@ TEST_F(DBTest, FailWhenCompressionNotSupportedTest) {
} }
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, RowCache) { TEST_F(DBTest, RowCache) {
Options options = CurrentOptions(); Options options = CurrentOptions();
options.statistics = rocksdb::CreateDBStatistics(); options.statistics = rocksdb::CreateDBStatistics();
@ -9035,6 +9067,7 @@ TEST_F(DBTest, RowCache) {
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 1); ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 1);
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 1); ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 1);
} }
#endif // ROCKSDB_LITE
// TODO(3.13): fix the issue of Seek() + Prev() which might not necessary // TODO(3.13): fix the issue of Seek() + Prev() which might not necessary
// return the biggest key which is smaller than the seek key. // return the biggest key which is smaller than the seek key.
@ -9095,6 +9128,7 @@ TEST_F(DBTest, DeletingOldWalAfterDrop) {
EXPECT_GT(lognum2, lognum1); EXPECT_GT(lognum2, lognum1);
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, RateLimitedDelete) { TEST_F(DBTest, RateLimitedDelete) {
rocksdb::SyncPoint::GetInstance()->LoadDependency({ rocksdb::SyncPoint::GetInstance()->LoadDependency({
{"DBTest::RateLimitedDelete:1", {"DBTest::RateLimitedDelete:1",
@ -9263,6 +9297,7 @@ TEST_F(DBTest, DestroyDBWithRateLimitedDelete) {
// We have deleted the 4 sst files in the delete_scheduler // We have deleted the 4 sst files in the delete_scheduler
ASSERT_EQ(bg_delete_file, 4); ASSERT_EQ(bg_delete_file, 4);
} }
#endif // ROCKSDB_LITE
TEST_F(DBTest, UnsupportedManualSync) { TEST_F(DBTest, UnsupportedManualSync) {
DestroyAndReopen(CurrentOptions()); DestroyAndReopen(CurrentOptions());
@ -9271,6 +9306,7 @@ TEST_F(DBTest, UnsupportedManualSync) {
ASSERT_TRUE(s.IsNotSupported()); ASSERT_TRUE(s.IsNotSupported());
} }
#ifndef ROCKSDB_LITE
TEST_F(DBTest, OpenDBWithInfiniteMaxOpenFiles) { TEST_F(DBTest, OpenDBWithInfiniteMaxOpenFiles) {
// Open DB with infinite max open files // Open DB with infinite max open files
// - First iteration use 1 thread to open files // - First iteration use 1 thread to open files
@ -9815,6 +9851,7 @@ TEST_F(DBTest, AddExternalSstFileMultiThreaded) {
} while (ChangeOptions(kSkipPlainTable | kSkipUniversalCompaction | } while (ChangeOptions(kSkipPlainTable | kSkipUniversalCompaction |
kSkipFIFOCompaction)); kSkipFIFOCompaction));
} }
#endif // ROCKSDB_LITE
// 1 Create some SST files by inserting K-V pairs into DB // 1 Create some SST files by inserting K-V pairs into DB
// 2 Close DB and change suffix from ".sst" to ".ldb" for every other SST file // 2 Close DB and change suffix from ".sst" to ".ldb" for every other SST file
@ -9887,6 +9924,47 @@ TEST_F(DBTest, PauseBackgroundWorkTest) {
ASSERT_EQ(true, done.load()); ASSERT_EQ(true, done.load());
} }
#ifndef ROCKSDB_LITE
class BloomStatsTestWithParam
: public DBTest,
public testing::WithParamInterface<std::tuple<bool, bool>> {
public:
BloomStatsTestWithParam() {
use_block_table_ = std::get<0>(GetParam());
use_block_based_builder_ = std::get<1>(GetParam());
options_.create_if_missing = true;
options_.prefix_extractor.reset(rocksdb::NewFixedPrefixTransform(4));
options_.memtable_prefix_bloom_bits = 8 * 1024;
if (use_block_table_) {
BlockBasedTableOptions table_options;
table_options.hash_index_allow_collision = false;
table_options.filter_policy.reset(
NewBloomFilterPolicy(10, use_block_based_builder_));
options_.table_factory.reset(NewBlockBasedTableFactory(table_options));
} else {
PlainTableOptions table_options;
options_.table_factory.reset(NewPlainTableFactory(table_options));
}
perf_context.Reset();
DestroyAndReopen(options_);
}
~BloomStatsTestWithParam() {
perf_context.Reset();
Destroy(options_);
}
// Required if inheriting from testing::WithParamInterface<>
static void SetUpTestCase() {}
static void TearDownTestCase() {}
bool use_block_table_;
bool use_block_based_builder_;
Options options_;
};
// 1 Insert 2 K-V pairs into DB // 1 Insert 2 K-V pairs into DB
// 2 Call Get() for both keys - expext memtable bloom hit stat to be 2 // 2 Call Get() for both keys - expext memtable bloom hit stat to be 2
// 3 Call Get() for nonexisting key - expect memtable bloom miss stat to be 1 // 3 Call Get() for nonexisting key - expect memtable bloom miss stat to be 1
@ -10000,6 +10078,7 @@ INSTANTIATE_TEST_CASE_P(BloomStatsTestWithParam, BloomStatsTestWithParam,
::testing::Values(std::make_tuple(true, true), ::testing::Values(std::make_tuple(true, true),
std::make_tuple(true, false), std::make_tuple(true, false),
std::make_tuple(false, false))); std::make_tuple(false, false)));
#endif // ROCKSDB_LITE
} // namespace rocksdb } // namespace rocksdb
#endif #endif

View File

@ -86,7 +86,11 @@ bool DBTestBase::ChangeOptions(int skip_mask) {
option_config_ == kPlainTableCappedPrefixNonMmap || option_config_ == kPlainTableCappedPrefixNonMmap ||
option_config_ == kPlainTableAllBytesPrefix || option_config_ == kPlainTableAllBytesPrefix ||
option_config_ == kVectorRep || option_config_ == kHashLinkList || option_config_ == kVectorRep || option_config_ == kHashLinkList ||
option_config_ == kHashCuckoo) { option_config_ == kHashCuckoo ||
option_config_ == kUniversalCompaction ||
option_config_ == kUniversalCompactionMultiLevel ||
option_config_ == kUniversalSubcompactions ||
option_config_ == kFIFOCompaction) {
continue; continue;
} }
#endif #endif