fix(UME): 兼容首批无marker场景并补充回归测试

告警分页在响应头缺失 marker 时直接结束迭代,避免首批已全量却重复翻页;同时补充对应单测并保持 HTTPTransport 传输方式与现网一致。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-05-08 20:13:10 +08:00
parent 2c0b52d972
commit 00afaaae3d
3 changed files with 35 additions and 4 deletions

View file

@ -281,6 +281,32 @@ class UmeSyncServiceTests(unittest.TestCase):
self.assertEqual(job.pulled_count, 1)
self.assertIsNotNone(self.db.get(UmeAlarmCurrent, "AK-1"))
def test_sync_current_alarms_stop_when_marker_missing(self):
class _C:
def __init__(self):
self.calls = 0
def get_alarms(self, *, is_uncleared: bool, limit=None, marker=None):
self.calls += 1
class _D:
marker = ""
is_end_of_reply = None
return (
[
{"alarmKey": "AK-1", "ne-id": "NE-1", "perceivedSeverity": "major", "isCleared": "false"},
],
_D(),
)
c = _C()
job, _ = sync_alarms_current(self.db, c, trigger_mode="manual")
self.assertEqual(job.status, "done")
self.assertEqual(job.pulled_count, 1)
self.assertEqual(c.calls, 1)
self.assertIsNotNone(self.db.get(UmeAlarmCurrent, "AK-1"))
def test_derive_ne_id_from_alarmkey_formats(self):
alarm_hash = {"alarmkey": "00ceb960-1b62-478e-8303-0935ffea1d28#99010"}
alarm_csv = {"alarmkey": "00ceb960-1b62-478e-8303-0935ffea1d28, 4237, 79"}