Skip to content

Commit 550878a

Browse files
committed
Tests: add dump option in two test files
Add dump option that could be used to the debug the state of the repository simulator. Signed-off-by: Martin Vrachev <[email protected]>
1 parent 37f7f39 commit 550878a

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

tests/test_updater_consistent_snapshot.py

+18
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class TestConsistentSnapshot(unittest.TestCase):
2727
'prefix_targets_with_hash' and verify that the correct URLs
2828
are formed for each combination"""
2929

30+
# set dump_dir to trigger repository state dumps
31+
dump_dir: Optional[str] = None
32+
3033
def setUp(self) -> None:
3134
self.temp_dir = tempfile.TemporaryDirectory()
3235
self.metadata_dir = os.path.join(self.temp_dir.name, "metadata")
@@ -54,10 +57,19 @@ def _init_repo(
5457
)
5558
f.write(root)
5659

60+
if self.dump_dir is not None:
61+
# create test specific dump directory
62+
name = self.id().split(".")[-1]
63+
sim.dump_dir = os.path.join(self.dump_dir, name)
64+
os.mkdir(sim.dump_dir)
65+
5766
return sim
5867

5968
def _init_updater(self, sim: RepositorySimulator) -> Updater:
6069
"""Create a new Updater instance"""
70+
if sim.dump_dir is not None:
71+
sim.write()
72+
6173
return Updater(
6274
self.metadata_dir,
6375
"https://example.com/metadata/",
@@ -232,6 +244,12 @@ def test_download_targets(self, test_case_data: Dict[str, Any]):
232244

233245

234246
if __name__ == "__main__":
247+
if "--dump" in sys.argv:
248+
TestConsistentSnapshot.dump_dir = tempfile.mkdtemp()
249+
print(
250+
f"Repository Simulator dumps in {TestConsistentSnapshot.dump_dir}"
251+
)
252+
sys.argv.remove("--dump")
235253

236254
utils.configure_test_logging(sys.argv)
237255
unittest.main()

tests/test_updater_top_level_update.py

+15
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class TestRefresh(unittest.TestCase):
3030
"""Test update of top-level metadata following
3131
'Detailed client workflow' in the specification."""
3232

33+
# set dump_dir to trigger repository state dumps
34+
dump_dir: Optional[str] = None
3335
past_datetime = datetime.utcnow().replace(microsecond=0) - timedelta(days=5)
3436

3537
def setUp(self) -> None:
@@ -47,11 +49,20 @@ def setUp(self) -> None:
4749
)
4850
f.write(root)
4951

52+
if self.dump_dir is not None:
53+
# create test specific dump directory
54+
name = self.id().split(".")[-1]
55+
self.sim.dump_dir = os.path.join(self.dump_dir, name)
56+
os.mkdir(self.sim.dump_dir)
57+
5058
def tearDown(self) -> None:
5159
self.temp_dir.cleanup()
5260

5361
def _run_refresh(self) -> Updater:
5462
"""Create a new Updater instance and refresh"""
63+
if self.sim.dump_dir is not None:
64+
self.sim.write()
65+
5566
updater = Updater(
5667
self.metadata_dir,
5768
"https://example.com/metadata/",
@@ -436,6 +447,10 @@ def test_new_targets_expired(self) -> None:
436447

437448

438449
if __name__ == "__main__":
450+
if "--dump" in sys.argv:
451+
TestRefresh.dump_dir = tempfile.mkdtemp()
452+
print(f"Repository Simulator dumps in {TestRefresh.dump_dir}")
453+
sys.argv.remove("--dump")
439454

440455
utils.configure_test_logging(sys.argv)
441456
unittest.main()

0 commit comments

Comments
 (0)