Exemplo n.º 1
0
 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"
         }],
     }
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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,
        }
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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,
        }
Exemplo n.º 6
0
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