75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
# coding=utf-8
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from spark_executor.core import connection_store
|
|
from spark_executor.models import Connection
|
|
|
|
|
|
def _conn(name: str) -> Connection:
|
|
return Connection(name=name, master="yarn")
|
|
|
|
|
|
def test_save_then_get_roundtrip(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
connection_store.store.save(_conn("prod"))
|
|
assert connection_store.store.get("prod") is not None
|
|
assert connection_store.store.get("prod").master == "yarn"
|
|
|
|
|
|
def test_save_persists_to_json_file(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
connection_store.store.save(_conn("prod"))
|
|
path = tmp_path / "connections.json"
|
|
assert path.is_file()
|
|
payload = json.loads(path.read_text())
|
|
assert "prod" in payload
|
|
assert payload["prod"]["master"] == "yarn"
|
|
|
|
|
|
def test_get_missing_returns_none(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
assert connection_store.store.get("missing") is None
|
|
|
|
|
|
def test_list_all_returns_empty_when_file_absent(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
assert connection_store.store.list_all() == []
|
|
|
|
|
|
def test_list_all_returns_saved_connections(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
connection_store.store.save(_conn("a"))
|
|
connection_store.store.save(_conn("b"))
|
|
names = {c.name for c in connection_store.store.list_all()}
|
|
assert names == {"a", "b"}
|
|
|
|
|
|
def test_save_upserts_existing(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
connection_store.store.save(_conn("prod"))
|
|
updated = Connection(name="prod", master="spark://new:7077", deploy_mode="client")
|
|
connection_store.store.save(updated)
|
|
assert connection_store.store.get("prod").master == "spark://new:7077"
|
|
assert connection_store.store.get("prod").deploy_mode == "client"
|
|
|
|
|
|
def test_delete_returns_true_when_present(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
connection_store.store.save(_conn("prod"))
|
|
assert connection_store.store.delete("prod") is True
|
|
assert connection_store.store.get("prod") is None
|
|
|
|
|
|
def test_delete_returns_false_when_absent(tmp_path: Path, monkeypatch):
|
|
monkeypatch.setattr(connection_store, "DEFAULT_DATA_DIR", str(tmp_path))
|
|
monkeypatch.setattr(connection_store, "store", connection_store.ConnectionStore())
|
|
assert connection_store.store.delete("nope") is False
|