def test_add_replica_str_as_lfn(self): rc = ReplicaCatalog() rc.add_replica("local", "f.a", "/f.a") assert _tojson(rc.entries[("f.a", False)]) == { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], }
def test_tojson(self, convert_yaml_schemas_to_json, load_schema): rc = ReplicaCatalog() rc.add_replica( "local", "f.a", "/f.a", checksum={"sha256": "123"}, metadata={ "size": 1024, "㐦": "㐦" }, ) rc.add_regex_replica("local", "*.txt", "/path", metadata={"creator": "ryan"}) result = _tojson(rc) expected = { "pegasus": "5.0", "replicas": [ { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], "checksum": { "sha256": "123" }, "metadata": { "size": 1024, "㐦": "㐦" }, }, { "lfn": "*.txt", "pfns": [{ "site": "local", "pfn": "/path" }], "metadata": { "creator": "ryan" }, "regex": True, }, ], } assert result == expected rc_schema = load_schema("rc-5.0.json") validate(instance=result, schema=rc_schema)
def test_add_regex_replica(self): rc = ReplicaCatalog() rc.add_regex_replica("local", "*.txt", "/path") assert _tojson(rc.entries[("*.txt", True)]) == { "lfn": "*.txt", "pfns": [{ "site": "local", "pfn": "/path" }], "regex": True, }
def test_add_multiple_replicas(self): rc = ReplicaCatalog() rc.add_replica("local", "f.a", "/f.a") rc.add_replica("local", "f.b", "/f.b") assert _tojson(rc.entries[("f.a", False)]) == { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], } assert _tojson(rc.entries[("f.b", False)]) == { "lfn": "f.b", "pfns": [{ "site": "local", "pfn": "/f.b" }], } assert len(rc.entries) == 2
def test_add_regex_replica_with_metadata(self): rc = ReplicaCatalog() rc.add_regex_replica("local", "*.txt", "/path", metadata={"creator": "ryan"}) assert _tojson(rc.entries[("*.txt", True)]) == { "lfn": "*.txt", "pfns": [{ "site": "local", "pfn": "/path" }], "metadata": { "creator": "ryan" }, "regex": True, }
class Test_ReplicaCatalogEntry: @pytest.mark.parametrize( "lfn, pfns, checksum, metadata, regex", [ ("f.a", {_PFN("local", "/f.a")}, None, None, False), ("f.a", {_PFN("local", "/f.a")}, { "sha245": "abc123" }, None, False), ( "f.a", {_PFN("local", "/f.a")}, { "sha245": "abc123" }, { "owner": "ryan" }, False, ), ("f.a", {_PFN("local", "/f.a")}, None, None, True), ("f.a", {_PFN("local", "/f.a")}, None, {"owner", "ryan"}, True), ], ) def test_valid_entry(self, lfn, pfns, checksum, metadata, regex): assert _ReplicaCatalogEntry(lfn, pfns, checksum=checksum, metadata=metadata, regex=regex) @pytest.mark.parametrize( "result, expected", [ ( _tojson(_ReplicaCatalogEntry("f.a", {_PFN("local", "/f.a")})), { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }] }, ), ( _tojson( _ReplicaCatalogEntry("f.a", {_PFN("local", "/f.a")}, checksum={"sha256": "abc123"})), { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], "checksum": { "sha256": "abc123" }, }, ), ( _tojson( _ReplicaCatalogEntry( "f.a", {_PFN("local", "/f.a")}, checksum={"sha256": "abc123"}, metadata={"owner": "ryan"}, )), { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], "checksum": { "sha256": "abc123" }, "metadata": { "owner": "ryan" }, }, ), ( _tojson( _ReplicaCatalogEntry("f.a", {_PFN("local", "/f.a")}, regex=True)), { "lfn": "f.a", "pfns": [{ "site": "local", "pfn": "/f.a" }], "regex": True, }, ), ], ) def test_tojson(self, result, expected): assert result == expected