Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/tests/base_test_loader.py
- This file was added.
import os | |||||
class BaseTestLoader: | |||||
_expected_new_contents_first_visit = [] | |||||
_expected_new_contents_second_visit = [] | |||||
_expected_new_directories_first_visit = [] | |||||
_expected_new_directories_second_visit = [] | |||||
_expected_new_revisions_first_visit = {} | |||||
_expected_new_revisions_second_visit = {} | |||||
_expected_new_snapshot_first_visit = '' | |||||
_expected_branches_first_visit = {} | |||||
_expected_new_snapshot_second_visit = '' | |||||
_expected_branches_second_visit = {} | |||||
def first_visit_test(self): | |||||
"""In this scenario no visit as taken place prior to this visit. | |||||
""" | |||||
self.assertCountContents(len(self._expected_new_contents_first_visit)) | |||||
self.assertCountDirectories(len(self._expected_new_directories_first_visit)) # noqa | |||||
self.assertCountReleases(0, 'No release is created by the loader') | |||||
self.assertCountSnapshots(1, 'Only 1 snapshot targeting all revisions') | |||||
self.assertContentsContain(self._expected_new_contents_first_visit) | |||||
self.assertDirectoriesContain(self._expected_new_directories_first_visit) # noqa | |||||
self.assertRevisionsContain(self._expected_new_revisions_first_visit) | |||||
self.assertSnapshotEqual(self._expected_new_snapshot_first_visit, | |||||
self._expected_branches_first_visit) | |||||
self.assertEqual(self.loader.counters['contents'], | |||||
len(self._expected_new_contents_first_visit)) | |||||
self.assertEqual(self.loader.counters['directories'], | |||||
len(self._expected_new_directories_first_visit)) | |||||
self.assertEqual(self.loader.counters['revisions'], | |||||
len(self._expected_new_revisions_first_visit)) | |||||
self.assertEqual(self.loader.counters['releases'], 0) | |||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | |||||
self.assertEqual(self.loader.visit_status(), 'full') | |||||
self.assertFalse(os.path.exists(self.loader.temp_directory)) | |||||
def first_visit_again_test(self): | |||||
"""This scenario makes use of the incremental nature of the loader. | |||||
In this test there is no change from the first visit. If nothing | |||||
changes in between visits, the snapshot for the visit must stay | |||||
the same as the first visit. | |||||
""" | |||||
# previously loaded objects should still be here | |||||
self.assertCountContents(len(self._expected_new_contents_first_visit)) | |||||
self.assertCountDirectories(len(self._expected_new_directories_first_visit)) # noqa | |||||
self.assertCountRevisions(len(self._expected_new_revisions_first_visit)) # noqa | |||||
self.assertCountReleases(0) | |||||
self.assertCountSnapshots(1) | |||||
self.assertSnapshotEqual(self._expected_new_snapshot_first_visit, | |||||
self._expected_branches_first_visit) | |||||
# no objects should have been loaded in that visit | |||||
counters_reset = dict.fromkeys(self.loader.counters.keys(), 0) | |||||
self.assertEqual(self.loader.counters, counters_reset) | |||||
self.assertEqual(self.loader.load_status(), {'status': 'uneventful'}) | |||||
self.assertEqual(self.loader.visit_status(), 'full') | |||||
self.assertFalse(os.path.exists(self.loader.temp_directory)) | |||||
def second_visit_test(self): | |||||
"""In this scenario, a visit has already taken place. | |||||
An existing snapshot exists. | |||||
This time, a new release has been uploaded. The old releases did not | |||||
change. | |||||
The visit results in a new snapshot. | |||||
The new snapshot shares the same history as prior visit's | |||||
snapshot. It holds a new branch targeting the new revision. | |||||
""" | |||||
expected_nb_contents = sum([len(self._expected_new_contents_first_visit), # noqa | |||||
len(self._expected_new_contents_second_visit)]) # noqa | |||||
expected_nb_directories = sum([len(self._expected_new_directories_first_visit), # noqa | |||||
len(self._expected_new_directories_second_visit)]) # noqa | |||||
expected_nb_revisions = sum([len(self._expected_new_revisions_first_visit), # noqa | |||||
len(self._expected_new_revisions_second_visit)]) # noqa | |||||
self.assertCountContents(expected_nb_contents) | |||||
self.assertCountDirectories(expected_nb_directories) | |||||
self.assertCountRevisions(expected_nb_revisions) | |||||
self.assertCountReleases(0) | |||||
self.assertCountSnapshots(2) | |||||
self.assertContentsContain(self._expected_new_contents_first_visit) | |||||
self.assertContentsContain(self._expected_new_contents_second_visit) | |||||
self.assertDirectoriesContain(self._expected_new_directories_first_visit) # noqa | |||||
self.assertDirectoriesContain(self._expected_new_directories_second_visit) # noqa | |||||
self.assertRevisionsContain(self._expected_new_revisions_first_visit) | |||||
self.assertRevisionsContain(self._expected_new_revisions_second_visit) | |||||
self.assertSnapshotEqual(self._expected_new_snapshot_first_visit, | |||||
self._expected_branches_first_visit) | |||||
self.assertSnapshotEqual(self._expected_new_snapshot_second_visit, | |||||
self._expected_branches_second_visit) | |||||
self.assertEqual(self.loader.counters['contents'], | |||||
len(self._expected_new_contents_second_visit)) | |||||
self.assertEqual(self.loader.counters['directories'], | |||||
len(self._expected_new_directories_second_visit)) | |||||
self.assertEqual(self.loader.counters['revisions'], | |||||
len(self._expected_new_revisions_second_visit)) | |||||
self.assertEqual(self.loader.counters['releases'], 0) | |||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | |||||
self.assertEqual(self.loader.visit_status(), 'full') | |||||
self.assertFalse(os.path.exists(self.loader.temp_directory)) |