mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-20 21:42:05 +08:00
test_updated: more consistent test (#31786)
* consistent * bump timeout * bump again
This commit is contained in:
@@ -85,9 +85,12 @@ class TestUpdateD(unittest.TestCase):
|
||||
|
||||
def tearDown(self):
|
||||
mock.patch.stopall()
|
||||
run(["sudo", "umount", "-l", str(self.staging_root / "merged")])
|
||||
run(["sudo", "umount", "-l", self.tmpdir])
|
||||
shutil.rmtree(self.tmpdir)
|
||||
try:
|
||||
run(["sudo", "umount", "-l", str(self.staging_root / "merged")])
|
||||
run(["sudo", "umount", "-l", self.tmpdir])
|
||||
shutil.rmtree(self.tmpdir)
|
||||
except Exception:
|
||||
print("cleanup failed...")
|
||||
|
||||
def send_check_for_updates_signal(self, updated: ManagerProcess):
|
||||
updated.signal(signal.SIGUSR1.value)
|
||||
@@ -104,21 +107,28 @@ class TestUpdateD(unittest.TestCase):
|
||||
self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}"))
|
||||
self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"<p>{release_notes}</p>\n")
|
||||
|
||||
def wait_for_idle(self, timeout=5, min_wait_time=2):
|
||||
def wait_for_condition(self, condition, timeout=12):
|
||||
start = time.monotonic()
|
||||
time.sleep(min_wait_time)
|
||||
|
||||
while True:
|
||||
waited = time.monotonic() - start
|
||||
if self.params.get("UpdaterState", encoding="utf-8") == "idle":
|
||||
print(f"waited {waited}s for idle")
|
||||
break
|
||||
if condition():
|
||||
print(f"waited {waited}s for condition ")
|
||||
return waited
|
||||
|
||||
if waited > timeout:
|
||||
raise TimeoutError("timed out waiting for idle")
|
||||
raise TimeoutError("timed out waiting for condition")
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
def wait_for_idle(self):
|
||||
self.wait_for_condition(lambda: self.params.get("UpdaterState", encoding="utf-8") == "idle")
|
||||
|
||||
def wait_for_fetch_available(self):
|
||||
self.wait_for_condition(lambda: self.params.get_bool("UpdaterFetchAvailable"))
|
||||
|
||||
def wait_for_update_available(self):
|
||||
self.wait_for_condition(lambda: self.params.get_bool("UpdateAvailable"))
|
||||
|
||||
def test_no_update(self):
|
||||
# Start on release3, ensure we don't fetch any updates
|
||||
self.setup_remote_release("release3")
|
||||
@@ -126,7 +136,7 @@ class TestUpdateD(unittest.TestCase):
|
||||
|
||||
with processes_context(["updated"]) as [updated]:
|
||||
self._test_params("release3", False, False)
|
||||
time.sleep(1)
|
||||
self.wait_for_idle()
|
||||
self._test_params("release3", False, False)
|
||||
|
||||
self.send_check_for_updates_signal(updated)
|
||||
@@ -142,7 +152,7 @@ class TestUpdateD(unittest.TestCase):
|
||||
|
||||
with processes_context(["updated"]) as [updated]:
|
||||
self._test_params("release3", False, False)
|
||||
time.sleep(1)
|
||||
self.wait_for_idle()
|
||||
self._test_params("release3", False, False)
|
||||
|
||||
self.MOCK_RELEASES["release3"] = ("0.1.3", "1.2", "0.1.3 release notes")
|
||||
@@ -150,13 +160,13 @@ class TestUpdateD(unittest.TestCase):
|
||||
|
||||
self.send_check_for_updates_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_fetch_available()
|
||||
|
||||
self._test_params("release3", True, False)
|
||||
|
||||
self.send_download_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_update_available()
|
||||
|
||||
self._test_params("release3", False, True)
|
||||
self._test_update_params("release3", *self.MOCK_RELEASES["release3"])
|
||||
@@ -175,13 +185,13 @@ class TestUpdateD(unittest.TestCase):
|
||||
self.set_target_branch("master")
|
||||
self.send_check_for_updates_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_fetch_available()
|
||||
|
||||
self._test_params("master", True, False)
|
||||
|
||||
self.send_download_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_update_available()
|
||||
|
||||
self._test_params("master", False, True)
|
||||
self._test_update_params("master", *self.MOCK_RELEASES["master"])
|
||||
@@ -198,7 +208,7 @@ class TestUpdateD(unittest.TestCase):
|
||||
processes_context(["updated"]) as [updated]:
|
||||
|
||||
self._test_params("release3", False, False)
|
||||
time.sleep(1)
|
||||
self.wait_for_idle()
|
||||
self._test_params("release3", False, False)
|
||||
|
||||
self.MOCK_RELEASES["release3"] = ("0.1.3", "1.3", "0.1.3 release notes")
|
||||
@@ -206,13 +216,13 @@ class TestUpdateD(unittest.TestCase):
|
||||
|
||||
self.send_check_for_updates_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_fetch_available()
|
||||
|
||||
self._test_params("release3", True, False)
|
||||
|
||||
self.send_download_signal(updated)
|
||||
|
||||
self.wait_for_idle()
|
||||
self.wait_for_update_available()
|
||||
|
||||
self._test_params("release3", False, True)
|
||||
self._test_update_params("release3", *self.MOCK_RELEASES["release3"])
|
||||
|
||||
Reference in New Issue
Block a user