Ejemplo n.º 1
0
def test_arctic_auth():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True), \
        patch('arctic.arctic.mongo_retry', autospec=True), \
         patch('arctic._cache.Cache._is_not_expired', return_value=True), \
         patch('arctic.arctic.get_auth', autospec=True) as ga:
        ga.return_value = Credential('db', 'admin_user', 'admin_pass')
        store = Arctic('cluster')
        # do something to trigger lazy arctic init
        store.list_libraries()
        ga.assert_called_once_with('cluster', 'arctic', 'admin')
        store._adminDB.authenticate.assert_called_once_with(
            'admin_user', 'admin_pass')
        ga.reset_mock()

        # Get a 'missing' library
        with pytest.raises(LibraryNotFoundException):
            with patch('arctic.arctic.ArcticLibraryBinding.get_library_type',
                       return_value=None,
                       autospec=True):
                ga.return_value = Credential('db', 'user', 'pass')
                store._conn['arctic_jblackburn'].name = 'arctic_jblackburn'
                store['jblackburn.library']

        # Creating the library will have attempted to auth against it
        ga.assert_called_once_with('cluster', 'arctic', 'arctic_jblackburn')
        store._conn['arctic_jblackburn'].authenticate.assert_called_once_with(
            'user', 'pass')
Ejemplo n.º 2
0
def test_arctic_auth_custom_app_name():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True), \
        patch('arctic.arctic.mongo_retry', autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
        ga.return_value = Credential('db', 'admin_user', 'admin_pass')
        store = Arctic('cluster', app_name=sentinel.app_name)
        # do something to trigger lazy arctic init
        store.list_libraries()
        assert ga.call_args_list == [
            call('cluster', sentinel.app_name, 'admin')
        ]
        ga.reset_mock()

        # Get a 'missing' library
        with pytest.raises(LibraryNotFoundException):
            with patch('arctic.arctic.ArcticLibraryBinding.get_library_type',
                       return_value=None,
                       autospec=True):
                ga.return_value = Credential('db', 'user', 'pass')
                store._conn['arctic_jblackburn'].name = 'arctic_jblackburn'
                store['jblackburn.library']

        # Creating the library will have attempted to auth against it
        assert ga.call_args_list == [
            call('cluster', sentinel.app_name, 'arctic_jblackburn')
        ]
Ejemplo n.º 3
0
def test_reset_Arctic(mongo_host, library_name):
    arctic = Arctic(mongo_host=mongo_host)
    arctic.list_libraries()
    arctic.initialize_library(library_name, VERSION_STORE)
    arctic[library_name]
    c = arctic._conn
    arctic.reset()
    assert len(c.nodes) == 0
Ejemplo n.º 4
0
def test_arctic_lazy_init():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
        patch('arctic.arctic.mongo_retry', side_effect=lambda x: x, autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
            store = Arctic('cluster')
            assert not mc.called
            # do something to trigger lazy arctic init
            store.list_libraries()
            assert mc.called
Ejemplo n.º 5
0
def test_arctic_lazy_init():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
        patch('arctic.arctic.mongo_retry', side_effect=lambda x: x, autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
        store = Arctic('cluster')
        assert not mc.called
        # do something to trigger lazy arctic init
        store.list_libraries()
        assert mc.called
Ejemplo n.º 6
0
def test_reset():
    c = MagicMock()
    with patch('pymongo.MongoClient', return_value=c, autospec=True) as mc:
                store = Arctic('hostname')
                # do something to trigger lazy arctic init
                store.list_libraries()
                store.reset()
                # Doesn't matter how many times we call it:
                store.reset()
                c.close.assert_called_once()
Ejemplo n.º 7
0
def test_reset_Arctic(mongo_host, library_name):
    arctic = Arctic(mongo_host=mongo_host)
    arctic.list_libraries()
    arctic.initialize_library(library_name, VERSION_STORE)
    c = arctic._conn
    assert arctic[library_name]._arctic_lib._curr_conn is c
    arctic.reset()
    assert c is not arctic._conn
    assert len(c.nodes) == 0
    assert arctic[library_name]._arctic_lib._curr_conn is arctic._conn
Ejemplo n.º 8
0
def test_reset():
    c = MagicMock()
    with patch('pymongo.MongoClient', return_value=c, autospec=True) as mc:
        store = Arctic('hostname')
        # do something to trigger lazy arctic init
        store.list_libraries()
        store.reset()
        # Doesn't matter how many times we call it:
        store.reset()
        c.close.assert_called_once()
Ejemplo n.º 9
0
def test_reset_Arctic(mongo_host, library_name):
    arctic = Arctic(mongo_host=mongo_host)
    arctic.list_libraries()
    arctic.initialize_library(library_name, VERSION_STORE)
    c = arctic._conn
    assert arctic[library_name]._arctic_lib._curr_conn is c
    arctic.reset()
    assert c is not arctic._conn
    assert len(c.nodes) == 0
    assert arctic[library_name]._arctic_lib._curr_conn is arctic._conn
Ejemplo n.º 10
0
def test_arctic_connect_hostname():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
         patch('arctic.arctic.mongo_retry', autospec=True) as ar, \
         patch('arctic.arctic.get_mongodb_uri', autospec=True) as gmu:
                store = Arctic('hostname', socketTimeoutMS=sentinel.socket_timeout,
                                         connectTimeoutMS=sentinel.connect_timeout,
                                         serverSelectionTimeoutMS=sentinel.select_timeout)
                # do something to trigger lazy arctic init
                store.list_libraries()
                ar(mc).assert_called_once_with(host=gmu('hostname'), maxPoolSize=4,
                                               socketTimeoutMS=sentinel.socket_timeout,
                                               connectTimeoutMS=sentinel.connect_timeout,
                                               serverSelectionTimeoutMS=sentinel.select_timeout)
Ejemplo n.º 11
0
def test_arctic_connect_hostname():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
         patch('arctic.arctic.mongo_retry', autospec=True) as ar, \
         patch('arctic.arctic.get_mongodb_uri', autospec=True) as gmu:
                store = Arctic('hostname', socketTimeoutMS=sentinel.socket_timeout,
                                         connectTimeoutMS=sentinel.connect_timeout,
                                         serverSelectionTimeoutMS=sentinel.select_timeout)
                # do something to trigger lazy arctic init
                store.list_libraries()
                mc.assert_called_once_with(host=gmu('hostname'), maxPoolSize=4,
                                           socketTimeoutMS=sentinel.socket_timeout,
                                           connectTimeoutMS=sentinel.connect_timeout,
                                           serverSelectionTimeoutMS=sentinel.select_timeout)
Ejemplo n.º 12
0
def test_arctic_connect_with_environment_name():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
         patch('arctic.arctic.mongo_retry', autospec=True) as ar, \
         patch('arctic.arctic.get_auth', autospec=True), \
         patch('arctic.arctic.get_mongodb_uri') as gmfe:
            store = Arctic('live', socketTimeoutMS=sentinel.socket_timeout,
                                 connectTimeoutMS=sentinel.connect_timeout,
                                 serverSelectionTimeoutMS=sentinel.select_timeout)
            # do something to trigger lazy arctic init
            store.list_libraries()
    assert gmfe.call_args_list == [call('live')]
    assert mc.call_args_list == [call(host=gmfe.return_value, maxPoolSize=4,
                                      socketTimeoutMS=sentinel.socket_timeout,
                                      connectTimeoutMS=sentinel.connect_timeout,
                                      serverSelectionTimeoutMS=sentinel.select_timeout)]
Ejemplo n.º 13
0
def test_arctic_connect_with_environment_name():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
         patch('arctic.arctic.mongo_retry', autospec=True) as ar, \
         patch('arctic.arctic.get_auth', autospec=True), \
         patch('arctic.arctic.get_mongodb_uri') as gmfe:
            store = Arctic('live', socketTimeoutMS=sentinel.socket_timeout,
                                 connectTimeoutMS=sentinel.connect_timeout,
                                 serverSelectionTimeoutMS=sentinel.select_timeout)
            # do something to trigger lazy arctic init
            store.list_libraries()
    assert gmfe.call_args_list == [call('live')]
    assert ar(mc).call_args_list == [call(host=gmfe.return_value, maxPoolSize=4,
                                          socketTimeoutMS=sentinel.socket_timeout,
                                          connectTimeoutMS=sentinel.connect_timeout,
                                          serverSelectionTimeoutMS=sentinel.select_timeout)]
Ejemplo n.º 14
0
def test_arctic_lazy_init_ssl_true():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
            patch('arctic.arctic.mongo_retry', side_effect=lambda x: x, autospec=True), \
            patch('arctic.arctic.get_auth', autospec=True) as ga:
        store = Arctic('cluster', ssl=True)
        assert not mc.called
        # do something to trigger lazy arctic init
        store.list_libraries()
        assert mc.called
        assert len(mc.mock_calls) == 1
        assert mc.mock_calls[0] == call(connectTimeoutMS=2000,
                                        host='cluster',
                                        maxPoolSize=4,
                                        serverSelectionTimeoutMS=30000,
                                        socketTimeoutMS=600000,
                                        ssl=True)
Ejemplo n.º 15
0
def test_arctic_lazy_init_ssl_true():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True) as mc, \
            patch('arctic.arctic.mongo_retry', side_effect=lambda x: x, autospec=True), \
            patch('arctic.arctic.get_auth', autospec=True) as ga:
        store = Arctic('cluster', ssl=True)
        assert not mc.called
        # do something to trigger lazy arctic init
        store.list_libraries()
        assert mc.called
        assert len(mc.mock_calls) == 1
        assert mc.mock_calls[0] == call(connectTimeoutMS=2000,
                                        host='cluster',
                                        maxPoolSize=4,
                                        serverSelectionTimeoutMS=30000,
                                        socketTimeoutMS=600000,
                                        ssl=True)
Ejemplo n.º 16
0
def test_arctic_auth_custom_app_name():
    with patch("pymongo.MongoClient", return_value=MagicMock(), autospec=True), patch(
        "arctic.arctic.mongo_retry", autospec=True
    ), patch("arctic.arctic.get_auth", autospec=True) as ga:
        ga.return_value = Credential("db", "admin_user", "admin_pass")
        store = Arctic("cluster", app_name=sentinel.app_name)
        # do something to trigger lazy arctic init
        store.list_libraries()
        assert ga.call_args_list == [call("cluster", sentinel.app_name, "admin")]
        ga.reset_mock()

        # Get a 'missing' library
        with pytest.raises(LibraryNotFoundException):
            with patch("arctic.arctic.ArcticLibraryBinding.get_library_type", return_value=None, autospec=True):
                ga.return_value = Credential("db", "user", "pass")
                store._conn["arctic_jblackburn"].name = "arctic_jblackburn"
                store["jblackburn.library"]

        # Creating the library will have attempted to auth against it
        assert ga.call_args_list == [call("cluster", sentinel.app_name, "arctic_jblackburn")]
Ejemplo n.º 17
0
def test_arctic_auth_custom_app_name():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True), \
        patch('arctic.arctic.mongo_retry', autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
            ga.return_value = Credential('db', 'admin_user', 'admin_pass')
            store = Arctic('cluster', app_name=sentinel.app_name)
            # do something to trigger lazy arctic init
            store.list_libraries()
            assert ga.call_args_list == [call('cluster', sentinel.app_name, 'admin')]
            ga.reset_mock()

            # Get a 'missing' library
            with pytest.raises(LibraryNotFoundException):
                with patch('arctic.arctic.ArcticLibraryBinding.get_library_type', return_value=None, autospec=True):
                    ga.return_value = Credential('db', 'user', 'pass')
                    store._conn['arctic_jblackburn'].name = 'arctic_jblackburn'
                    store['jblackburn.library']

            # Creating the library will have attempted to auth against it
            assert ga.call_args_list == [call('cluster', sentinel.app_name, 'arctic_jblackburn')]
Ejemplo n.º 18
0
def test_arctic_connect_with_environment_name():
    with patch("pymongo.MongoClient", return_value=MagicMock(), autospec=True) as mc, patch(
        "arctic.arctic.mongo_retry", autospec=True
    ) as ar, patch("arctic.arctic.get_auth", autospec=True), patch("arctic.arctic.get_mongodb_uri") as gmfe:
        store = Arctic(
            "live",
            socketTimeoutMS=sentinel.socket_timeout,
            connectTimeoutMS=sentinel.connect_timeout,
            serverSelectionTimeoutMS=sentinel.select_timeout,
        )
        # do something to trigger lazy arctic init
        store.list_libraries()
    assert gmfe.call_args_list == [call("live")]
    assert ar(mc).call_args_list == [
        call(
            host=gmfe.return_value,
            maxPoolSize=4,
            socketTimeoutMS=sentinel.socket_timeout,
            connectTimeoutMS=sentinel.connect_timeout,
            serverSelectionTimeoutMS=sentinel.select_timeout,
        )
    ]
Ejemplo n.º 19
0
def test_arctic_auth():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True), \
        patch('arctic.arctic.mongo_retry', autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
            ga.return_value = Credential('db', 'admin_user', 'admin_pass')
            store = Arctic('cluster')
            # do something to trigger lazy arctic init
            store.list_libraries()
            ga.assert_called_once_with('cluster', 'arctic', 'admin')
            store._adminDB.authenticate.assert_called_once_with('admin_user', 'admin_pass')
            ga.reset_mock()

            # Get a 'missing' library
            with pytest.raises(LibraryNotFoundException):
                with patch('arctic.arctic.ArcticLibraryBinding.get_library_type', return_value=None, autospec=True):
                    ga.return_value = Credential('db', 'user', 'pass')
                    store._conn['arctic_jblackburn'].name = 'arctic_jblackburn'
                    store._conn['arctic_jblackburn'].command.return_value = mock_conn_info
                    store['jblackburn.library']

            # Creating the library will have attempted to auth against it
            ga.assert_called_once_with('cluster', 'arctic', 'arctic_jblackburn')
            store._conn['arctic_jblackburn'].authenticate.assert_called_once_with('user', 'pass')
Ejemplo n.º 20
0
def test_arctic_auth_admin_reauth():
    with patch('pymongo.MongoClient', return_value=MagicMock(), autospec=True), \
        patch('arctic.arctic.mongo_retry', autospec=True), \
        patch('arctic.arctic.get_auth', autospec=True) as ga:
            ga.return_value = Credential('db', 'admin_user', 'admin_pass')
            store = Arctic('cluster')
            # do something to trigger lazy arctic init
            store.list_libraries()
            assert ga.call_args_list == [call('cluster', 'arctic', 'admin')]
            ga.reset_mock()

            # Get a 'missing' library
            with pytest.raises(LibraryNotFoundException):
                with patch('arctic.arctic.ArcticLibraryBinding.get_library_type', return_value=None, autospec=True), \
                patch('arctic.arctic.logger') as logger:
                    ga.return_value = Credential('db', 'user', 'pass')
                    store._conn['arctic_jblackburn'].name = 'arctic_jblackburn'
                    store._conn['arctic_jblackburn'].command.return_value = mock_conn_info_empty
                    store['jblackburn.library']

            assert store._conn['arctic_jblackburn'].command.call_args_list == [call({'connectionStatus': 1})]
            assert ga.call_args_list == [call('cluster', 'arctic', 'arctic_jblackburn'),
                                         call('cluster', 'arctic', store._adminDB.name)]
Ejemplo n.º 21
0
def test_connect_to_Arctic_connection(mongodb, mongo_host):
    arctic = Arctic(mongodb)
    assert arctic.list_libraries() == []
    assert arctic.mongo_host == mongo_host
Ejemplo n.º 22
0
def test_connect_to_Arctic_string(mongo_host):
    arctic = Arctic(mongo_host=mongo_host)
    assert arctic.list_libraries() == []
    assert arctic.mongo_host == mongo_host
Ejemplo n.º 23
0
def test_connect_to_Arctic_connection(mongodb, mongo_host):
    arctic = Arctic(mongodb)
    assert arctic.list_libraries() == []
    assert arctic.mongo_host == mongo_host
Ejemplo n.º 24
0
def test_connect_to_Arctic_string(mongo_host):
    arctic = Arctic(mongo_host=mongo_host)
    assert arctic.list_libraries() == []
    assert arctic.mongo_host == mongo_host