# This file @generated by `python3 buckifier/buckify_rocksdb.py`
# --> DO NOT EDIT MANUALLY <--
# This file is a Facebook-specific integration for buck builds, so can
# only be validated by Facebook employees.
#
load("@fbcode_macros//build_defs:auto_headers.bzl", "AutoHeaders")
load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library")
load(":defs.bzl", "test_binary")

REPO_PATH = package_name() + "/"

ROCKSDB_COMPILER_FLAGS = [
    "-fno-builtin-memcmp",
    # Needed to compile in fbcode
    "-Wno-expansion-to-defined",
    # Added missing flags from output of build_detect_platform
    "-Wnarrowing",
    "-DROCKSDB_NO_DYNAMIC_EXTENSION",
]

ROCKSDB_EXTERNAL_DEPS = [
    ("bzip2", None, "bz2"),
    ("snappy", None, "snappy"),
    ("zlib", None, "z"),
    ("gflags", None, "gflags"),
    ("lz4", None, "lz4"),
    ("zstd", None),
    ("tbb", None),
]

ROCKSDB_OS_DEPS = [
    (
        "linux",
        ["third-party//numa:numa", "third-party//liburing:uring"],
    ),
]

ROCKSDB_OS_PREPROCESSOR_FLAGS = [
    (
        "linux",
        [
            "-DOS_LINUX",
            "-DROCKSDB_FALLOCATE_PRESENT",
            "-DROCKSDB_MALLOC_USABLE_SIZE",
            "-DROCKSDB_PTHREAD_ADAPTIVE_MUTEX",
            "-DROCKSDB_RANGESYNC_PRESENT",
            "-DROCKSDB_SCHED_GETCPU_PRESENT",
            "-DROCKSDB_IOURING_PRESENT",
            "-DHAVE_SSE42",
            "-DLIBURING",
            "-DNUMA",
        ],
    ),
    (
        "macos",
        ["-DOS_MACOSX"],
    ),
]

ROCKSDB_PREPROCESSOR_FLAGS = [
    "-DROCKSDB_PLATFORM_POSIX",
    "-DROCKSDB_LIB_IO_POSIX",
    "-DROCKSDB_SUPPORT_THREAD_LOCAL",

    # Flags to enable libs we include
    "-DSNAPPY",
    "-DZLIB",
    "-DBZIP2",
    "-DLZ4",
    "-DZSTD",
    "-DZSTD_STATIC_LINKING_ONLY",
    "-DGFLAGS=gflags",
    "-DTBB",

    # Added missing flags from output of build_detect_platform
    "-DROCKSDB_BACKTRACE",

    # Directories with files for #include
    "-I" + REPO_PATH + "include/",
    "-I" + REPO_PATH,
]

ROCKSDB_ARCH_PREPROCESSOR_FLAGS = {
    "x86_64": [
        "-DHAVE_PCLMUL",
    ],
}

build_mode = read_config("fbcode", "build_mode")

is_opt_mode = build_mode.startswith("opt")

# -DNDEBUG is added by default in opt mode in fbcode. But adding it twice
# doesn't harm and avoid forgetting to add it.
ROCKSDB_COMPILER_FLAGS += (["-DNDEBUG"] if is_opt_mode else [])

sanitizer = read_config("fbcode", "sanitizer")

# Do not enable jemalloc if sanitizer presents. RocksDB will further detect
# whether the binary is linked with jemalloc at runtime.
ROCKSDB_OS_PREPROCESSOR_FLAGS += ([(
    "linux",
    ["-DROCKSDB_JEMALLOC"],
)] if sanitizer == "" else [])

ROCKSDB_OS_DEPS += ([(
    "linux",
    ["third-party//jemalloc:headers"],
)] if sanitizer == "" else [])

ROCKSDB_LIB_DEPS = [
    ":rocksdb_lib",
    ":rocksdb_test_lib",
] if not is_opt_mode else [":rocksdb_lib"]

