feat: Roadmap N — AMQP cluster nervous system complete
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""Tests for cluster.py heartbeat handler."""
|
||||
import asyncio
|
||||
|
||||
import cluster
|
||||
from config import AMQP_EXCHANGE_SYSTEM
|
||||
|
||||
|
||||
def _reset():
|
||||
cluster.CLUSTER_NODES.clear()
|
||||
cluster.CLUSTER_EVENTS.clear()
|
||||
cluster.CLUSTER_COORDINATOR = None
|
||||
cluster._pending_pings.clear()
|
||||
|
||||
|
||||
# ---------- 1. handle_heartbeat() for known node updates last_seen ----------
|
||||
|
||||
|
||||
def test_heartbeat_updates_last_seen(monkeypatch):
|
||||
_reset()
|
||||
|
||||
cluster.CLUSTER_NODES["jarvis"] = {
|
||||
"name": "jarvis", "type": "worker", "status": "active",
|
||||
"last_seen": "2020-01-01T00:00:00Z",
|
||||
}
|
||||
original = cluster.CLUSTER_NODES["jarvis"]["last_seen"]
|
||||
|
||||
asyncio.run(cluster.handle_heartbeat(
|
||||
AMQP_EXCHANGE_SYSTEM, "node.jarvis.heartbeat",
|
||||
{"node_name": "jarvis"},
|
||||
))
|
||||
|
||||
assert cluster.CLUSTER_NODES["jarvis"]["last_seen"] != original
|
||||
assert cluster.CLUSTER_NODES["jarvis"]["status"] == "active" # unchanged
|
||||
|
||||
|
||||
# ---------- 2. handle_heartbeat() for unknown node logs warning, no add ----------
|
||||
|
||||
|
||||
def test_heartbeat_unknown_node_logs_warning(caplog, monkeypatch):
|
||||
_reset()
|
||||
caplog.set_level("WARNING")
|
||||
|
||||
asyncio.run(cluster.handle_heartbeat(
|
||||
AMQP_EXCHANGE_SYSTEM, "node.stranger.heartbeat",
|
||||
{"node_name": "stranger"},
|
||||
))
|
||||
|
||||
assert "stranger" not in cluster.CLUSTER_NODES
|
||||
assert any("unknown node" in rec.message and "stranger" in rec.message for rec in caplog.records)
|
||||
Reference in New Issue
Block a user