def test_load_and_check_config_local_incomplete_configuration(tmpdir) -> None:
    """Incomplete 'local' configuration should raise"""
    config = {"indexer_storage": {"cls": "local"}}

    expected_error = "Invalid configuration; missing 'db' config entry"
    config_path = prepare_config_file(tmpdir, config)
    with pytest.raises(ValueError, match=expected_error):
        load_and_check_config(config_path)
def test_load_and_check_config_remote_config_local_type_raise(
        class_storage, tmpdir) -> None:
    """Any other configuration than 'local' (the default) is rejected"""
    assert class_storage != "local"
    incompatible_config = {"indexer_storage": {"cls": class_storage}}
    config_path = prepare_config_file(tmpdir, incompatible_config)

    expected_error = (
        "The indexer_storage backend can only be started with a 'local' "
        "configuration")
    with pytest.raises(ValueError, match=expected_error):
        load_and_check_config(config_path)
    with pytest.raises(ValueError, match=expected_error):
        load_and_check_config(config_path, type="local")
Esempio n. 3
0
def rpc_server(config_path, host, port, debug):
    """Starts a Software Heritage Indexer RPC HTTP server."""
    from swh.indexer.storage.api.server import app, load_and_check_config

    api_cfg = load_and_check_config(config_path, type="any")
    app.config.update(api_cfg)
    app.run(host, port=int(port), debug=bool(debug))
def test_load_and_check_config_remote_config_fine(tmpdir) -> None:
    """'Remote configuration is fine (when changing the default type)"""
    config = {"indexer_storage": {"cls": "remote"}}
    config_path = prepare_config_file(tmpdir, config)
    cfg = load_and_check_config(config_path, type="any")

    assert cfg == config
def test_load_and_check_config_local_config_fine(tmpdir) -> None:
    """'Complete 'local' configuration is fine"""
    config = {
        "indexer_storage": {
            "cls": "local",
            "db": "db",
        }
    }
    config_path = prepare_config_file(tmpdir, config)
    cfg = load_and_check_config(config_path, type="local")
    assert cfg == config
def test_load_and_check_config_wrong_configuration(tmpdir) -> None:
    """Wrong configuration raises"""
    config_path = prepare_config_file(tmpdir, "something: useless")
    with pytest.raises(KeyError,
                       match="Missing '%indexer_storage' configuration"):
        load_and_check_config(config_path)
def test_load_and_check_inexistent_config_path() -> None:
    """Inexistent configuration file raises"""
    config_path = "/indexer/inexistent/config.yml"
    expected_error = f"Configuration file {config_path} does not exist"
    with pytest.raises(FileNotFoundError, match=expected_error):
        load_and_check_config(config_path)
def test_load_and_check_config_no_configuration(config_path) -> None:
    """Irrelevant configuration file path raises"""
    with pytest.raises(EnvironmentError,
                       match="Configuration file must be defined"):
        load_and_check_config(config_path)