# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target="stats",
    source=[
        'collection_statistics_impl.cpp',
        'stats_catalog.cpp',
        'stats_cache.cpp',
        'stats_cache_loader_impl.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/util/caching',
        '$BUILD_DIR/mongo/util/concurrency/thread_pool',
        'stats_histograms',
    ],
)

env.Library(
    target="stats_histograms",
    source=[
        'array_histogram.cpp',
        'scalar_histogram.cpp',
        'stats.idl',
        'value_utils.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/sbe_values',
    ],
)

env.Library(
    target="stats_gen",
    source=[
        'max_diff.cpp',
    ],
    LIBDEPS=[
        'stats_histograms',
    ],
)

env.CppUnitTest(
    target='stats_cache_loader_test',
    source=[
        'stats_cache_loader_test.cpp',
        'stats_cache_loader_test_fixture.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/catalog/collection_crud',
        '$BUILD_DIR/mongo/db/commands/test_commands_enabled',
        '$BUILD_DIR/mongo/db/index_builds_coordinator_mongod',
        '$BUILD_DIR/mongo/db/multitenancy',
        '$BUILD_DIR/mongo/db/op_observer/op_observer',
        '$BUILD_DIR/mongo/db/op_observer/op_observer_impl',
        '$BUILD_DIR/mongo/db/query/datetime/date_time_support',
        '$BUILD_DIR/mongo/db/query/query_test_service_context',
        '$BUILD_DIR/mongo/db/query_expressions',
        '$BUILD_DIR/mongo/db/repl/drop_pending_collection_reaper',
        '$BUILD_DIR/mongo/db/repl/oplog',
        '$BUILD_DIR/mongo/db/repl/optime',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/repl/storage_interface_impl',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        '$BUILD_DIR/mongo/db/service_context_test_fixture',
        '$BUILD_DIR/mongo/db/shard_role',
        '$BUILD_DIR/mongo/db/storage/wiredtiger/storage_wiredtiger',
        '$BUILD_DIR/mongo/db/timeseries/timeseries_options',
        '$BUILD_DIR/mongo/unittest/unittest',
        '$BUILD_DIR/mongo/util/clock_source_mock',
        '$BUILD_DIR/mongo/util/fail_point',
        '$BUILD_DIR/mongo/util/pcre_wrapper',
    ],
)

env.CppUnitTest(
    target='stats_cache_test',
    source=[
        'stats_cache_test.cpp',
        'stats_cache_loader_mock.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/service_context',
        'stats_test_utils',
    ],
)

env.CppUnitTest(
    target="stats_path_test",
    source=[
        "stats_path_test.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/service_context',
        'stats_test_utils',
    ],
)

env.Library(
    target='stats_test_utils',
    source=[
        'collection_statistics_mock.cpp',
        'rand_utils.cpp',
        'rand_utils_new.cpp',
        'maxdiff_test_utils.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/exec/sbe/sbe_abt_test_util',
        'stats_gen',
        'stats_histograms',
    ],
)

env.CppUnitTest(
    target="type_collision_test",
    source=[
        "type_collision_test.cpp",
    ],
    LIBDEPS=[
        'stats_test_utils',
    ],
)

env.CppUnitTest(
    target="type_count_test",
    source=[
        "type_count_test.cpp",
    ],
    LIBDEPS=[
        'stats_test_utils',
    ],
)

env.CppUnitTest(
    target='array_histogram_test',
    source=[
        'array_histogram_test.cpp',
    ],
    LIBDEPS=[
        'stats_test_utils',
    ],
)
