load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_benchmark.bzl", "fb_dirsync_cpp_benchmark")
load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_unittest.bzl", "fb_dirsync_cpp_unittest")

oncall("fbcode_entropy_wardens_folly")

fb_dirsync_cpp_benchmark(
    name = "atomic_read_mostly_main_ptr_benchmark",
    srcs = ["AtomicReadMostlyMainPtrBenchmark.cpp"],
    deps = [
        "//folly:benchmark",
        "//folly/concurrency/memory:atomic_read_mostly_main_ptr",
        "//folly/portability:gflags",
    ],
)

fb_dirsync_cpp_unittest(
    name = "atomic_read_mostly_main_ptr_test",
    srcs = ["AtomicReadMostlyMainPtrTest.cpp"],
    deps = [
        "//folly/concurrency/memory:atomic_read_mostly_main_ptr",
        "//folly/portability:gtest",
    ],
)

fb_dirsync_cpp_benchmark(
    name = "read_mostly_shared_ptr_benchmark",
    srcs = ["ReadMostlySharedPtrBenchmark.cpp"],
    args = [
        "--json",
    ],
    deps = [
        "//folly:benchmark",
        "//folly:memory",
        "//folly/concurrency/memory:read_mostly_shared_ptr",
        "//folly/portability:gflags",
    ],
)

fb_dirsync_cpp_unittest(
    name = "read_mostly_shared_ptr_stress_test",
    srcs = ["ReadMostlySharedPtrStressTest.cpp"],
    labels = ["heavyweight"],
    deps = [
        "//folly/concurrency/memory:read_mostly_shared_ptr",
        "//folly/portability:gtest",
    ],
)

fb_dirsync_cpp_unittest(
    name = "read_mostly_shared_ptr_test",
    srcs = ["ReadMostlySharedPtrTest.cpp"],
    deps = [
        "//folly:memory",
        "//folly/concurrency/memory:read_mostly_shared_ptr",
        "//folly/portability:gtest",
        "//folly/synchronization:baton",
    ],
)

fb_dirsync_cpp_unittest(
    name = "primary_ptr_test",
    srcs = ["PrimaryPtrTest.cpp"],
    labels = ["oss-broken"],
    modifiers = ["ovr_config//build_mode:asan_ubsan_dev_sanitizer_flags[enabled]"],
    deps = [
        "//folly/concurrency/memory:primary_ptr",
        "//folly/executors:cpu_thread_pool_executor",
        "//folly/executors:manual_executor",
        "//folly/portability:gtest",
        "//folly/synchronization:baton",
    ],
)

fb_dirsync_cpp_benchmark(
    name = "ref_count_benchmark",
    srcs = ["RefCountBenchmark.cpp"],
    deps = [
        "//folly:benchmark",
        "//folly/concurrency/memory:tl_ref_count",
    ],
)

fb_dirsync_cpp_unittest(
    name = "ref_count_test",
    srcs = ["RefCountTest.cpp"],
    deps = [
        "//folly/concurrency/memory:tl_ref_count",
        "//folly/portability:gtest",
        "//folly/synchronization:baton",
        "//folly/synchronization/test:barrier",
    ],
)
