def streetnetwork_backend_manager_db_test(): """ Test that streetnetwork backends are created from db when conditions are met """ manager = StreetNetworkBackendManager(sn_backends_getter_ok, -1) # 2 sn_backends defined in db are associated to the coverage # -> 2 sn_backends created manager._can_connect_to_database = MagicMock(return_value=True) manager._update_config("instance") assert not manager._streetnetwork_backends_by_instance_legacy assert len(manager._streetnetwork_backends) == 2 assert 'kraken' in manager._streetnetwork_backends assert manager._streetnetwork_backends['kraken'].url == 'kraken.url' assert 'asgard' in manager._streetnetwork_backends assert manager._streetnetwork_backends['asgard'].url == 'asgard.url' manager_update = manager._last_update assert 'kraken' in manager._streetnetwork_backends_last_update kraken_update = manager._streetnetwork_backends_last_update['kraken'] # Sn_backend already existing is updated manager._sn_backends_getter = sn_backends_getter_update manager._can_connect_to_database = MagicMock(return_value=True) manager._update_config("instance") assert manager._last_update > manager_update assert not manager._streetnetwork_backends_by_instance_legacy assert len(manager._streetnetwork_backends) == 2 assert 'kraken' in manager._streetnetwork_backends assert manager._streetnetwork_backends['kraken'].url == 'kraken.url.UPDATE' assert 'kraken' in manager._streetnetwork_backends_last_update assert manager._streetnetwork_backends_last_update['kraken'] > kraken_update # Long update interval so sn_backend shouldn't be updated manager = StreetNetworkBackendManager(sn_backends_getter_ok, 600) manager._can_connect_to_database = MagicMock(return_value=True) manager._update_config("instance") assert not manager._streetnetwork_backends_by_instance_legacy assert len(manager._streetnetwork_backends) == 2 assert 'kraken' in manager._streetnetwork_backends assert manager._streetnetwork_backends['kraken'].url == 'kraken.url' manager_update = manager._last_update manager.sn_backends_getter = sn_backends_getter_update manager._update_config("instance") assert manager._last_update == manager_update assert not manager._streetnetwork_backends_by_instance_legacy assert len(manager._streetnetwork_backends) == 2 assert 'kraken' in manager._streetnetwork_backends assert manager._streetnetwork_backends['kraken'].url == 'kraken.url'
def get_all_street_networks_db_test(): manager = StreetNetworkBackendManager(sn_backends_getter_ok, -1) instance = FakeInstance() manager._can_connect_to_database = MagicMock(return_value=True) all_sn = manager.get_all_street_networks_db(instance) assert len(all_sn) == 2 # So that Asgard and kraken are always in the same order all_sn_sorted = sorted(all_sn, key=lambda sn: sn.url) assert all_sn_sorted[0].url == "asgard.url" assert sorted(all_sn_sorted[0].modes) == sorted( ["walking", "car", "car_no_park"]) assert all_sn_sorted[1].url == "kraken.url" assert all_sn_sorted[1].modes == ["bss"]
def wrong_streetnetwork_backend_test(): """ Test that streetnetwork backends with wrong parameters aren't created """ # Sn_backend has a class wrongly formatted manager = StreetNetworkBackendManager(sn_backends_getter_wrong_class, -1) manager._can_connect_to_database = MagicMock(return_value=True) manager._update_config("instance") assert not manager._streetnetwork_backends_by_instance_legacy assert not manager._streetnetwork_backends # No sn_backends available in db manager._sn_backends_getter = [] manager._update_config("instance") assert not manager._streetnetwork_backends_by_instance_legacy assert not manager._streetnetwork_backends
def get_street_network_db_test(): manager = StreetNetworkBackendManager(sn_backends_getter_ok, -1) manager._can_connect_to_database = MagicMock(return_value=True) sn = manager.get_street_network_db("instance", "kraken") assert sn is not None assert sn.timeout == 2 assert sn.url == 'kraken.url' sn = manager.get_street_network_db("instance", "asgard") assert sn is not None assert sn.timeout == 2 assert sn.url == 'asgard.url' with pytest.raises(TechnicalError) as excinfo: sn = manager.get_street_network_db("instance", "plopi") assert ( str(excinfo.value.data['message']) == 'impossible to find a streetnetwork module for instance instance with configuration plopi' ) assert 'TechnicalError' == str(excinfo.typename)