# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target="cluster_query",
    source=[
        "cluster_find.cpp",
        "cluster_query_knobs.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/commands',
        '$BUILD_DIR/mongo/db/query/query_common',
        "cluster_client_cursor",
        "cluster_cursor_cleanup_job",
        "store_possible_cursor",
    ],
)

env.Library(
    target="cluster_client_cursor",
    source=[
        "cluster_client_cursor_impl.cpp",
    ],
    LIBDEPS=[
        "router_exec_stage",
    ],
)

env.Library(
    target="router_exec_stage",
    source=[
        "document_source_router_adapter.cpp",
        "router_stage_limit.cpp",
        "router_stage_merge.cpp",
        "router_stage_mock.cpp",
        "router_stage_pipeline.cpp",
        "router_stage_remove_metadata_fields.cpp",
        "router_stage_skip.cpp",
        "router_stage_update_on_add_shard.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/query/query_common",
        "async_results_merger",
    ],
    LIBDEPS_PRIVATE=[
        "$BUILD_DIR/mongo/db/pipeline/document_source_lookup",
    ],
)

env.CppUnitTest(
    target="router_exec_stage_test",
    source=[
        "router_stage_limit_test.cpp",
        "router_stage_remove_metadata_fields_test.cpp",
        "router_stage_skip_test.cpp",
    ],
    LIBDEPS=[
        'router_exec_stage',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
    ],
)

env.Library(
    target="async_results_merger",
    source=[
        "async_results_merger.cpp",
        "cluster_client_cursor_params.cpp",
        "establish_cursors.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/query/command_request_response",
        "$BUILD_DIR/mongo/executor/task_executor_interface",
        "$BUILD_DIR/mongo/s/async_requests_sender",
        "$BUILD_DIR/mongo/s/client/sharding_client",
        "$BUILD_DIR/mongo/db/pipeline/pipeline",
        "$BUILD_DIR/mongo/s/coreshard",
    ],
    LIBDEPS_PRIVATE=[
        "$BUILD_DIR/mongo/db/pipeline/document_source_lookup",
    ],
)

env.Library(
    target="cluster_client_cursor_mock",
    source=[
        "cluster_client_cursor_mock.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
    ],
)

env.CppUnitTest(
    target="async_results_merger_test",
    source=[
        "async_results_merger_test.cpp",
    ],
    LIBDEPS=[
        'async_results_merger',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/query/query_request',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
        '$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture',
        '$BUILD_DIR/mongo/s/sharding_test_fixture',
    ],
)

env.CppUnitTest(
    target="establish_cursors_test",
    source=[
        "establish_cursors_test.cpp",
    ],
    LIBDEPS=[
        'async_results_merger',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/query/query_request',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
        '$BUILD_DIR/mongo/s/sharding_test_fixture',
    ],
)
env.Library(
    target="store_possible_cursor",
    source=[
        "store_possible_cursor.cpp"
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/base",
        "$BUILD_DIR/mongo/db/query/command_request_response",
        "cluster_client_cursor",
        "cluster_cursor_manager",
    ],
)

env.CppUnitTest(
    target="store_possible_cursor_test",
    source=[
        "store_possible_cursor_test.cpp",
    ],
    LIBDEPS=[
        'store_possible_cursor',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
        '$BUILD_DIR/mongo/util/clock_source_mock',
    ],
)

env.Library(
    target="cluster_cursor_manager",
    source=[
        "cluster_cursor_manager.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/auth/authcore',
        '$BUILD_DIR/mongo/db/generic_cursor',
        '$BUILD_DIR/mongo/db/kill_sessions',
        '$BUILD_DIR/mongo/db/logical_session_cache',
        '$BUILD_DIR/mongo/db/logical_session_id',
    ],
)

env.CppUnitTest(
    target="cluster_cursor_manager_test",
    source=[
        "cluster_cursor_manager_test.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/logical_session_id",
        "$BUILD_DIR/mongo/db/service_context_noop_init",
        "$BUILD_DIR/mongo/util/clock_source_mock",
        "cluster_client_cursor_mock",
        "cluster_cursor_manager",
    ],
)

env.Library(
    target="cluster_cursor_cleanup_job",
    source=[
        "cluster_cursor_cleanup_job.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/cursor_server_params",
        "$BUILD_DIR/mongo/s/coreshard",
        "$BUILD_DIR/mongo/util/background_job",
    ],
)

env.CppUnitTest(
    target="cluster_client_cursor_impl_test",
    source=[
        "cluster_client_cursor_impl_test.cpp",
    ],
    LIBDEPS=[
        'cluster_client_cursor',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
    ],
)
