Skip to content

Commit 4d6ac70

Browse files
committed
improvement of logs
1 parent b55109e commit 4d6ac70

File tree

1 file changed

+49
-31
lines changed

1 file changed

+49
-31
lines changed

packages/pytest-simcore/src/pytest_simcore/helpers/playwright.py

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from datetime import UTC, datetime, timedelta
1515
from enum import Enum, unique
1616
from pathlib import Path
17-
from typing import Any, Final
17+
from typing import Any, Final, Self
1818

1919
import pytest
2020
from playwright._impl._sync_base import EventContextManager
@@ -218,7 +218,7 @@ def expect_event(
218218
return output
219219

220220
@classmethod
221-
def create(cls, page: Page, ws: WebSocket):
221+
def create(cls, page: Page, ws: WebSocket) -> Self:
222222
return cls(page, ws)
223223

224224

@@ -312,6 +312,7 @@ def __call__(self, message: str) -> None:
312312

313313

314314
_FAIL_FAST_DYNAMIC_SERVICE_STATES: Final[tuple[str, ...]] = ("idle", "failed")
315+
_SERVICE_ROOT_POINT_STATUS_TIMEOUT: Final[int] = 5 * SECOND
315316

316317

317318
@dataclass
@@ -370,7 +371,7 @@ def __call__(self, message: str) -> bool:
370371
)
371372

372373
self.logger.info(
373-
"Current startup progress [expected number of node-progress-types=%d]: %s",
374+
"Current startup progress [expected %d node-progress-types progresses]: %s",
374375
len(NodeProgressType.required_types_for_started_service()),
375376
f"{json.dumps({k: round(v, 2) for k, v in self._current_progress.items()})}",
376377
)
@@ -389,36 +390,53 @@ def __call__(self, message: str) -> bool:
389390
url = (
390391
f"https://{self.node_id}.services.{self.get_partial_product_url()}"
391392
)
392-
response = None
393-
with contextlib.suppress(
394-
PlaywrightTimeoutError, TimeoutError, PlaywrightError
393+
with log_context(
394+
logging.INFO,
395+
"Poll service endpoint in case of missed websocket messages: %s",
396+
url,
395397
):
396-
response = self.api_request_context.get(url, timeout=5000)
397-
if response:
398-
self.logger.log(
399-
(
400-
logging.ERROR
401-
if (response.status >= 400)
402-
and (response.status not in (502, 503))
403-
else logging.DEBUG
404-
),
405-
"Querying service endpoint in case we missed some websocket messages. Url: %s Response: '%s' TIP: %s",
406-
url,
407-
f"{response.status}: {response.text()}",
408-
(
409-
"We are emulating the frontend; a 502/503 response is acceptable if the service is not yet ready."
410-
),
411-
)
398+
response = None
399+
400+
try:
401+
response = self.api_request_context.get(
402+
url, timeout=_SERVICE_ROOT_POINT_STATUS_TIMEOUT
403+
)
404+
except (PlaywrightTimeoutError, TimeoutError):
405+
self.logger.log(
406+
logging.ERROR,
407+
"Timed-out polling service endpoint after %ds",
408+
_SERVICE_ROOT_POINT_STATUS_TIMEOUT,
409+
)
410+
except PlaywrightError as exc:
411+
self.logger.log(
412+
logging.ERROR, "Failed to poll service endpoint: %s", exc
413+
)
414+
else:
415+
self.logger.log(
416+
(
417+
logging.ERROR
418+
if (response.status >= 400)
419+
and (response.status not in (502, 503))
420+
else logging.DEBUG
421+
),
422+
"Querying service endpoint in case we missed some websocket messages. Url: %s Response: '%s' TIP: %s",
423+
url,
424+
f"{response.status}: {response.text()}",
425+
(
426+
"We are emulating the frontend; a 502/503 response is acceptable if the service is not yet ready."
427+
),
428+
)
429+
430+
if response.status <= 400:
431+
# NOTE: If the response status is less than 400, it means that the service is ready (There are some services that respond with a 3XX)
432+
if self.got_expected_node_progress_types():
433+
self.logger.warning(
434+
"⚠️ Progress bar didn't receive 100 percent but service is already running: %s. TIP: we missed some websocket messages! ⚠️", # https://github.com/ITISFoundation/osparc-simcore/issues/6449
435+
self.get_current_progress(),
436+
)
437+
self._service_ready = True
438+
return True
412439

413-
if response.status <= 400:
414-
# NOTE: If the response status is less than 400, it means that the service is ready (There are some services that respond with a 3XX)
415-
if self.got_expected_node_progress_types():
416-
self.logger.warning(
417-
"⚠️ Progress bar didn't receive 100 percent but service is already running: %s. TIP: we missed some websocket messages! ⚠️", # https://github.com/ITISFoundation/osparc-simcore/issues/6449
418-
self.get_current_progress(),
419-
)
420-
self._service_ready = True
421-
return True
422440
self._last_poll_timestamp = datetime.now(UTC)
423441

424442
return False

0 commit comments

Comments
 (0)