提交这次修改内容
This commit is contained in:
parent
14c50ac913
commit
c6b2ad074c
@ -446,7 +446,7 @@ class MockDeviceClient(DeviceClient):
|
|||||||
return dict(self._system_config)
|
return dict(self._system_config)
|
||||||
|
|
||||||
def read_time_sync_config(self) -> Dict[str, str]:
|
def read_time_sync_config(self) -> Dict[str, str]:
|
||||||
return {"time_sync": str(self._system_config.get("time_sync", ""))}
|
return {"time_sync": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
|
||||||
|
|
||||||
def read_net_config(self, nic: str) -> Dict[str, Any]:
|
def read_net_config(self, nic: str) -> Dict[str, Any]:
|
||||||
for item in self._net_config:
|
for item in self._net_config:
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
from datetime import datetime
|
import asyncio
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
@ -11,11 +12,17 @@ from app.repositories.alarm_repo import AlarmRepository
|
|||||||
from app.repositories.json_config_repo import JsonConfigRepository
|
from app.repositories.json_config_repo import JsonConfigRepository
|
||||||
from app.schemas.platform import AlarmEvent, LineData, RealtimeData, ValueGroup
|
from app.schemas.platform import AlarmEvent, LineData, RealtimeData, ValueGroup
|
||||||
from app.services.platform_service import platform_service
|
from app.services.platform_service import platform_service
|
||||||
|
from app.ws.manager import ws_manager
|
||||||
|
|
||||||
|
|
||||||
client = TestClient(app)
|
client = TestClient(app)
|
||||||
|
|
||||||
|
|
||||||
|
def _assert_time_sync_in_window(value: str, before: datetime, after: datetime) -> None:
|
||||||
|
parsed = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
|
assert before - timedelta(seconds=1) <= parsed <= after + timedelta(seconds=1)
|
||||||
|
|
||||||
|
|
||||||
def test_healthcheck() -> None:
|
def test_healthcheck() -> None:
|
||||||
response = client.get("/")
|
response = client.get("/")
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
@ -169,7 +176,9 @@ def test_config_query_endpoints(tmp_path) -> None:
|
|||||||
line_alarm_response = client.get("/api/config/line_alarm_setting", headers=headers, params={"line_no": 1})
|
line_alarm_response = client.get("/api/config/line_alarm_setting", headers=headers, params={"line_no": 1})
|
||||||
ai_alarm_response = client.get("/api/config/ai_alarm_setting", headers=headers)
|
ai_alarm_response = client.get("/api/config/ai_alarm_setting", headers=headers)
|
||||||
system_response = client.get("/api/config/system", headers=headers)
|
system_response = client.get("/api/config/system", headers=headers)
|
||||||
|
before_time_sync = datetime.now()
|
||||||
time_sync_response = client.get("/api/config/time-sync", headers=headers)
|
time_sync_response = client.get("/api/config/time-sync", headers=headers)
|
||||||
|
after_time_sync = datetime.now()
|
||||||
|
|
||||||
assert device_response.status_code == 200
|
assert device_response.status_code == 200
|
||||||
assert net_response.status_code == 200
|
assert net_response.status_code == 200
|
||||||
@ -190,7 +199,7 @@ def test_config_query_endpoints(tmp_path) -> None:
|
|||||||
assert line_alarm_response.json()["data"]["transformer_change"][0]["category"] == "PT变化"
|
assert line_alarm_response.json()["data"]["transformer_change"][0]["category"] == "PT变化"
|
||||||
assert ai_alarm_response.json()["data"][0]["channel_no"] == 1
|
assert ai_alarm_response.json()["data"][0]["channel_no"] == 1
|
||||||
assert system_response.json()["data"]["time_sync"] == "2026-05-25 12:34:56"
|
assert system_response.json()["data"]["time_sync"] == "2026-05-25 12:34:56"
|
||||||
assert time_sync_response.json()["data"]["time_sync"] == "2026-05-25 12:34:56"
|
_assert_time_sync_in_window(time_sync_response.json()["data"]["time_sync"], before_time_sync, after_time_sync)
|
||||||
finally:
|
finally:
|
||||||
platform_service.device_client = old_client
|
platform_service.device_client = old_client
|
||||||
platform_service.config_repo = old_repo
|
platform_service.config_repo = old_repo
|
||||||
@ -257,7 +266,9 @@ def test_protocol_config_endpoints_read_and_write_device_only(tmp_path) -> None:
|
|||||||
headers=headers,
|
headers=headers,
|
||||||
json={"time_sync": "2026-05-25 14:00:00"},
|
json={"time_sync": "2026-05-25 14:00:00"},
|
||||||
)
|
)
|
||||||
|
before_query_time_sync = datetime.now()
|
||||||
query_time_sync = client.get("/api/config/time-sync", headers=headers)
|
query_time_sync = client.get("/api/config/time-sync", headers=headers)
|
||||||
|
after_query_time_sync = datetime.now()
|
||||||
|
|
||||||
assert channel_response.status_code == 200
|
assert channel_response.status_code == 200
|
||||||
assert line_response.status_code == 200
|
assert line_response.status_code == 200
|
||||||
@ -271,7 +282,8 @@ def test_protocol_config_endpoints_read_and_write_device_only(tmp_path) -> None:
|
|||||||
assert query_system.json()["data"]["brightness"] == 88
|
assert query_system.json()["data"]["brightness"] == 88
|
||||||
assert query_net.json()["data"]["ip"] == "172.16.2.10"
|
assert query_net.json()["data"]["ip"] == "172.16.2.10"
|
||||||
assert query_net.json()["data"]["gateway"] == "172.16.2.1"
|
assert query_net.json()["data"]["gateway"] == "172.16.2.1"
|
||||||
assert query_time_sync.json()["data"]["time_sync"] == "2026-05-25 14:00:00"
|
assert time_sync_response.json()["data"]["time_sync"] == "2026-05-25 14:00:00"
|
||||||
|
_assert_time_sync_in_window(query_time_sync.json()["data"]["time_sync"], before_query_time_sync, after_query_time_sync)
|
||||||
assert platform_service.config_repo.read_setting_config() == {}
|
assert platform_service.config_repo.read_setting_config() == {}
|
||||||
assert platform_service.config_repo.read_device_config() == {}
|
assert platform_service.config_repo.read_device_config() == {}
|
||||||
finally:
|
finally:
|
||||||
@ -279,6 +291,31 @@ def test_protocol_config_endpoints_read_and_write_device_only(tmp_path) -> None:
|
|||||||
platform_service.config_repo = old_repo
|
platform_service.config_repo = old_repo
|
||||||
|
|
||||||
|
|
||||||
|
def test_mock_time_sync_ws_payload_uses_system_time() -> None:
|
||||||
|
old_client = platform_service.device_client
|
||||||
|
platform_service.device_client = MockDeviceClient()
|
||||||
|
captured: dict = {}
|
||||||
|
|
||||||
|
async def fake_broadcast(channel: str, payload: dict) -> None:
|
||||||
|
captured["channel"] = channel
|
||||||
|
captured["payload"] = payload
|
||||||
|
|
||||||
|
original_broadcast = ws_manager.broadcast
|
||||||
|
ws_manager.broadcast = fake_broadcast
|
||||||
|
|
||||||
|
try:
|
||||||
|
before = datetime.now()
|
||||||
|
asyncio.run(platform_service.poll_time_sync_once())
|
||||||
|
after = datetime.now()
|
||||||
|
finally:
|
||||||
|
ws_manager.broadcast = original_broadcast
|
||||||
|
platform_service.device_client = old_client
|
||||||
|
|
||||||
|
assert captured["channel"] == "time-sync"
|
||||||
|
assert captured["payload"]["type"] == "time_sync"
|
||||||
|
_assert_time_sync_in_window(captured["payload"]["data"]["time_sync"], before, after)
|
||||||
|
|
||||||
|
|
||||||
def test_save_device_net_and_uart_by_key(tmp_path) -> None:
|
def test_save_device_net_and_uart_by_key(tmp_path) -> None:
|
||||||
old_repo = platform_service.config_repo
|
old_repo = platform_service.config_repo
|
||||||
old_client = platform_service.device_client
|
old_client = platform_service.device_client
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user