cpp_library(
    name = "rocksdb_lib",
    srcs = [
        "cache/cache.cc",
        "cache/clock_cache.cc",
        "cache/lru_cache.cc",
        "cache/sharded_cache.cc",
        "db/arena_wrapped_db_iter.cc",
        "db/blob/blob_file_addition.cc",
        "db/blob/blob_file_garbage.cc",
        "db/blob/blob_file_meta.cc",
        "db/blob/blob_log_format.cc",
        "db/blob/blob_log_reader.cc",
        "db/blob/blob_log_writer.cc",
        "db/builder.cc",
        "db/c.cc",
        "db/column_family.cc",
        "db/compacted_db_impl.cc",
        "db/compaction/compaction.cc",
        "db/compaction/compaction_iterator.cc",
        "db/compaction/compaction_job.cc",
        "db/compaction/compaction_picker.cc",
        "db/compaction/compaction_picker_fifo.cc",
        "db/compaction/compaction_picker_level.cc",
        "db/compaction/compaction_picker_universal.cc",
        "db/convenience.cc",
        "db/db_filesnapshot.cc",
        "db/db_impl/db_impl.cc",
        "db/db_impl/db_impl_compaction_flush.cc",
        "db/db_impl/db_impl_debug.cc",
        "db/db_impl/db_impl_experimental.cc",
        "db/db_impl/db_impl_files.cc",
        "db/db_impl/db_impl_open.cc",
        "db/db_impl/db_impl_readonly.cc",
        "db/db_impl/db_impl_secondary.cc",
        "db/db_impl/db_impl_write.cc",
        "db/db_info_dumper.cc",
        "db/db_iter.cc",
        "db/dbformat.cc",
        "db/error_handler.cc",
        "db/event_helpers.cc",
        "db/experimental.cc",
        "db/external_sst_file_ingestion_job.cc",
        "db/file_indexer.cc",
        "db/flush_job.cc",
        "db/flush_scheduler.cc",
        "db/forward_iterator.cc",
        "db/import_column_family_job.cc",
        "db/internal_stats.cc",
        "db/log_reader.cc",
        "db/log_writer.cc",
        "db/logs_with_prep_tracker.cc",
        "db/malloc_stats.cc",
        "db/memtable.cc",
        "db/memtable_list.cc",
        "db/merge_helper.cc",
        "db/merge_operator.cc",
        "db/range_del_aggregator.cc",
        "db/range_tombstone_fragmenter.cc",
        "db/repair.cc",
        "db/snapshot_impl.cc",
        "db/table_cache.cc",
        "db/table_properties_collector.cc",
        "db/transaction_log_impl.cc",
        "db/trim_history_scheduler.cc",
        "db/version_builder.cc",
        "db/version_edit.cc",
        "db/version_edit_handler.cc",
        "db/version_set.cc",
        "db/wal_manager.cc",
        "db/write_batch.cc",
        "db/write_batch_base.cc",
        "db/write_controller.cc",
        "db/write_thread.cc",
        "env/env.cc",
        "env/env_chroot.cc",
        "env/env_encryption.cc",
        "env/env_hdfs.cc",
        "env/env_posix.cc",
        "env/file_system.cc",
        "env/fs_posix.cc",
        "env/io_posix.cc",
        "env/mock_env.cc",
        "file/delete_scheduler.cc",
        "file/file_prefetch_buffer.cc",
        "file/file_util.cc",
        "file/filename.cc",
        "file/random_access_file_reader.cc",
        "file/read_write_util.cc",
        "file/readahead_raf.cc",
        "file/sequence_file_reader.cc",
        "file/sst_file_manager_impl.cc",
        "file/writable_file_writer.cc",
        "logging/auto_roll_logger.cc",
        "logging/event_logger.cc",
        "logging/log_buffer.cc",
        "memory/arena.cc",
        "memory/concurrent_arena.cc",
        "memory/jemalloc_nodump_allocator.cc",
        "memory/memkind_kmem_allocator.cc",
        "memtable/alloc_tracker.cc",
        "memtable/hash_linklist_rep.cc",
        "memtable/hash_skiplist_rep.cc",
        "memtable/skiplistrep.cc",
        "memtable/vectorrep.cc",
        "memtable/write_buffer_manager.cc",
        "monitoring/histogram.cc",
        "monitoring/histogram_windowing.cc",
        "monitoring/in_memory_stats_history.cc",
        "monitoring/instrumented_mutex.cc",
        "monitoring/iostats_context.cc",
        "monitoring/perf_context.cc",
        "monitoring/perf_level.cc",
        "monitoring/persistent_stats_history.cc",
        "monitoring/statistics.cc",
        "monitoring/thread_status_impl.cc",
        "monitoring/thread_status_updater.cc",
        "monitoring/thread_status_updater_debug.cc",
        "monitoring/thread_status_util.cc",
        "monitoring/thread_status_util_debug.cc",
        "options/cf_options.cc",
        "options/db_options.cc",
        "options/options.cc",
        "options/options_helper.cc",
        "options/options_parser.cc",
        "port/port_posix.cc",
        "port/stack_trace.cc",
        "table/adaptive/adaptive_table_factory.cc",
        "table/block_based/binary_search_index_reader.cc",
        "table/block_based/block.cc",
        "table/block_based/block_based_filter_block.cc",
        "table/block_based/block_based_table_builder.cc",
        "table/block_based/block_based_table_factory.cc",
        "table/block_based/block_based_table_iterator.cc",
        "table/block_based/block_based_table_reader.cc",
        "table/block_based/block_builder.cc",
        "table/block_based/block_prefetcher.cc",
        "table/block_based/block_prefix_index.cc",
        "table/block_based/data_block_footer.cc",
        "table/block_based/data_block_hash_index.cc",
        "table/block_based/filter_block_reader_common.cc",
        "table/block_based/filter_policy.cc",
        "table/block_based/flush_block_policy.cc",
        "table/block_based/full_filter_block.cc",
        "table/block_based/hash_index_reader.cc",
        "table/block_based/index_builder.cc",
        "table/block_based/index_reader_common.cc",
        "table/block_based/parsed_full_filter_block.cc",
        "table/block_based/partitioned_filter_block.cc",
        "table/block_based/partitioned_index_iterator.cc",
        "table/block_based/partitioned_index_reader.cc",
        "table/block_based/reader_common.cc",
        "table/block_based/uncompression_dict_reader.cc",
        "table/block_fetcher.cc",
        "table/cuckoo/cuckoo_table_builder.cc",
        "table/cuckoo/cuckoo_table_factory.cc",
        "table/cuckoo/cuckoo_table_reader.cc",
        "table/format.cc",
        "table/get_context.cc",
        "table/iterator.cc",
        "table/merging_iterator.cc",
        "table/meta_blocks.cc",
        "table/persistent_cache_helper.cc",
        "table/plain/plain_table_bloom.cc",
        "table/plain/plain_table_builder.cc",
        "table/plain/plain_table_factory.cc",
        "table/plain/plain_table_index.cc",
        "table/plain/plain_table_key_coding.cc",
        "table/plain/plain_table_reader.cc",
        "table/sst_file_reader.cc",
        "table/sst_file_writer.cc",
        "table/table_properties.cc",
        "table/two_level_iterator.cc",
        "test_util/sync_point.cc",
        "test_util/sync_point_impl.cc",
        "test_util/transaction_test_util.cc",
        "tools/dump/db_dump_tool.cc",
        "tools/ldb_cmd.cc",
        "tools/ldb_tool.cc",
        "tools/sst_dump_tool.cc",
        "trace_replay/block_cache_tracer.cc",
        "trace_replay/trace_replay.cc",
        "util/build_version.cc",
        "util/coding.cc",
        "util/compaction_job_stats_impl.cc",
        "util/comparator.cc",
        "util/compression_context_cache.cc",
        "util/concurrent_task_limiter_impl.cc",
        "util/crc32c.cc",
        "util/dynamic_bloom.cc",
        "util/file_checksum_helper.cc",
        "util/hash.cc",
        "util/murmurhash.cc",
        "util/random.cc",
        "util/rate_limiter.cc",
        "util/slice.cc",
        "util/status.cc",
        "util/string_util.cc",
        "util/thread_local.cc",
        "util/threadpool_imp.cc",
        "util/xxhash.cc",
        "utilities/backupable/backupable_db.cc",
        "utilities/blob_db/blob_compaction_filter.cc",
        "utilities/blob_db/blob_db.cc",
        "utilities/blob_db/blob_db_impl.cc",
        "utilities/blob_db/blob_db_impl_filesnapshot.cc",
        "utilities/blob_db/blob_dump_tool.cc",
        "utilities/blob_db/blob_file.cc",
        "utilities/cassandra/cassandra_compaction_filter.cc",
        "utilities/cassandra/format.cc",
        "utilities/cassandra/merge_operator.cc",
        "utilities/checkpoint/checkpoint_impl.cc",
        "utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc",
        "utilities/convenience/info_log_finder.cc",
        "utilities/debug.cc",
        "utilities/env_mirror.cc",
        "utilities/env_timed.cc",
        "utilities/leveldb_options/leveldb_options.cc",
        "utilities/memory/memory_util.cc",
        "utilities/merge_operators/bytesxor.cc",
        "utilities/merge_operators/max.cc",
        "utilities/merge_operators/put.cc",
        "utilities/merge_operators/sortlist.cc",
        "utilities/merge_operators/string_append/stringappend.cc",
        "utilities/merge_operators/string_append/stringappend2.cc",
        "utilities/merge_operators/uint64add.cc",
        "utilities/object_registry.cc",
        "utilities/option_change_migration/option_change_migration.cc",
        "utilities/options/options_util.cc",
        "utilities/persistent_cache/block_cache_tier.cc",
        "utilities/persistent_cache/block_cache_tier_file.cc",
        "utilities/persistent_cache/block_cache_tier_metadata.cc",
        "utilities/persistent_cache/persistent_cache_tier.cc",
        "utilities/persistent_cache/volatile_tier_impl.cc",
        "utilities/simulator_cache/cache_simulator.cc",
        "utilities/simulator_cache/sim_cache.cc",
        "utilities/table_properties_collectors/compact_on_deletion_collector.cc",
        "utilities/trace/file_trace_reader_writer.cc",
        "utilities/transactions/optimistic_transaction.cc",
        "utilities/transactions/optimistic_transaction_db_impl.cc",
        "utilities/transactions/pessimistic_transaction.cc",
        "utilities/transactions/pessimistic_transaction_db.cc",
        "utilities/transactions/snapshot_checker.cc",
        "utilities/transactions/transaction_base.cc",
        "utilities/transactions/transaction_db_mutex_impl.cc",
        "utilities/transactions/transaction_lock_mgr.cc",
        "utilities/transactions/transaction_util.cc",
        "utilities/transactions/write_prepared_txn.cc",
        "utilities/transactions/write_prepared_txn_db.cc",
        "utilities/transactions/write_unprepared_txn.cc",
        "utilities/transactions/write_unprepared_txn_db.cc",
        "utilities/ttl/db_ttl_impl.cc",
        "utilities/write_batch_with_index/write_batch_with_index.cc",
        "utilities/write_batch_with_index/write_batch_with_index_internal.cc",
    ],
    auto_headers = AutoHeaders.RECURSIVE_GLOB,
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    os_deps = ROCKSDB_OS_DEPS,
    os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
    deps = [],
    external_deps = ROCKSDB_EXTERNAL_DEPS,
)

