# -*- mode: python -*-

Import([
    "env",
    "get_option",
])

env = env.Clone()

env.Library(
    target='rate_limiting',
    source=[
        'rate_limiting.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/util/clock_sources',
    ],
)

env.Library(target='query_stats_parse', source=['transform_algorithm.idl'], LIBDEPS=[
    '$BUILD_DIR/mongo/base',
    '$BUILD_DIR/mongo/idl/idl_parser',
])

env.Library(
    target='query_stats',
    source=[
        '$BUILD_DIR/mongo/db/curop.cpp',
        'key.cpp',
        'query_stats.cpp',
        'query_stats_entry.cpp'
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson',
        '$BUILD_DIR/mongo/db/commands',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/exec/document_value/document_value',
        '$BUILD_DIR/mongo/db/generic_cursor',
        '$BUILD_DIR/mongo/db/profile_filter',
        '$BUILD_DIR/mongo/db/query/command_request_response',
        '$BUILD_DIR/mongo/db/query/memory_util',
        '$BUILD_DIR/mongo/db/query/query_knobs',
        '$BUILD_DIR/mongo/db/query/query_shape/query_shape',
        '$BUILD_DIR/mongo/db/server_options',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/stats/counters',
        '$BUILD_DIR/mongo/db/stats/timer_stats',
        '$BUILD_DIR/mongo/db/storage/storage_engine_parameters',
        '$BUILD_DIR/mongo/rpc/client_metadata',
        '$BUILD_DIR/mongo/transport/service_executor',
        '$BUILD_DIR/mongo/util/diagnostic_info' if get_option('use-diagnostic-latches') == 'on' else [],
        '$BUILD_DIR/mongo/util/fail_point',
        '$BUILD_DIR/mongo/util/net/network',
        '$BUILD_DIR/mongo/util/processinfo',
        '$BUILD_DIR/mongo/util/progress_meter',
        'query_stats_parse',
        'rate_limiting',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/auth/user_acquisition_stats',
        '$BUILD_DIR/mongo/db/exec/projection_executor',
        '$BUILD_DIR/mongo/db/prepare_conflict_tracker',
        '$BUILD_DIR/mongo/db/stats/resource_consumption_metrics',
    ],
)

env.CppUnitTest(
    target="db_query_query_stats_test",
    source=[
        "agg_key_test.cpp",
        "find_key_test.cpp",
        "key_test.cpp",
        "query_stats_test.cpp",
        "query_stats_store_test.cpp",
        "rate_limiting_test.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/auth/authmocks",
        "$BUILD_DIR/mongo/db/query/query_shape/query_shape",
        "$BUILD_DIR/mongo/db/query/query_test_service_context",
        "$BUILD_DIR/mongo/db/service_context_d_test_fixture",
        "query_stats",
        "rate_limiting",
    ],
)

env.Benchmark(
    target='rate_limiting_bm',
    source=[
        'rate_limiting_bm.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/unittest/unittest',
        '$BUILD_DIR/mongo/util/processinfo',
        'rate_limiting',
    ],
)

env.Benchmark(
    target='shapifying_bm',
    source=[
        'shapifying_bm.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/pipeline/pipeline',
        '$BUILD_DIR/mongo/db/query/canonical_query',
        '$BUILD_DIR/mongo/db/query/query_shape/query_shape',
        '$BUILD_DIR/mongo/db/query/query_test_service_context',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/rpc/client_metadata',
        '$BUILD_DIR/mongo/unittest/unittest',
        '$BUILD_DIR/mongo/util/processinfo',
        'query_stats',
    ],
)
