Build complete runtime segments

This commit is contained in:
qananasikq
2026-08-19 17:11:00 +03:00
parent 8297742a64
commit 7068b7e8fa
5 changed files with 1054 additions and 232 deletions
+40
View File
@@ -60,6 +60,46 @@ class TestSelfHeal(unittest.TestCase):
self.assertTrue(has_inflight)
self.assertEqual(flags["has_segment_lock"], 1)
@patch("mobilede_scraper.worker.self_heal.time.time", return_value=2_000)
def test_has_inflight_work_ignores_and_deletes_stale_progress(self, _time_mock) -> None:
redis_client = MagicMock()
redis_client.llen.return_value = 0
redis_client.scan_iter.side_effect = [
iter([]),
iter(["mobilede:state:task_progress:stale"]),
]
redis_client.get.return_value = '{"stage":"runtime_segments_planned","ts":1000}'
has_inflight, flags = self_heal._has_inflight_work(
redis_client,
"mobilede_sync",
progress_max_age_seconds=900,
)
self.assertFalse(has_inflight)
self.assertEqual(flags["has_task_progress"], 0)
redis_client.delete.assert_called_once_with("mobilede:state:task_progress:stale")
@patch("mobilede_scraper.worker.self_heal.time.time", return_value=2_000)
def test_has_inflight_work_accepts_fresh_progress(self, _time_mock) -> None:
redis_client = MagicMock()
redis_client.llen.return_value = 0
redis_client.scan_iter.side_effect = [
iter([]),
iter(["mobilede:state:task_progress:fresh"]),
]
redis_client.get.return_value = '{"stage":"search_page","ts":1500}'
has_inflight, flags = self_heal._has_inflight_work(
redis_client,
"mobilede_sync",
progress_max_age_seconds=900,
)
self.assertTrue(has_inflight)
self.assertEqual(flags["has_task_progress"], 1)
redis_client.delete.assert_not_called()
@patch("mobilede_scraper.worker.self_heal.time.sleep", return_value=None)
@patch("mobilede_scraper.worker.self_heal.os.kill")
@patch("builtins.open")