# -*- mode: python -*-

Import("env")

#
# Schema and backward compatibility code for "config" collections.
#

env.StaticLibrary('base', [#'chunk_version.cpp',
                           'field_parser.cpp',
                           'mongo_version_range.cpp',
                           'type_changelog.cpp',
                           'type_chunk.cpp',
                           'type_collection.cpp',
                           'type_database.cpp',
                           'type_locks.cpp',
                           'type_lockpings.cpp',
                           'type_settings.cpp',
                           'type_shard.cpp',
                           'type_config_version.cpp',
                           'type_mongos.cpp',
                           'type_tags.cpp'],
                  LIBDEPS=['$BUILD_DIR/mongo/base/base',
                           '$BUILD_DIR/mongo/bson'])

env.CppUnitTest('chunk_version_test', 'chunk_version_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('field_parser_test', 'field_parser_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('mongo_version_range_test', 'mongo_version_range_test.cpp', 
                LIBDEPS=['base', '$BUILD_DIR/mongo/bson'])

env.CppUnitTest('type_changelog_test', 'type_changelog_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_chunk_test', 'type_chunk_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_collection_test', 'type_collection_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_config_version_test', 'type_config_version_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_database_test', 'type_database_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_locks_test', 'type_locks_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_lockpings_test', 'type_lockpings_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_settings_test', 'type_settings_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_shard_test', 'type_shard_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_mongos_test', 'type_mongos_test.cpp', LIBDEPS=['base'])

env.CppUnitTest('type_tags_test', 'type_tags_test.cpp', LIBDEPS=['base'])

#
# Upgrade library for config database
# Built only on 'mongocommon' because clientandshell pulls in 'defaultversion'
#

env.Library('upgrade', ['cluster_client_internal.cpp',
                        'config_upgrade.cpp',
                        'config_upgrade_helpers.cpp',
                        'config_upgrade_v0_to_v4.cpp',
                        'config_upgrade_v3_to_v4.cpp'],
            LIBDEPS=['base',
                     '$BUILD_DIR/mongo/mongocommon'])

# TODO: config upgrade tests are currently in dbtests

#
# Support for maintaining persistent sharding state and data.
#

env.StaticLibrary('metadata', ['collection_manager.cpp',
                               'metadata_loader.cpp'],
                  LIBDEPS=['base',
                           '$BUILD_DIR/mongo/clientandshell',
                           '$BUILD_DIR/mongo/base/base',
                           '$BUILD_DIR/mongo/bson'])

env.CppUnitTest('chunk_diff_test',
                'chunk_diff_test.cpp',
                LIBDEPS=['metadata'],
                NO_CRUTCH=True)

env.CppUnitTest('collection_manager_test',
                'collection_manager_test.cpp',
                LIBDEPS=['metadata',
                         '$BUILD_DIR/mongo/mocklib'],
                NO_CRUTCH=True)

env.CppUnitTest('metadata_loader_test',
                'metadata_loader_test.cpp',
                LIBDEPS=['metadata',
                         '$BUILD_DIR/mongo/mocklib'],
                NO_CRUTCH=True);