cpp_library(
    name = "rocksdb_test_lib",
    srcs = [
        "db/db_test_util.cc",
        "table/mock_table.cc",
        "test_util/fault_injection_test_env.cc",
        "test_util/fault_injection_test_fs.cc",
        "test_util/testharness.cc",
        "test_util/testutil.cc",
        "tools/block_cache_analyzer/block_cache_trace_analyzer.cc",
        "tools/trace_analyzer_tool.cc",
        "utilities/cassandra/test_utils.cc",
    ],
    auto_headers = AutoHeaders.RECURSIVE_GLOB,
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    os_deps = ROCKSDB_OS_DEPS,
    os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
    deps = [":rocksdb_lib"],
    external_deps = ROCKSDB_EXTERNAL_DEPS + [
        ("googletest", None, "gtest"),
    ],
)

cpp_library(
    name = "rocksdb_tools_lib",
    srcs = [
        "test_util/testutil.cc",
        "tools/block_cache_analyzer/block_cache_trace_analyzer.cc",
        "tools/db_bench_tool.cc",
        "tools/trace_analyzer_tool.cc",
    ],
    auto_headers = AutoHeaders.RECURSIVE_GLOB,
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    os_deps = ROCKSDB_OS_DEPS,
    os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
    deps = [":rocksdb_lib"],
    external_deps = ROCKSDB_EXTERNAL_DEPS,
)

