Пример #1
0
def test_build_status_ne_by_status(build_status_failed: BuildStatus) -> None:
    """
    must be not equal by status
    """
    other = BuildStatus.from_json(build_status_failed.view())
    other.status = BuildStatusEnum.Success
    assert build_status_failed != other
Пример #2
0
def test_build_status_ne_by_timestamp(
        build_status_failed: BuildStatus) -> None:
    """
    must be not equal by timestamp
    """
    other = BuildStatus.from_json(build_status_failed.view())
    other.timestamp = datetime.datetime.utcnow().timestamp()
    assert build_status_failed != other
Пример #3
0
async def test_get(client: TestClient) -> None:
    """
    must return valid service status
    """
    response = await client.get("/api/v1/ahriman")
    status = BuildStatus.from_json(await response.json())

    assert response.status == 200
    assert status.status == BuildStatusEnum.Unknown
Пример #4
0
async def test_post(client: TestClient) -> None:
    """
    must update service status correctly
    """
    payload = {"status": BuildStatusEnum.Success.value}
    post_response = await client.post("/api/v1/ahriman", json=payload)
    assert post_response.status == 204

    response = await client.get("/api/v1/ahriman")
    status = BuildStatus.from_json(await response.json())

    assert response.status == 200
    assert status.status == BuildStatusEnum.Success
Пример #5
0
    def get_self(self) -> BuildStatus:
        """
        get ahriman status itself
        :return: current ahriman status
        """
        try:
            response = requests.get(self._ahriman_url())
            response.raise_for_status()

            status_json = response.json()
            return BuildStatus.from_json(status_json)
        except requests.exceptions.HTTPError as e:
            self.logger.exception(
                f"could not get service status: {exception_response_text(e)}")
        except Exception:
            self.logger.exception("could not get service status")
        return BuildStatus()
Пример #6
0
    def get(self, base: Optional[str]) -> List[Tuple[Package, BuildStatus]]:
        """
        get package status
        :param base: package base to get
        :return: list of current package description and status if it has been found
        """
        try:
            response = requests.get(self._package_url(base or ""))
            response.raise_for_status()

            status_json = response.json()
            return [(Package.from_json(package["package"]),
                     BuildStatus.from_json(package["status"]))
                    for package in status_json]
        except requests.exceptions.HTTPError as e:
            self.logger.exception(
                f"could not get {base}: {exception_response_text(e)}")
        except Exception:
            self.logger.exception(f"could not get {base}")
        return []
Пример #7
0
def test_build_status_eq(build_status_failed: BuildStatus) -> None:
    """
    must be equal
    """
    other = BuildStatus.from_json(build_status_failed.view())
    assert other == build_status_failed
Пример #8
0
def test_build_status_from_json_view(build_status_failed: BuildStatus) -> None:
    """
    must construct same object from json
    """
    assert BuildStatus.from_json(
        build_status_failed.view()) == build_status_failed
Пример #9
0
 def parse_single(properties: Dict[str, Any]) -> None:
     package = Package.from_json(properties["package"])
     status = BuildStatus.from_json(properties["status"])
     if package.base in self.known:
         self.known[package.base] = (package, status)