50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
"""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)
|