Skip to content

Commit 8bfb401

Browse files
committed
Refactor test_hash_validity()
1 parent 9e0941e commit 8bfb401

File tree

1 file changed

+45
-36
lines changed

1 file changed

+45
-36
lines changed

test/service/test_manifest.py

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,55 +1057,64 @@ def test_compact_metadata_cache(self, _time_until_object_expires: MagicMock):
10571057
self.assertEqual([2, 2], list(map(len, file_names.values())))
10581058
self.assertEqual([1, 1], list(map(len, map(set, file_names.values()))))
10591059

1060-
def test_hash_validity(self):
1060+
def test_hash_validity_with_notifications_enabled(self) -> None:
1061+
self._test_hash_validity()
1062+
1063+
def _test_hash_validity(self):
10611064
self.maxDiff = None
1062-
bundle_uuid = 'aaa96233-bf27-44c7-82df-b4dc15ad4d9d'
1063-
version1 = '2018-11-02T11:33:44.698028Z'
1064-
version2 = '2018-11-04T11:33:44.698028Z'
1065-
assert (version1 != version2)
1066-
original_fqid = self.bundle_fqid(uuid=bundle_uuid, version=version1)
1067-
self._index_canned_bundle(original_fqid)
1068-
filters = self._filters({'project': {'is': ['Single of human pancreas']}})
1069-
old_keys = {}
1065+
bundles_by_project = {
1066+
'67bc798b-a34a-4104-8cab-cad648471f69':
1067+
self.bundle_fqid(uuid='f79257a7-dfc6-46d6-ae00-ba4b25313c10',
1068+
version='2018-09-14T13:33:14.453337Z'),
1069+
'6615efae-fca8-4dd2-a223-9cfcf30fe94d':
1070+
self.bundle_fqid(uuid='587d74b4-1075-4bbf-b96a-4d1ede0481b2',
1071+
version='2018-09-14T13:33:14.453337Z'),
1072+
'091cf39b-01bc-42e5-9437-f419a66c8a45':
1073+
self.bundle_fqid(uuid='cfab8304-dc9f-439e-af29-f8eb75b0729d',
1074+
version='2019-07-18T21:28:20.595913Z'),
1075+
}
1076+
projects, bundles = zip(*bundles_by_project.items())
1077+
self._index_canned_bundle(bundles[0])
1078+
filters = self._filters(cast(FiltersJSON, {
1079+
'projectId': {
1080+
'is': [projects[0], projects[1]]
1081+
}
1082+
}))
10701083
service = ManifestService(self.storage_service, self.app_module.app.file_url)
10711084

10721085
def manifest_generator(format: ManifestFormat) -> ManifestGenerator:
10731086
generator_cls = ManifestGenerator.cls_for_format(format)
10741087
return generator_cls(service, self.catalog, filters)
10751088

1089+
keys = [{}, {}]
1090+
10761091
for format in ManifestFormat:
1077-
with self.subTest('indexing new bundle', format=format):
1078-
# When a new bundle is indexed and its compact manifest cached,
1079-
# a matching manifest key is generated ...
1092+
with self.subTest('First bundle indexed', format=format):
1093+
# A manifest for a filter matching files in the first bundle …
10801094
generator = manifest_generator(format)
1081-
old_bundle_key = generator.manifest_key()
1082-
# and should remain valid ...
1083-
self.assertEqual(old_bundle_key, generator.manifest_key())
1084-
old_keys[format] = old_bundle_key
1085-
1086-
# ... until a new bundle belonging to the same project is indexed, at
1087-
# which point a manifest request will generate a different key ...
1088-
update_fqid = self.bundle_fqid(uuid=bundle_uuid, version=version2)
1089-
self._index_canned_bundle(update_fqid)
1090-
new_keys = {}
1095+
manifest_key = generator.manifest_key()
1096+
# … should remain cached …
1097+
self.assertEqual(manifest_key, generator.manifest_key())
1098+
keys[0][format] = manifest_key
1099+
1100+
# … until a new bundle with files also matching the filter is indexed.
1101+
self._index_canned_bundle(bundles[1])
10911102
for format in ManifestFormat:
1092-
with self.subTest('indexing second bundle', format=format):
1103+
with self.subTest('Second bundle indexed', format=format):
10931104
generator = manifest_generator(format)
1094-
new_bundle_key = generator.manifest_key()
1095-
# ... invalidating the cached object previously used for the same filter.
1096-
self.assertNotEqual(old_keys[format], new_bundle_key)
1097-
new_keys[format] = new_bundle_key
1098-
1099-
# Updates or additions, unrelated to that project do not affect object
1100-
# key generation
1101-
other_fqid = self.bundle_fqid(uuid='f79257a7-dfc6-46d6-ae00-ba4b25313c10',
1102-
version='2018-09-14T13:33:14.453337Z')
1103-
self._index_canned_bundle(other_fqid)
1105+
manifest_key = generator.manifest_key()
1106+
# The updated manifest is cached under a different key.
1107+
self.assertNotEqual(keys[0][format], manifest_key)
1108+
keys[1][format] = manifest_key
1109+
1110+
# After indexing a bundle with files that don't match the filter, the
1111+
# cached manifest remains valid.
1112+
self._index_canned_bundle(bundles[2])
11041113
for format in ManifestFormat:
1105-
with self.subTest('indexing unrelated bundle', format=format):
1114+
with self.subTest('Unrelated bundle indexed', format=format):
11061115
generator = manifest_generator(format)
1107-
latest_bundle_key = generator.manifest_key()
1108-
self.assertEqual(latest_bundle_key, new_keys[format])
1116+
manifest_key = generator.manifest_key()
1117+
self.assertEqual(keys[1][format], manifest_key)
11091118

11101119
@patch.object(StorageService, '_time_until_object_expires')
11111120
def test_get_cached_manifest(self, _time_until_object_expires: MagicMock):

0 commit comments

Comments
 (0)