cpp_library(
    name = "rocksdb_stress_lib",
    srcs = [
        "db_stress_tool/batched_ops_stress.cc",
        "db_stress_tool/cf_consistency_stress.cc",
        "db_stress_tool/db_stress_common.cc",
        "db_stress_tool/db_stress_driver.cc",
        "db_stress_tool/db_stress_gflags.cc",
        "db_stress_tool/db_stress_shared_state.cc",
        "db_stress_tool/db_stress_test_base.cc",
        "db_stress_tool/db_stress_tool.cc",
        "db_stress_tool/no_batched_ops_stress.cc",
        "test_util/testutil.cc",
        "tools/block_cache_analyzer/block_cache_trace_analyzer.cc",
        "tools/trace_analyzer_tool.cc",
    ],
    auto_headers = AutoHeaders.RECURSIVE_GLOB,
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    os_deps = ROCKSDB_OS_DEPS,
    os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
    deps = ROCKSDB_LIB_DEPS,
    external_deps = ROCKSDB_EXTERNAL_DEPS,
)

if not is_opt_mode:
    cpp_binary(
        name = "c_test_bin",
        srcs = ["db/c_test.c"],
        arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
        os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
        compiler_flags = ROCKSDB_COMPILER_FLAGS,
        preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
        deps = [":rocksdb_test_lib"],
    )

