# -*- mode: python -*-

Import('env')

env = env.Clone()

env.Library(
    target='sdam',
    source=[
        'sdam_configuration.cpp',
        'sdam_configuration_parameters.idl',
        'sdam_datatypes.cpp',
        'server_description.cpp',
        'server_selector.cpp',
        'topology_description.cpp',
        'topology_listener.cpp',
        'topology_manager.cpp',
        'topology_state_machine.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/read_preference',
        '$BUILD_DIR/mongo/db/repl/optime',
        '$BUILD_DIR/mongo/db/wire_version',
        '$BUILD_DIR/mongo/executor/task_executor_interface',
        '$BUILD_DIR/mongo/rpc/metadata',
        '$BUILD_DIR/mongo/util/clock_sources',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/util/fail_point',
    ],
)

sdam_json_test = env.Program(
    target='sdam_json_test',
    source=[
        'sdam_json_test_runner.cpp',
    ],
    AIB_COMPONENT='sdam-json-test',
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/connection_string',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/util/clock_source_mock',
        'json_test',
        'sdam',
        'sdam_test_util',
    ],
)[0]

server_selection_json_test = env.Program(
    target='server_selection_json_test',
    source=[
        'server_selection_json_test_runner.cpp',
    ],
    AIB_COMPONENT='server-selection-json-test',
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/connection_string',
        '$BUILD_DIR/mongo/util/clock_source_mock',
        'json_test',
        'sdam',
        'sdam_test_util',
    ],
)[0]

env.Library(
    target='json_test',
    source=[
        'json_test_arg_parser.cpp',
        'json_test_runner_cli_options.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/util/options_parser/options_parser',
        'sdam',
    ],
)

env.Library(
    target='sdam_test_util',
    source=[
        'mock_topology_manager.cpp',
        'server_description_builder.cpp',
        'topology_description_builder.cpp',
        'topology_listener_mock.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        'sdam',
    ],
)

env.CppUnitTest(
    target='sdam_test',
    source=[
        'election_id_set_version_pair_test.cpp',
        'server_description_test.cpp',
        'server_selector_test.cpp',
        'topology_description_test.cpp',
        'topology_listener_test.cpp',
        'topology_manager_test.cpp',
        'topology_state_machine_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver_network',
        '$BUILD_DIR/mongo/client/replica_set_monitor_protocol_test_util',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture',
        'sdam',
        'sdam_test_util',
    ],
)
