Files
Artemis-Eapil/tests/unit/mcp/test_task_request_receipts.py
T
chenmingxuan e1ea099592 feat: add official Codex skill and harden task execution
Install and update artemis-use with task diagnostics and plugin guidance. Preserve cross-device file receipts, review canonical reports, guard stage transitions and reduce small history summaries. Improve exploration lifecycle, request recovery and browser live connections.
2026-10-18 14:18:37 +08:00

56 lines
2.3 KiB
Python

from concurrent.futures import ThreadPoolExecutor
from unittest.mock import Mock
import pytest
from apps.admin_console.services.automation_store import AutomationStore
from mcp_server import task_requests
from mcp_server.tools import task_runner
@pytest.fixture
def receipts(tmp_path, monkeypatch):
store = AutomationStore(tmp_path / "automation.db")
monkeypatch.setattr(task_requests, "store", store)
return store
def test_concurrent_retries_dispatch_once(receipts):
execute = Mock(side_effect=lambda sid: {"trace_id": sid, "status": "queued"})
with ThreadPoolExecutor(max_workers=4) as pool:
results = list(
pool.map(
lambda _: task_requests.run_once("one", {"goal": "observe"}, execute), range(8)
)
)
assert execute.call_count == 1
assert len({result["trace_id"] for result in results}) == 1
assert task_requests.lookup("one")["status"] == "queued"
receipts.save_job({"session_id": results[0]["trace_id"], "status": "completed", "position": 1})
assert task_requests.lookup("one")["status"] == "completed"
assert task_requests.lookup("one")["status_scope"] == "task_queue"
def test_conflicting_content_and_lost_reply_never_repeat(receipts):
execute = Mock(side_effect=ConnectionError("after admission"))
with pytest.raises(ConnectionError):
task_requests.run_once("one", {"goal": "observe"}, execute)
receipt = task_requests.run_once("one", {"goal": "observe"}, execute)
assert receipt["submission_state"] == "unknown"
assert receipt["trace_id"]
assert execute.call_count == 1
with pytest.raises(ValueError, match="不同任务内容"):
task_requests.run_once("one", {"goal": "write"}, execute)
assert task_requests.lookup("missing")["status"] == "not_found"
def test_public_task_entry_uses_receipts_before_dispatch(receipts, monkeypatch):
execute = Mock(
side_effect=lambda **kwargs: {"trace_id": kwargs["trace_id"], "status": "queued"}
)
monkeypatch.setattr(task_runner, "_run_task", execute)
first = task_runner.mobile_run_task("observe", request_id="public-one")
second = task_runner.mobile_run_task("observe", request_id="public-one")
assert first["trace_id"] == second["trace_id"]
execute.assert_called_once()