Changeset View
Changeset View
Standalone View
Standalone View
swh/indexer/tests/test_metadata.py
Show All 25 Lines | from swh.model.model import ( | ||||
MetadataAuthorityType, | MetadataAuthorityType, | ||||
MetadataFetcher, | MetadataFetcher, | ||||
RawExtrinsicMetadata, | RawExtrinsicMetadata, | ||||
) | ) | ||||
from swh.model.swhids import ExtendedObjectType, ExtendedSWHID | from swh.model.swhids import ExtendedObjectType, ExtendedSWHID | ||||
from .utils import ( | from .utils import ( | ||||
BASE_TEST_CONFIG, | BASE_TEST_CONFIG, | ||||
MAPPING_DESCRIPTION_CONTENT_SHA1, | |||||
MAPPING_DESCRIPTION_CONTENT_SHA1GIT, | |||||
YARN_PARSER_METADATA, | YARN_PARSER_METADATA, | ||||
fill_obj_storage, | fill_obj_storage, | ||||
fill_storage, | fill_storage, | ||||
) | ) | ||||
TRANSLATOR_TOOL = { | TRANSLATOR_TOOL = { | ||||
"name": "swh-metadata-translator", | "name": "swh-metadata-translator", | ||||
"version": "0.0.2", | "version": "0.0.2", | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | def test_directory_metadata_indexer(self): | ||||
fill_storage(metadata_indexer.storage) | fill_storage(metadata_indexer.storage) | ||||
tool = metadata_indexer.idx_storage.indexer_configuration_get( | tool = metadata_indexer.idx_storage.indexer_configuration_get( | ||||
{f"tool_{k}": v for (k, v) in TRANSLATOR_TOOL.items()} | {f"tool_{k}": v for (k, v) in TRANSLATOR_TOOL.items()} | ||||
) | ) | ||||
assert tool is not None | assert tool is not None | ||||
dir_ = DIRECTORY2 | dir_ = DIRECTORY2 | ||||
assert ( | |||||
dir_.entries[0].target | |||||
== MAPPING_DESCRIPTION_CONTENT_SHA1GIT["json:yarn-parser-package.json"] | |||||
ardumont: just to clarify the call below (target is sha1_git but the actual content id is the sha1, see… | |||||
) | |||||
metadata_indexer.idx_storage.content_metadata_add( | metadata_indexer.idx_storage.content_metadata_add( | ||||
[ | [ | ||||
ContentMetadataRow( | ContentMetadataRow( | ||||
id=DIRECTORY2.entries[0].target, | id=MAPPING_DESCRIPTION_CONTENT_SHA1[ | ||||
"json:yarn-parser-package.json" | |||||
], | |||||
indexer_configuration_id=tool["id"], | indexer_configuration_id=tool["id"], | ||||
metadata=YARN_PARSER_METADATA, | metadata=YARN_PARSER_METADATA, | ||||
) | ) | ||||
] | ] | ||||
) | ) | ||||
metadata_indexer.run([dir_.id]) | metadata_indexer.run([dir_.id]) | ||||
results = list( | results = list( | ||||
metadata_indexer.idx_storage.directory_intrinsic_metadata_get( | metadata_indexer.idx_storage.directory_intrinsic_metadata_get([dir_.id]) | ||||
[DIRECTORY2.id] | |||||
) | |||||
) | ) | ||||
expected_results = [ | expected_results = [ | ||||
DirectoryIntrinsicMetadataRow( | DirectoryIntrinsicMetadataRow( | ||||
id=dir_.id, | id=dir_.id, | ||||
tool=TRANSLATOR_TOOL, | tool=TRANSLATOR_TOOL, | ||||
metadata=YARN_PARSER_METADATA, | metadata=YARN_PARSER_METADATA, | ||||
mappings=["npm"], | mappings=["npm"], | ||||
) | ) | ||||
] | ] | ||||
for result in results: | for result in results: | ||||
del result.tool["id"] | del result.tool["id"] | ||||
assert results == expected_results | assert results == expected_results | ||||
def test_directory_metadata_indexer_single_root_dir(self): | def test_directory_metadata_indexer_single_root_dir(self): | ||||
metadata_indexer = DirectoryMetadataIndexer(config=DIRECTORY_METADATA_CONFIG) | metadata_indexer = DirectoryMetadataIndexer(config=DIRECTORY_METADATA_CONFIG) | ||||
fill_obj_storage(metadata_indexer.objstorage) | fill_obj_storage(metadata_indexer.objstorage) | ||||
fill_storage(metadata_indexer.storage) | fill_storage(metadata_indexer.storage) | ||||
# Add a parent directory, that is the only directory at the root | # Add a parent directory, that is the only directory at the root | ||||
# of the directory | # of the directory | ||||
dir_ = DIRECTORY2 | dir_ = DIRECTORY2 | ||||
assert ( | |||||
dir_.entries[0].target | |||||
== MAPPING_DESCRIPTION_CONTENT_SHA1GIT["json:yarn-parser-package.json"] | |||||
) | |||||
new_dir = Directory( | new_dir = Directory( | ||||
entries=( | entries=( | ||||
DirectoryEntry( | DirectoryEntry( | ||||
name=b"foobar-1.0.0", | name=b"foobar-1.0.0", | ||||
type="dir", | type="dir", | ||||
target=dir_.id, | target=dir_.id, | ||||
perms=16384, | perms=16384, | ||||
), | ), | ||||
), | ), | ||||
) | ) | ||||
assert new_dir.id is not None | assert new_dir.id is not None | ||||
metadata_indexer.storage.directory_add([new_dir]) | metadata_indexer.storage.directory_add([new_dir]) | ||||
tool = metadata_indexer.idx_storage.indexer_configuration_get( | tool = metadata_indexer.idx_storage.indexer_configuration_get( | ||||
{f"tool_{k}": v for (k, v) in TRANSLATOR_TOOL.items()} | {f"tool_{k}": v for (k, v) in TRANSLATOR_TOOL.items()} | ||||
) | ) | ||||
assert tool is not None | assert tool is not None | ||||
metadata_indexer.idx_storage.content_metadata_add( | metadata_indexer.idx_storage.content_metadata_add( | ||||
[ | [ | ||||
ContentMetadataRow( | ContentMetadataRow( | ||||
id=DIRECTORY2.entries[0].target, | id=MAPPING_DESCRIPTION_CONTENT_SHA1[ | ||||
"json:yarn-parser-package.json" | |||||
], | |||||
indexer_configuration_id=tool["id"], | indexer_configuration_id=tool["id"], | ||||
metadata=YARN_PARSER_METADATA, | metadata=YARN_PARSER_METADATA, | ||||
) | ) | ||||
] | ] | ||||
) | ) | ||||
metadata_indexer.run([new_dir.id]) | metadata_indexer.run([new_dir.id]) | ||||
▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines |
just to clarify the call below (target is sha1_git but the actual content id is the sha1, see below).