mock_block_based_table.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright (c) 2019-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #pragma once
  6. #include "rocksdb/filter_policy.h"
  7. #include "table/block_based/block_based_filter_block.h"
  8. #include "table/block_based/block_based_table_reader.h"
  9. #include "table/block_based/filter_policy_internal.h"
  10. namespace ROCKSDB_NAMESPACE {
  11. namespace mock {
  12. class MockBlockBasedTable : public BlockBasedTable {
  13. public:
  14. explicit MockBlockBasedTable(Rep* rep)
  15. : BlockBasedTable(rep, nullptr /* block_cache_tracer */) {}
  16. };
  17. class MockBlockBasedTableTester {
  18. static constexpr int kMockLevel = 0;
  19. public:
  20. Options options_;
  21. ImmutableCFOptions ioptions_;
  22. EnvOptions env_options_;
  23. BlockBasedTableOptions table_options_;
  24. InternalKeyComparator icomp_;
  25. std::unique_ptr<BlockBasedTable> table_;
  26. MockBlockBasedTableTester(const FilterPolicy *filter_policy)
  27. : ioptions_(options_),
  28. env_options_(options_),
  29. icomp_(options_.comparator) {
  30. table_options_.filter_policy.reset(filter_policy);
  31. constexpr bool skip_filters = false;
  32. constexpr bool immortal_table = false;
  33. table_.reset(new MockBlockBasedTable(new BlockBasedTable::Rep(
  34. ioptions_, env_options_, table_options_, icomp_, skip_filters,
  35. kMockLevel, immortal_table)));
  36. }
  37. FilterBitsBuilder* GetBuilder() const {
  38. FilterBuildingContext context(table_options_);
  39. context.column_family_name = "mock_cf";
  40. context.compaction_style = ioptions_.compaction_style;
  41. context.level_at_creation = kMockLevel;
  42. context.info_log = ioptions_.info_log;
  43. return BloomFilterPolicy::GetBuilderFromContext(context);
  44. }
  45. };
  46. } // namespace mock
  47. } // namespace ROCKSDB_NAMESPACE