Build complete runtime segments
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user