1. 19 6月, 2020 1 次提交
    • A
      add `CompactionFilter` to stress/crash tests (#6988) · 775dc623
      Andrew Kryczka 提交于
      Summary:
      Added a `CompactionFilter` that is aware of the stress test's expected state. It only drops key versions that are already covered according to the expected state. It is incompatible with snapshots (same as all `CompactionFilter`s), so disables all snapshot-related features when used in the crash test.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6988
      
      Test Plan:
      running a minified blackbox crash test
      
      ```
      $ TEST_TMPDIR=/dev/shm python tools/db_crashtest.py blackbox --max_key=1000000 -write_buffer_size=1048576 -max_bytes_for_level_base=4194304 -target_file_size_base=1048576 -value_size_mult=33 --interval=10 --duration=3600
      ```
      
      Reviewed By: anand1976
      
      Differential Revision: D22072888
      
      Pulled By: ajkr
      
      fbshipit-source-id: 727b9d7a90d5eab18be0ec6cd5a810712ac13320
      775dc623
  2. 19 3月, 2020 1 次提交
    • L
      Remove GetSortedWalFiles/GetCurrentWalFile from the crash test (#6491) · 217ce200
      Levi Tamasi 提交于
      Summary:
      Currently, `db_stress` tests a randomly picked one of `GetLiveFiles`,
      `GetSortedWalFiles`, and `GetCurrentWalFile` with a 1/N chance when the
      command line parameter `get_live_files_and_wal_files_one_in` is specified.
      The problem is that `GetSortedWalFiles` and `GetCurrentWalFile` are unreliable
      in the sense that they can return errors if another thread removes a WAL file
      while they are executing (which is a perfectly plausible and legitimate scenario).
      The patch splits this command line parameter into three (one for each API),
      and changes the crash test script so that only `GetLiveFiles` is tested during
      our continuous crash test runs.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6491
      
      Test Plan:
      ```
      make check
      python tools/db_crashtest.py whitebox
      ```
      
      Reviewed By: siying
      
      Differential Revision: D20312200
      
      Pulled By: ltamasi
      
      fbshipit-source-id: e7c3481eddfe3bd3d5349476e34abc9eee5b7dc8
      217ce200
  3. 21 2月, 2020 1 次提交
    • S
      Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) · fdf882de
      sdong 提交于
      Summary:
      When dynamically linking two binaries together, different builds of RocksDB from two sources might cause errors. To provide a tool for user to solve the problem, the RocksDB namespace is changed to a flag which can be overridden in build time.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6433
      
      Test Plan: Build release, all and jtest. Try to build with ROCKSDB_NAMESPACE with another flag.
      
      Differential Revision: D19977691
      
      fbshipit-source-id: aa7f2d0972e1c31d75339ac48478f34f6cfcfb3e
      fdf882de
  4. 21 12月, 2019 5 次提交
    • A
      Add Transaction::MultiGet to db_stress (#6227) · d4da4128
      anand76 提交于
      Summary:
      Call Transaction::MultiGet from TestMultiGet() in db_stress. We add some Puts/Merges/Deletes into the transaction in order to exercise MultiGetFromBatchAndDB. There is no data verification on read, just check status. There is currently no read data verification in db_stress as it requires synchronization with writes. It needs to be tackled separately.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6227
      
      Test Plan: make crash_test_with_txn
      
      Differential Revision: D19204611
      
      Pulled By: anand1976
      
      fbshipit-source-id: 770d0e30d002e88626c264c58103f1d709bb060c
      d4da4128
    • S
      db_stress: cover approximate size (#6213) · 79cc8dc2
      sdong 提交于
      Summary:
      db_stress to execute DB::GetApproximateSizes() with randomized keys and options. Return value is not validated but error will be reported.
      Two ways to generate the range keys: (1) two random keys; (2) a small range.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6213
      
      Test Plan: (1) run "make crash_test" for a while; (2) hack the code to ingest some errors to see it is reported.
      
      Differential Revision: D19204665
      
      fbshipit-source-id: 652db36f13bcb5a3bd8fe4a10c0aa22a77a0bce2
      79cc8dc2
    • S
      db_stress: improvements in TestIterator (#6166) · e55c2b3f
      sdong 提交于
      Summary:
      1. Cover SeekToFirst() and SeekToLast().
      2. Try to record the history of iterator operations.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6166
      
      Test Plan: Do some manual changes in the code to cover the failure cases and see the error printing is correct and SeekToFirst() and SeekToLast() sometimes show up.
      
      Differential Revision: D19047079
      
      fbshipit-source-id: 1ed616f919fe4d32c0a021fc37932a7bd3063bcd
      e55c2b3f
    • Z
      db_stress: Added the verification for GetLiveFiles, GetSortedWalFiles and GetCurrentWalFile (#6224) · f89dea4f
      Zhichao Cao 提交于
      Summary:
      Add the verification in operateDB to verify GetLiveFiles, GetSortedWalFiles and GetCurrentWalFile. The test will be called every 1 out of N, N is decided by get_live_files_and_wal_files_one_i, whose default is 1000000.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6224
      
      Test Plan: pass db_stress default run.
      
      Differential Revision: D19183358
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 20073cf72ede77a3e0d3cf5f28304f1f605d2b1a
      f89dea4f
    • Y
      Add more verification to db_stress (#6173) · 670a916d
      Yanqin Jin 提交于
      Summary:
      Currently, db_stress performs verification by calling `VerifyDb()` at the end of test and optionally before tests start. In case of corruption or incorrect result, it will be too late. This PR adds more verification in two ways.
      1. For cf consistency test, each test thread takes a snapshot and verifies every N ops. N is configurable via `-verify_db_one_in`. This option is not supported in other stress tests.
      2. For cf consistency test, we use another background thread in which a secondary instance periodically tails the primary (interval is configurable). We verify the secondary. Once an error is detected, we terminate the test and report. This does not affect other stress tests.
      
      Test plan (devserver)
      ```
      $./db_stress -test_cf_consistency -verify_db_one_in=0 -ops_per_thread=100000 -continuous_verification_interval=100
      $./db_stress -test_cf_consistency -verify_db_one_in=1000 -ops_per_thread=10000 -continuous_verification_interval=0
      $make crash_test
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6173
      
      Differential Revision: D19047367
      
      Pulled By: riversand963
      
      fbshipit-source-id: aeed584ad71f9310c111445f34975e5ab47a0615
      670a916d
  5. 20 12月, 2019 1 次提交
  6. 11 12月, 2019 2 次提交
    • S
      db_stress: sometimes call CancelAllBackgroundWork() and Close() before closing DB (#6141) · 7a99162a
      sdong 提交于
      Summary:
      CancelAllBackgroundWork() and Close() are frequently used features but we don't cover it in stress test. Simply execute them before closing the DB with 1/2 chance.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6141
      
      Test Plan: Run "db_stress".
      
      Differential Revision: D18900861
      
      fbshipit-source-id: 49b46ccfae120d0f9de3e0543b82fb6d715949d0
      7a99162a
    • S
      db_stress: sometimes validate compact range data (#6140) · 14c38bac
      sdong 提交于
      Summary:
      Right now, in db_stress, compact range is simply executed without any immediate data validation. Add a simply validation which compares hash for all keys within the compact range to stay the same against the same snapshot before and after the compaction.
      
      Also, randomly tune most knobs of CompactRangeOptions.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6140
      
      Test Plan: Run db_stress with "--compact_range_one_in=2000 --compact_range_width=100000000" for a while. Manually ingest some hacky code and observe the error path.
      
      Differential Revision: D18900230
      
      fbshipit-source-id: d96e75bc8c38dd5ec702571ffe7cf5f4ea93ee10
      14c38bac
  7. 09 12月, 2019 1 次提交
    • S
      Break db_stress_tool.cc to a list of source files (#6134) · 7d79b326
      sdong 提交于
      Summary:
      db_stress_tool.cc now is a giant file. In order to main it easier to improve and maintain, break it down to multiple source files.
      Most classes are turned into their own files. Separate .h and .cc files are created for gflag definiations. Another .h and .cc files are created for some common functions. Some test execution logic that is only loosely related to class StressTest is moved to db_stress_driver.h and db_stress_driver.cc. All the files are located under db_stress_tool/. The directory name is created as such because if we end it with either stress or test, .gitignore will ignore any file under it and makes it prone to issues in developements.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6134
      
      Test Plan: Build under GCC7 with and without LITE on using GNU Make. Build with GCC 4.8. Build with cmake with -DWITH_TOOL=1
      
      Differential Revision: D18876064
      
      fbshipit-source-id: b25d0a7451840f31ac0f5ebb0068785f783fdf7d
      7d79b326