if not is_opt_mode:
    custom_unittest(
        "c_test",
        command = [
            native.package_name() + "/buckifier/rocks_test_runner.sh",
            "$(location :{})".format("c_test_bin"),
        ],
        type = "simple",
    )

cpp_library(
    name = "env_basic_test_lib",
    srcs = ["env/env_basic_test.cc"],
    auto_headers = AutoHeaders.RECURSIVE_GLOB,
    arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
    compiler_flags = ROCKSDB_COMPILER_FLAGS,
    os_deps = ROCKSDB_OS_DEPS,
    os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
    preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
    deps = [":rocksdb_test_lib"],
    external_deps = ROCKSDB_EXTERNAL_DEPS,
)

# [test_name, test_src, test_type, extra_deps, extra_compiler_flags]
ROCKS_TESTS = [
    [
        "arena_test",
        "memory/arena_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "auto_roll_logger_test",
        "logging/auto_roll_logger_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "autovector_test",
        "util/autovector_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "backupable_db_test",
        "utilities/backupable/backupable_db_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "blob_db_test",
        "utilities/blob_db/blob_db_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "blob_file_addition_test",
        "db/blob/blob_file_addition_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "blob_file_garbage_test",
        "db/blob/blob_file_garbage_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_based_filter_block_test",
        "table/block_based/block_based_filter_block_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_based_table_reader_test",
        "table/block_based/block_based_table_reader_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_cache_trace_analyzer_test",
        "tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_cache_tracer_test",
        "trace_replay/block_cache_tracer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_fetcher_test",
        "table/block_fetcher_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "block_test",
        "table/block_based/block_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "bloom_test",
        "util/bloom_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cache_simulator_test",
        "utilities/simulator_cache/cache_simulator_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cache_test",
        "cache/cache_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cassandra_format_test",
        "utilities/cassandra/cassandra_format_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cassandra_functional_test",
        "utilities/cassandra/cassandra_functional_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cassandra_row_merge_test",
        "utilities/cassandra/cassandra_row_merge_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cassandra_serialize_test",
        "utilities/cassandra/cassandra_serialize_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "checkpoint_test",
        "utilities/checkpoint/checkpoint_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cleanable_test",
        "table/cleanable_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "coding_test",
        "util/coding_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "column_family_test",
        "db/column_family_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compact_files_test",
        "db/compact_files_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compact_on_deletion_collector_test",
        "utilities/table_properties_collectors/compact_on_deletion_collector_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compaction_iterator_test",
        "db/compaction/compaction_iterator_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compaction_job_stats_test",
        "db/compaction/compaction_job_stats_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compaction_job_test",
        "db/compaction/compaction_job_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "compaction_picker_test",
        "db/compaction/compaction_picker_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "comparator_db_test",
        "db/comparator_db_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "corruption_test",
        "db/corruption_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "crc32c_test",
        "util/crc32c_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cuckoo_table_builder_test",
        "table/cuckoo/cuckoo_table_builder_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cuckoo_table_db_test",
        "db/cuckoo_table_db_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "cuckoo_table_reader_test",
        "table/cuckoo/cuckoo_table_reader_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "data_block_hash_index_test",
        "table/block_based/data_block_hash_index_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_basic_test",
        "db/db_basic_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_blob_index_test",
        "db/blob/db_blob_index_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_block_cache_test",
        "db/db_block_cache_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_bloom_filter_test",
        "db/db_bloom_filter_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_compaction_filter_test",
        "db/db_compaction_filter_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_compaction_test",
        "db/db_compaction_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_dynamic_level_test",
        "db/db_dynamic_level_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_encryption_test",
        "db/db_encryption_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_flush_test",
        "db/db_flush_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_inplace_update_test",
        "db/db_inplace_update_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_io_failure_test",
        "db/db_io_failure_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_iter_stress_test",
        "db/db_iter_stress_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_iter_test",
        "db/db_iter_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_iterator_test",
        "db/db_iterator_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_log_iter_test",
        "db/db_log_iter_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_logical_block_size_cache_test",
        "db/db_logical_block_size_cache_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_memtable_test",
        "db/db_memtable_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_merge_operand_test",
        "db/db_merge_operand_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_merge_operator_test",
        "db/db_merge_operator_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_options_test",
        "db/db_options_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_properties_test",
        "db/db_properties_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_range_del_test",
        "db/db_range_del_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_secondary_test",
        "db/db_impl/db_secondary_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_sst_test",
        "db/db_sst_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_statistics_test",
        "db/db_statistics_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_table_properties_test",
        "db/db_table_properties_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_tailing_iter_test",
        "db/db_tailing_iter_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_test",
        "db/db_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_test2",
        "db/db_test2.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_universal_compaction_test",
        "db/db_universal_compaction_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_wal_test",
        "db/db_wal_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "db_with_timestamp_basic_test",
        "db/db_with_timestamp_basic_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_with_timestamp_compaction_test",
        "db/db_with_timestamp_compaction_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "db_write_test",
        "db/db_write_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "dbformat_test",
        "db/dbformat_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "defer_test",
        "util/defer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "delete_scheduler_test",
        "file/delete_scheduler_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "deletefile_test",
        "db/deletefile_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "dynamic_bloom_test",
        "util/dynamic_bloom_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "env_basic_test",
        "env/env_basic_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "env_logger_test",
        "logging/env_logger_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "env_test",
        "env/env_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "env_timed_test",
        "utilities/env_timed_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "error_handler_fs_test",
        "db/error_handler_fs_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "event_logger_test",
        "logging/event_logger_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "external_sst_file_basic_test",
        "db/external_sst_file_basic_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "external_sst_file_test",
        "db/external_sst_file_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "fault_injection_test",
        "db/fault_injection_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "file_indexer_test",
        "db/file_indexer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "file_reader_writer_test",
        "util/file_reader_writer_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "filelock_test",
        "util/filelock_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "filename_test",
        "db/filename_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "flush_job_test",
        "db/flush_job_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "full_filter_block_test",
        "table/block_based/full_filter_block_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "hash_table_test",
        "utilities/persistent_cache/hash_table_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "hash_test",
        "util/hash_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "heap_test",
        "util/heap_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "histogram_test",
        "monitoring/histogram_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "import_column_family_test",
        "db/import_column_family_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "inlineskiplist_test",
        "memtable/inlineskiplist_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "io_posix_test",
        "env/io_posix_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "iostats_context_test",
        "monitoring/iostats_context_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "ldb_cmd_test",
        "tools/ldb_cmd_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "listener_test",
        "db/listener_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "log_test",
        "db/log_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "lru_cache_test",
        "cache/lru_cache_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "manual_compaction_test",
        "db/manual_compaction_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "memkind_kmem_allocator_test",
        "memory/memkind_kmem_allocator_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "memory_test",
        "utilities/memory/memory_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "memtable_list_test",
        "db/memtable_list_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "merge_helper_test",
        "db/merge_helper_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "merge_test",
        "db/merge_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "merger_test",
        "table/merger_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "mock_env_test",
        "env/mock_env_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "object_registry_test",
        "utilities/object_registry_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "obsolete_files_test",
        "db/obsolete_files_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "optimistic_transaction_test",
        "utilities/transactions/optimistic_transaction_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "option_change_migration_test",
        "utilities/option_change_migration/option_change_migration_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "options_file_test",
        "db/options_file_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "options_settable_test",
        "options/options_settable_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "options_test",
        "options/options_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "options_util_test",
        "utilities/options/options_util_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "partitioned_filter_block_test",
        "table/block_based/partitioned_filter_block_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "perf_context_test",
        "db/perf_context_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "persistent_cache_test",
        "utilities/persistent_cache/persistent_cache_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "plain_table_db_test",
        "db/plain_table_db_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "prefix_test",
        "db/prefix_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "random_access_file_reader_test",
        "file/random_access_file_reader_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "random_test",
        "util/random_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "range_del_aggregator_test",
        "db/range_del_aggregator_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "range_tombstone_fragmenter_test",
        "db/range_tombstone_fragmenter_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "rate_limiter_test",
        "util/rate_limiter_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "reduce_levels_test",
        "tools/reduce_levels_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "repair_test",
        "db/repair_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "repeatable_thread_test",
        "util/repeatable_thread_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "sim_cache_test",
        "utilities/simulator_cache/sim_cache_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "skiplist_test",
        "memtable/skiplist_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "slice_test",
        "util/slice_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "slice_transform_test",
        "util/slice_transform_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "sst_dump_test",
        "tools/sst_dump_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "sst_file_reader_test",
        "table/sst_file_reader_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "statistics_test",
        "monitoring/statistics_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "stats_history_test",
        "monitoring/stats_history_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "stringappend_test",
        "utilities/merge_operators/string_append/stringappend_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "table_properties_collector_test",
        "db/table_properties_collector_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "table_test",
        "table/table_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "testutil_test",
        "test_util/testutil_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "thread_list_test",
        "util/thread_list_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "thread_local_test",
        "util/thread_local_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "timer_queue_test",
        "util/timer_queue_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "timer_test",
        "util/timer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "trace_analyzer_test",
        "tools/trace_analyzer_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "transaction_lock_mgr_test",
        "utilities/transactions/transaction_lock_mgr_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "transaction_test",
        "utilities/transactions/transaction_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "ttl_test",
        "utilities/ttl/ttl_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "util_merge_operators_test",
        "utilities/util_merge_operators_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "version_builder_test",
        "db/version_builder_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "version_edit_test",
        "db/version_edit_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "version_set_test",
        "db/version_set_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "wal_manager_test",
        "db/wal_manager_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "work_queue_test",
        "util/work_queue_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_batch_test",
        "db/write_batch_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_batch_with_index_test",
        "utilities/write_batch_with_index/write_batch_with_index_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_buffer_manager_test",
        "memtable/write_buffer_manager_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_callback_test",
        "db/write_callback_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_controller_test",
        "db/write_controller_test.cc",
        "serial",
        [],
        [],
    ],
    [
        "write_prepared_transaction_test",
        "utilities/transactions/write_prepared_transaction_test.cc",
        "parallel",
        [],
        [],
    ],
    [
        "write_unprepared_transaction_test",
        "utilities/transactions/write_unprepared_transaction_test.cc",
        "parallel",
        [],
        [],
    ],
]

# Generate a test rule for each entry in ROCKS_TESTS
# Do not build the tests in opt mode, since SyncPoint and other test code
# will not be included.
[
    cpp_unittest(
        name = test_name,
        srcs = [test_cc],
        arch_preprocessor_flags = ROCKSDB_ARCH_PREPROCESSOR_FLAGS,
        os_preprocessor_flags = ROCKSDB_OS_PREPROCESSOR_FLAGS,
        compiler_flags = ROCKSDB_COMPILER_FLAGS,
        preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS,
        deps = [":rocksdb_test_lib"] + extra_deps,
        external_deps = ROCKSDB_EXTERNAL_DEPS + [
            ("googletest", None, "gtest"),
        ],
    )
    for test_name, test_cc, parallelism, extra_deps, extra_compiler_flags in ROCKS_TESTS
    if not is_opt_mode
]
