1 load("@fbcode_macros//build_defs:auto_headers.bzl", "AutoHeaders")
3 REPO_PATH = package_name() + "/"
5 BUCK_BINS = "buck-out/gen/" + REPO_PATH
7 TEST_RUNNER = REPO_PATH + "buckifier/rocks_test_runner.sh"
9 rocksdb_compiler_flags = [
10 "-fno-builtin-memcmp",
11 "-DROCKSDB_PLATFORM_POSIX",
12 "-DROCKSDB_LIB_IO_POSIX",
13 "-DROCKSDB_FALLOCATE_PRESENT",
14 "-DROCKSDB_MALLOC_USABLE_SIZE",
15 "-DROCKSDB_RANGESYNC_PRESENT",
16 "-DROCKSDB_SCHED_GETCPU_PRESENT",
17 "-DROCKSDB_SUPPORT_THREAD_LOCAL",
19 # Flags to enable libs we include
28 # Needed to compile in fbcode
29 "-Wno-expansion-to-defined",
30 # Added missing flags from output of build_detect_platform
31 "-DROCKSDB_PTHREAD_ADAPTIVE_MUTEX",
32 "-DROCKSDB_BACKTRACE",
36 rocksdb_external_deps = [
37 ("bzip2", None, "bz2"),
38 ("snappy", None, "snappy"),
40 ("gflags", None, "gflags"),
44 ("numa", None, "numa"),
45 ("googletest", None, "gtest"),
48 rocksdb_preprocessor_flags = [
49 # Directories with files for #include
50 "-I" + REPO_PATH + "include/",
54 rocksdb_arch_preprocessor_flags = {
61 build_mode = read_config("fbcode", "build_mode")
63 is_opt_mode = build_mode.startswith("opt")
65 # -DNDEBUG is added by default in opt mode in fbcode. But adding it twice
66 # doesn't harm and avoid forgetting to add it.
68 rocksdb_compiler_flags.append("-DNDEBUG")
73 "cache/clock_cache.cc",
75 "cache/sharded_cache.cc",
78 "db/column_family.cc",
79 "db/compacted_db_impl.cc",
81 "db/compaction_iterator.cc",
82 "db/compaction_job.cc",
83 "db/compaction_picker.cc",
84 "db/compaction_picker_universal.cc",
86 "db/db_filesnapshot.cc",
88 "db/db_impl_compaction_flush.cc",
89 "db/db_impl_debug.cc",
90 "db/db_impl_experimental.cc",
91 "db/db_impl_files.cc",
93 "db/db_impl_readonly.cc",
94 "db/db_impl_write.cc",
95 "db/db_info_dumper.cc",
98 "db/error_handler.cc",
99 "db/event_helpers.cc",
100 "db/experimental.cc",
101 "db/external_sst_file_ingestion_job.cc",
102 "db/file_indexer.cc",
104 "db/flush_scheduler.cc",
105 "db/forward_iterator.cc",
106 "db/internal_stats.cc",
109 "db/logs_with_prep_tracker.cc",
110 "db/malloc_stats.cc",
112 "db/memtable_list.cc",
113 "db/merge_helper.cc",
114 "db/merge_operator.cc",
115 "db/range_del_aggregator.cc",
117 "db/snapshot_impl.cc",
119 "db/table_properties_collector.cc",
120 "db/transaction_log_impl.cc",
121 "db/version_builder.cc",
122 "db/version_edit.cc",
126 "db/write_batch_base.cc",
127 "db/write_controller.cc",
128 "db/write_thread.cc",
131 "env/env_encryption.cc",
136 "memtable/alloc_tracker.cc",
137 "memtable/hash_cuckoo_rep.cc",
138 "memtable/hash_linklist_rep.cc",
139 "memtable/hash_skiplist_rep.cc",
140 "memtable/skiplistrep.cc",
141 "memtable/vectorrep.cc",
142 "memtable/write_buffer_manager.cc",
143 "monitoring/histogram.cc",
144 "monitoring/histogram_windowing.cc",
145 "monitoring/instrumented_mutex.cc",
146 "monitoring/iostats_context.cc",
147 "monitoring/perf_context.cc",
148 "monitoring/perf_level.cc",
149 "monitoring/statistics.cc",
150 "monitoring/thread_status_impl.cc",
151 "monitoring/thread_status_updater.cc",
152 "monitoring/thread_status_updater_debug.cc",
153 "monitoring/thread_status_util.cc",
154 "monitoring/thread_status_util_debug.cc",
155 "options/cf_options.cc",
156 "options/db_options.cc",
157 "options/options.cc",
158 "options/options_helper.cc",
159 "options/options_parser.cc",
160 "options/options_sanity_check.cc",
161 "port/port_posix.cc",
162 "port/stack_trace.cc",
163 "table/adaptive_table_factory.cc",
165 "table/block_based_filter_block.cc",
166 "table/block_based_table_builder.cc",
167 "table/block_based_table_factory.cc",
168 "table/block_based_table_reader.cc",
169 "table/block_builder.cc",
170 "table/block_fetcher.cc",
171 "table/block_prefix_index.cc",
172 "table/bloom_block.cc",
173 "table/cuckoo_table_builder.cc",
174 "table/cuckoo_table_factory.cc",
175 "table/cuckoo_table_reader.cc",
176 "table/data_block_footer.cc",
177 "table/data_block_hash_index.cc",
178 "table/flush_block_policy.cc",
180 "table/full_filter_block.cc",
181 "table/get_context.cc",
182 "table/index_builder.cc",
184 "table/merging_iterator.cc",
185 "table/meta_blocks.cc",
186 "table/partitioned_filter_block.cc",
187 "table/persistent_cache_helper.cc",
188 "table/plain_table_builder.cc",
189 "table/plain_table_factory.cc",
190 "table/plain_table_index.cc",
191 "table/plain_table_key_coding.cc",
192 "table/plain_table_reader.cc",
193 "table/sst_file_writer.cc",
194 "table/table_properties.cc",
195 "table/two_level_iterator.cc",
196 "tools/dump/db_dump_tool.cc",
199 "tools/sst_dump_tool.cc",
201 "util/auto_roll_logger.cc",
203 "util/build_version.cc",
205 "util/compaction_job_stats_impl.cc",
206 "util/comparator.cc",
207 "util/compression_context_cache.cc",
208 "util/concurrent_arena.cc",
210 "util/delete_scheduler.cc",
211 "util/dynamic_bloom.cc",
212 "util/event_logger.cc",
213 "util/file_reader_writer.cc",
216 "util/filter_policy.cc",
218 "util/log_buffer.cc",
219 "util/murmurhash.cc",
221 "util/rate_limiter.cc",
223 "util/sst_file_manager_impl.cc",
225 "util/string_util.cc",
226 "util/sync_point.cc",
227 "util/sync_point_impl.cc",
228 "util/thread_local.cc",
229 "util/threadpool_imp.cc",
230 "util/trace_replay.cc",
231 "util/transaction_test_util.cc",
233 "utilities/backupable/backupable_db.cc",
234 "utilities/blob_db/blob_compaction_filter.cc",
235 "utilities/blob_db/blob_db.cc",
236 "utilities/blob_db/blob_db_impl.cc",
237 "utilities/blob_db/blob_db_impl_filesnapshot.cc",
238 "utilities/blob_db/blob_dump_tool.cc",
239 "utilities/blob_db/blob_file.cc",
240 "utilities/blob_db/blob_log_format.cc",
241 "utilities/blob_db/blob_log_reader.cc",
242 "utilities/blob_db/blob_log_writer.cc",
243 "utilities/cassandra/cassandra_compaction_filter.cc",
244 "utilities/cassandra/format.cc",
245 "utilities/cassandra/merge_operator.cc",
246 "utilities/checkpoint/checkpoint_impl.cc",
247 "utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc",
248 "utilities/convenience/info_log_finder.cc",
249 "utilities/date_tiered/date_tiered_db_impl.cc",
250 "utilities/debug.cc",
251 "utilities/document/document_db.cc",
252 "utilities/document/json_document.cc",
253 "utilities/document/json_document_builder.cc",
254 "utilities/env_mirror.cc",
255 "utilities/env_timed.cc",
256 "utilities/geodb/geodb_impl.cc",
257 "utilities/leveldb_options/leveldb_options.cc",
258 "utilities/lua/rocks_lua_compaction_filter.cc",
259 "utilities/memory/memory_util.cc",
260 "utilities/merge_operators/bytesxor.cc",
261 "utilities/merge_operators/max.cc",
262 "utilities/merge_operators/put.cc",
263 "utilities/merge_operators/string_append/stringappend.cc",
264 "utilities/merge_operators/string_append/stringappend2.cc",
265 "utilities/merge_operators/uint64add.cc",
266 "utilities/option_change_migration/option_change_migration.cc",
267 "utilities/options/options_util.cc",
268 "utilities/persistent_cache/block_cache_tier.cc",
269 "utilities/persistent_cache/block_cache_tier_file.cc",
270 "utilities/persistent_cache/block_cache_tier_metadata.cc",
271 "utilities/persistent_cache/persistent_cache_tier.cc",
272 "utilities/persistent_cache/volatile_tier_impl.cc",
273 "utilities/redis/redis_lists.cc",
274 "utilities/simulator_cache/sim_cache.cc",
275 "utilities/spatialdb/spatial_db.cc",
276 "utilities/table_properties_collectors/compact_on_deletion_collector.cc",
277 "utilities/trace/file_trace_reader_writer.cc",
278 "utilities/transactions/optimistic_transaction.cc",
279 "utilities/transactions/optimistic_transaction_db_impl.cc",
280 "utilities/transactions/pessimistic_transaction.cc",
281 "utilities/transactions/pessimistic_transaction_db.cc",
282 "utilities/transactions/snapshot_checker.cc",
283 "utilities/transactions/transaction_base.cc",
284 "utilities/transactions/transaction_db_mutex_impl.cc",
285 "utilities/transactions/transaction_lock_mgr.cc",
286 "utilities/transactions/transaction_util.cc",
287 "utilities/transactions/write_prepared_txn.cc",
288 "utilities/transactions/write_prepared_txn_db.cc",
289 "utilities/transactions/write_unprepared_txn.cc",
290 "utilities/transactions/write_unprepared_txn_db.cc",
291 "utilities/ttl/db_ttl_impl.cc",
292 "utilities/write_batch_with_index/write_batch_with_index.cc",
293 "utilities/write_batch_with_index/write_batch_with_index_internal.cc",
295 auto_headers = AutoHeaders.RECURSIVE_GLOB,
296 arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
297 compiler_flags = rocksdb_compiler_flags,
298 preprocessor_flags = rocksdb_preprocessor_flags,
300 external_deps = rocksdb_external_deps,
304 name = "rocksdb_test_lib",
306 "db/db_test_util.cc",
307 "table/mock_table.cc",
308 "tools/trace_analyzer_tool.cc",
309 "util/fault_injection_test_env.cc",
310 "util/testharness.cc",
312 "utilities/cassandra/test_utils.cc",
313 "utilities/col_buf_decoder.cc",
314 "utilities/col_buf_encoder.cc",
315 "utilities/column_aware_encoding_util.cc",
317 auto_headers = AutoHeaders.RECURSIVE_GLOB,
318 arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
319 compiler_flags = rocksdb_compiler_flags,
320 preprocessor_flags = rocksdb_preprocessor_flags,
321 deps = [":rocksdb_lib"],
322 external_deps = rocksdb_external_deps,
326 name = "rocksdb_tools_lib",
328 "tools/db_bench_tool.cc",
329 "tools/trace_analyzer_tool.cc",
332 auto_headers = AutoHeaders.RECURSIVE_GLOB,
333 arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
334 compiler_flags = rocksdb_compiler_flags,
335 preprocessor_flags = rocksdb_preprocessor_flags,
336 deps = [":rocksdb_lib"],
337 external_deps = rocksdb_external_deps,
341 name = "env_basic_test_lib",
342 srcs = ["env/env_basic_test.cc"],
343 auto_headers = AutoHeaders.RECURSIVE_GLOB,
344 arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
345 compiler_flags = rocksdb_compiler_flags,
346 preprocessor_flags = rocksdb_preprocessor_flags,
347 deps = [":rocksdb_test_lib"],
348 external_deps = rocksdb_external_deps,
351 # [test_name, test_src, test_type]
355 "util/arena_test.cc",
359 "auto_roll_logger_test",
360 "util/auto_roll_logger_test.cc",
365 "util/autovector_test.cc",
369 "backupable_db_test",
370 "utilities/backupable/backupable_db_test.cc",
375 "utilities/blob_db/blob_db_test.cc",
379 "block_based_filter_block_test",
380 "table/block_based_filter_block_test.cc",
385 "table/block_test.cc",
390 "util/bloom_test.cc",
400 "cache/cache_test.cc",
404 "cassandra_format_test",
405 "utilities/cassandra/cassandra_format_test.cc",
409 "cassandra_functional_test",
410 "utilities/cassandra/cassandra_functional_test.cc",
414 "cassandra_row_merge_test",
415 "utilities/cassandra/cassandra_row_merge_test.cc",
419 "cassandra_serialize_test",
420 "utilities/cassandra/cassandra_serialize_test.cc",
425 "utilities/checkpoint/checkpoint_test.cc",
430 "table/cleanable_test.cc",
435 "util/coding_test.cc",
439 "column_aware_encoding_test",
440 "utilities/column_aware_encoding_test.cc",
444 "column_family_test",
445 "db/column_family_test.cc",
449 "compact_files_test",
450 "db/compact_files_test.cc",
454 "compact_on_deletion_collector_test",
455 "utilities/table_properties_collectors/compact_on_deletion_collector_test.cc",
459 "compaction_iterator_test",
460 "db/compaction_iterator_test.cc",
464 "compaction_job_stats_test",
465 "db/compaction_job_stats_test.cc",
469 "compaction_job_test",
470 "db/compaction_job_test.cc",
474 "compaction_picker_test",
475 "db/compaction_picker_test.cc",
479 "comparator_db_test",
480 "db/comparator_db_test.cc",
485 "db/corruption_test.cc",
490 "util/crc32c_test.cc",
494 "cuckoo_table_builder_test",
495 "table/cuckoo_table_builder_test.cc",
499 "cuckoo_table_db_test",
500 "db/cuckoo_table_db_test.cc",
504 "cuckoo_table_reader_test",
505 "table/cuckoo_table_reader_test.cc",
509 "data_block_hash_index_test",
510 "table/data_block_hash_index_test.cc",
515 "utilities/date_tiered/date_tiered_test.cc",
520 "db/db_basic_test.cc",
524 "db_blob_index_test",
525 "db/db_blob_index_test.cc",
529 "db_block_cache_test",
530 "db/db_block_cache_test.cc",
534 "db_bloom_filter_test",
535 "db/db_bloom_filter_test.cc",
539 "db_compaction_filter_test",
540 "db/db_compaction_filter_test.cc",
544 "db_compaction_test",
545 "db/db_compaction_test.cc",
549 "db_dynamic_level_test",
550 "db/db_dynamic_level_test.cc",
554 "db_encryption_test",
555 "db/db_encryption_test.cc",
560 "db/db_flush_test.cc",
564 "db_inplace_update_test",
565 "db/db_inplace_update_test.cc",
569 "db_io_failure_test",
570 "db/db_io_failure_test.cc",
574 "db_iter_stress_test",
575 "db/db_iter_stress_test.cc",
580 "db/db_iter_test.cc",
585 "db/db_iterator_test.cc",
590 "db/db_log_iter_test.cc",
595 "db/db_memtable_test.cc",
599 "db_merge_operator_test",
600 "db/db_merge_operator_test.cc",
605 "db/db_options_test.cc",
609 "db_properties_test",
610 "db/db_properties_test.cc",
615 "db/db_range_del_test.cc",
624 "db_statistics_test",
625 "db/db_statistics_test.cc",
629 "db_table_properties_test",
630 "db/db_table_properties_test.cc",
634 "db_tailing_iter_test",
635 "db/db_tailing_iter_test.cc",
649 "db_universal_compaction_test",
650 "db/db_universal_compaction_test.cc",
660 "db/db_write_test.cc",
665 "db/dbformat_test.cc",
669 "delete_scheduler_test",
670 "util/delete_scheduler_test.cc",
675 "db/deletefile_test.cc",
680 "utilities/document/document_db_test.cc",
684 "dynamic_bloom_test",
685 "util/dynamic_bloom_test.cc",
690 "env/env_basic_test.cc",
700 "utilities/env_timed_test.cc",
704 "error_handler_test",
705 "db/error_handler_test.cc",
710 "util/event_logger_test.cc",
714 "external_sst_file_basic_test",
715 "db/external_sst_file_basic_test.cc",
719 "external_sst_file_test",
720 "db/external_sst_file_test.cc",
724 "fault_injection_test",
725 "db/fault_injection_test.cc",
730 "db/file_indexer_test.cc",
734 "file_reader_writer_test",
735 "util/file_reader_writer_test.cc",
740 "util/filelock_test.cc",
745 "db/filename_test.cc",
750 "db/flush_job_test.cc",
754 "full_filter_block_test",
755 "table/full_filter_block_test.cc",
760 "utilities/geodb/geodb_test.cc",
765 "utilities/persistent_cache/hash_table_test.cc",
780 "monitoring/histogram_test.cc",
784 "inlineskiplist_test",
785 "memtable/inlineskiplist_test.cc",
789 "iostats_context_test",
790 "monitoring/iostats_context_test.cc",
794 "json_document_test",
795 "utilities/document/json_document_test.cc",
800 "tools/ldb_cmd_test.cc",
805 "db/listener_test.cc",
815 "cache/lru_cache_test.cc",
819 "manual_compaction_test",
820 "db/manual_compaction_test.cc",
825 "utilities/memory/memory_test.cc",
829 "memtable_list_test",
830 "db/memtable_list_test.cc",
835 "db/merge_helper_test.cc",
845 "table/merger_test.cc",
850 "env/mock_env_test.cc",
854 "object_registry_test",
855 "utilities/object_registry_test.cc",
859 "obsolete_files_test",
860 "db/obsolete_files_test.cc",
864 "optimistic_transaction_test",
865 "utilities/transactions/optimistic_transaction_test.cc",
869 "option_change_migration_test",
870 "utilities/option_change_migration/option_change_migration_test.cc",
875 "db/options_file_test.cc",
879 "options_settable_test",
880 "options/options_settable_test.cc",
885 "options/options_test.cc",
890 "utilities/options/options_util_test.cc",
894 "partitioned_filter_block_test",
895 "table/partitioned_filter_block_test.cc",
900 "db/perf_context_test.cc",
904 "persistent_cache_test",
905 "utilities/persistent_cache/persistent_cache_test.cc",
909 "plain_table_db_test",
910 "db/plain_table_db_test.cc",
919 "range_del_aggregator_test",
920 "db/range_del_aggregator_test.cc",
925 "util/rate_limiter_test.cc",
929 "reduce_levels_test",
930 "tools/reduce_levels_test.cc",
939 "repeatable_thread_test",
940 "util/repeatable_thread_test.cc",
945 "utilities/simulator_cache/sim_cache_test.cc",
950 "memtable/skiplist_test.cc",
954 "slice_transform_test",
955 "util/slice_transform_test.cc",
960 "utilities/spatialdb/spatial_db_test.cc",
965 "tools/sst_dump_test.cc",
970 "monitoring/statistics_test.cc",
975 "utilities/merge_operators/string_append/stringappend_test.cc",
979 "table_properties_collector_test",
980 "db/table_properties_collector_test.cc",
985 "table/table_test.cc",
990 "util/thread_list_test.cc",
995 "util/thread_local_test.cc",
1000 "util/timer_queue_test.cc",
1004 "trace_analyzer_test",
1005 "tools/trace_analyzer_test.cc",
1010 "utilities/transactions/transaction_test.cc",
1015 "utilities/ttl/ttl_test.cc",
1019 "util_merge_operators_test",
1020 "utilities/util_merge_operators_test.cc",
1024 "version_builder_test",
1025 "db/version_builder_test.cc",
1029 "version_edit_test",
1030 "db/version_edit_test.cc",
1035 "db/version_set_test.cc",
1040 "db/wal_manager_test.cc",
1045 "db/write_batch_test.cc",
1049 "write_batch_with_index_test",
1050 "utilities/write_batch_with_index/write_batch_with_index_test.cc",
1054 "write_buffer_manager_test",
1055 "memtable/write_buffer_manager_test.cc",
1059 "write_callback_test",
1060 "db/write_callback_test.cc",
1064 "write_controller_test",
1065 "db/write_controller_test.cc",
1069 "write_prepared_transaction_test",
1070 "utilities/transactions/write_prepared_transaction_test.cc",
1074 "write_unprepared_transaction_test",
1075 "utilities/transactions/write_unprepared_transaction_test.cc",
1080 # Generate a test rule for each entry in ROCKS_TESTS
1081 # Do not build the tests in opt mode, since SyncPoint and other test code
1082 # will not be included.
1084 for test_cfg in ROCKS_TESTS:
1085 test_name = test_cfg[0]
1086 test_cc = test_cfg[1]
1087 ttype = "gtest" if test_cfg[2] == "parallel" else "simple"
1088 test_bin = test_name + "_bin"
1093 arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
1094 compiler_flags = rocksdb_compiler_flags,
1095 preprocessor_flags = rocksdb_preprocessor_flags,
1096 deps = [":rocksdb_test_lib"],
1097 external_deps = rocksdb_external_deps,
1102 command = [TEST_RUNNER, BUCK_BINS + test_bin],
1104 deps = [":" + test_bin],