@ -664,12 +664,28 @@ TEST_F(DBBasicTest, Snapshot) {
# endif // ROCKSDB_LITE
TEST_F ( DBBasicTest , CompactBetweenSnapshots ) {
class DBBasicMultiConfigs : public DBBasicTest ,
public : : testing : : WithParamInterface < int > {
public :
DBBasicMultiConfigs ( ) { option_config_ = GetParam ( ) ; }
static std : : vector < int > GenerateOptionConfigs ( ) {
std : : vector < int > option_configs ;
for ( int option_config = kDefault ; option_config < kEnd ; + + option_config ) {
if ( ! ShouldSkipOptions ( option_config , kSkipFIFOCompaction ) ) {
option_configs . push_back ( option_config ) ;
}
}
return option_configs ;
}
} ;
TEST_P ( DBBasicMultiConfigs , CompactBetweenSnapshots ) {
anon : : OptionsOverride options_override ;
options_override . skip_policy = kSkipNoSnapshot ;
do {
Options options = CurrentOptions ( options_override ) ;
options . disable_auto_compactions = true ;
DestroyAndReopen ( options ) ;
CreateAndReopenWithCF ( { " pikachu " } , options ) ;
Random rnd ( 301 ) ;
FillLevels ( " a " , " z " , 1 ) ;
@ -699,8 +715,7 @@ TEST_F(DBBasicTest, CompactBetweenSnapshots) {
// after we release the snapshot1, only two values left
db_ - > ReleaseSnapshot ( snapshot1 ) ;
FillLevels ( " a " , " z " , 1 ) ;
dbfull ( ) - > CompactRange ( CompactRangeOptions ( ) , handles_ [ 1 ] , nullptr ,
nullptr ) ;
dbfull ( ) - > CompactRange ( CompactRangeOptions ( ) , handles_ [ 1 ] , nullptr , nullptr ) ;
// We have only one valid snapshot snapshot2. Since snapshot1 is
// not valid anymore, "first" should be removed by a compaction.
@ -711,13 +726,15 @@ TEST_F(DBBasicTest, CompactBetweenSnapshots) {
// after we release the snapshot2, only one value should be left
db_ - > ReleaseSnapshot ( snapshot2 ) ;
FillLevels ( " a " , " z " , 1 ) ;
dbfull ( ) - > CompactRange ( CompactRangeOptions ( ) , handles_ [ 1 ] , nullptr ,
nullptr ) ;
dbfull ( ) - > CompactRange ( CompactRangeOptions ( ) , handles_ [ 1 ] , nullptr , nullptr ) ;
ASSERT_EQ ( " sixth " , Get ( 1 , " foo " ) ) ;
ASSERT_EQ ( AllEntriesFor ( " foo " , 1 ) , " [ sixth ] " ) ;
} while ( ChangeOptions ( kSkipFIFOCompaction ) ) ;
}
INSTANTIATE_TEST_CASE_P (
DBBasicMultiConfigs , DBBasicMultiConfigs ,
: : testing : : ValuesIn ( DBBasicMultiConfigs : : GenerateOptionConfigs ( ) ) ) ;
TEST_F ( DBBasicTest , DBOpen_Options ) {
Options options = CurrentOptions ( ) ;
Close ( ) ;