Files
xiaodoudou-ComfyUI-RigShare/tests/python/test_stats.py
T
Xiaodoudou 1befdca2e7 RigShare 1.3.1: refuse folder paths outside the workspace (Windows)
* RigShare 1.3.1: refuse folder paths outside the workspace (Windows)

* Tests: escape test no longer assumes Windows path semantics
2026-10-08 16:35:36 +08:00

46 lines
1.5 KiB
Python

"""Server stats: every metric is optional and never raises."""
from rigshare_core import stats
class Queue:
def __init__(self, running, pending):
self.running, self.pending = running, pending
def get_current_queue_volatile(self):
return self.running, self.pending
class Server:
def __init__(self, queue):
self.prompt_queue = queue
def test_queue_items_order_and_node_count():
server = Server(Queue([(1, "r1", {"1": {}, "2": {}})], [(5, "p5", {"1": {}}), (3, "p3", {})]))
items = stats.queue_items(server)
assert [(i["id"], i["status"], i["nodes"]) for i in items] == [("r1", "running", 2), ("p3", "pending", 0), ("p5", "pending", 1)]
def test_queue_items_survive_odd_entries_and_missing_queue():
assert stats.queue_items(Server(Queue([(1,)], [(9,)]))) == []
assert stats.queue_items(object()) is None
def test_queue_counts_with_fallback():
assert stats._queue(Server(Queue([1], [2, 3]))) == {"running": 1, "pending": 2}
class Old:
def get_tasks_remaining(self):
return 4
assert stats._queue(Server(Old())) == {"running": 0, "pending": 4}
assert stats._queue(object()) is None
def test_collect_stats_without_psutil_or_gpu(monkeypatch):
monkeypatch.setattr(stats, "psutil", None)
monkeypatch.setattr(stats, "pynvml", None)
out = stats.collect_stats(Server(Queue([], [])))
assert out["gpus"] == [] and "cpu" not in out and out["queue"] == {"running": 0, "pending": 0}
assert stats.collect_stats() == {"gpus": []}