You've already forked directdnsonly
feat: peer sync configurable via env vars + document CoreDNS file cache 🔗
- PeerSyncWorker reads DADNS_PEER_SYNC_PEER_URL / _USERNAME / _PASSWORD env vars to populate a single peer without a config file; deduped against any config-file peers so the URL never appears twice - 2 new tests (119 total, all passing) - README: peer sync single-peer env var table; Topology C compose example updated to use env vars only (no config file needed for two-node setup) - README: document cybercinch/coredns_mysql_extend built-in file caching — serves from cache during MySQL outages, eliminates per-query round-trips
This commit is contained in:
@@ -58,6 +58,27 @@ def test_peers_stored():
|
||||
assert worker.peers[0]["url"] == "http://ddo-2:2222"
|
||||
|
||||
|
||||
def test_peer_from_env_var(monkeypatch):
|
||||
"""DADNS_PEER_SYNC_PEER_URL adds a peer without a config file."""
|
||||
monkeypatch.setenv("DADNS_PEER_SYNC_PEER_URL", "http://ddo-env:2222")
|
||||
monkeypatch.setenv("DADNS_PEER_SYNC_PEER_USERNAME", "admin")
|
||||
monkeypatch.setenv("DADNS_PEER_SYNC_PEER_PASSWORD", "secret")
|
||||
worker = PeerSyncWorker({"enabled": True})
|
||||
assert len(worker.peers) == 1
|
||||
assert worker.peers[0]["url"] == "http://ddo-env:2222"
|
||||
assert worker.peers[0]["username"] == "admin"
|
||||
assert worker.peers[0]["password"] == "secret"
|
||||
|
||||
|
||||
def test_env_peer_not_duplicated_when_also_in_config(monkeypatch):
|
||||
"""Env var peer is not added if it already appears in the config file peers list."""
|
||||
monkeypatch.setenv("DADNS_PEER_SYNC_PEER_URL", "http://ddo-2:2222")
|
||||
worker = PeerSyncWorker(BASE_CONFIG)
|
||||
# BASE_CONFIG already has http://ddo-2:2222 — must remain exactly one entry
|
||||
urls = [p["url"] for p in worker.peers]
|
||||
assert urls.count("http://ddo-2:2222") == 1
|
||||
|
||||
|
||||
def test_start_skips_when_disabled(caplog):
|
||||
worker = PeerSyncWorker({"enabled": False})
|
||||
worker.start()
|
||||
|
||||
Reference in New Issue
Block a user