Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 13 additions & 29 deletions tests/smoketests/sdk/test_async_devbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from runloop_api_client.sdk import AsyncDevbox, AsyncRunloopSDK
from tests.smoketests.utils import unique_name
from runloop_api_client.lib.polling import PollingConfig
from runloop_api_client.lib.polling_async import async_poll_until

pytestmark = [pytest.mark.smoketest, pytest.mark.asyncio]

Expand Down Expand Up @@ -1040,35 +1041,19 @@ async def test_shell_exec_async_with_both_streams(self, devbox: AsyncDevbox) ->
class TestAsyncDevboxLogs:
"""Test async devbox logs retrieval functionality."""

@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
async def test_logs_basic(self, shared_devbox: AsyncDevbox) -> None:
"""Test retrieving devbox logs returns valid response structure."""
test_message = "async basic log test message"
result = await shared_devbox.cmd.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = await shared_devbox.logs()

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content
Comment on lines -1043 to -1056

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is testing a slightly different path (filter by execution ID or no...) Is there a reason you got rid of this one?


@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
async def test_logs_with_execution_filter(self, shared_devbox: AsyncDevbox) -> None:
"""Test retrieving devbox logs filtered by execution ID."""
test_message = "async filtered log test"
result = await shared_devbox.cmd.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = await shared_devbox.logs(execution_id=result.execution_id)

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content
logs = await async_poll_until(
retriever=lambda: shared_devbox.logs(execution_id=result.execution_id),
is_terminal=lambda l: any(test_message in (log.message or "") for log in l.logs),
config=PollingConfig(timeout_seconds=10, interval_seconds=1),
)
assert any(test_message in (log.message or "") for log in logs.logs)

@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
async def test_logs_with_shell_name_filter(self, shared_devbox: AsyncDevbox) -> None:
Expand All @@ -1080,10 +1065,9 @@ async def test_logs_with_shell_name_filter(self, shared_devbox: AsyncDevbox) ->
result = await shell.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = await shared_devbox.logs(shell_name=shell_name)

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content
logs = await async_poll_until(
retriever=lambda: shared_devbox.logs(shell_name=shell_name),
is_terminal=lambda l: any(test_message in (log.message or "") for log in l.logs),
config=PollingConfig(timeout_seconds=10, interval_seconds=1),
)
assert any(test_message in (log.message or "") for log in logs.logs)
43 changes: 13 additions & 30 deletions tests/smoketests/sdk/test_devbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from runloop_api_client.sdk import Devbox, RunloopSDK
from tests.smoketests.utils import unique_name
from runloop_api_client.lib.polling import PollingConfig
from runloop_api_client.lib.polling import PollingConfig, poll_until

pytestmark = [pytest.mark.smoketest]

Expand Down Expand Up @@ -1026,35 +1026,19 @@ def test_shell_exec_async_with_both_streams(self, devbox: Devbox) -> None:
class TestDevboxLogs:
"""Test devbox logs retrieval functionality."""

@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
def test_logs_basic(self, shared_devbox: Devbox) -> None:
"""Test retrieving devbox logs returns valid response structure."""
Comment on lines -1029 to -1031

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why remove this one?

test_message = "basic log test message"
result = shared_devbox.cmd.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = shared_devbox.logs()

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content

@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
def test_logs_with_execution_filter(self, shared_devbox: Devbox) -> None:
"""Test retrieving devbox logs filtered by execution ID."""
test_message = "filtered log test"
result = shared_devbox.cmd.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = shared_devbox.logs(execution_id=result.execution_id)

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content
logs = poll_until(
retriever=lambda: shared_devbox.logs(execution_id=result.execution_id),
is_terminal=lambda l: any(test_message in (log.message or "") for log in l.logs),
config=PollingConfig(timeout_seconds=10, interval_seconds=1),
)
assert any(test_message in (log.message or "") for log in logs.logs)

@pytest.mark.timeout(THIRTY_SECOND_TIMEOUT)
def test_logs_with_shell_name_filter(self, shared_devbox: Devbox) -> None:
Expand All @@ -1066,10 +1050,9 @@ def test_logs_with_shell_name_filter(self, shared_devbox: Devbox) -> None:
result = shell.exec(f'echo "{test_message}"')
assert result.exit_code == 0

logs = shared_devbox.logs(shell_name=shell_name)

assert logs is not None
assert hasattr(logs, "logs")
assert isinstance(logs.logs, list)
log_content = " ".join(str(log) for log in logs.logs)
assert test_message in log_content
logs = poll_until(
retriever=lambda: shared_devbox.logs(shell_name=shell_name),
is_terminal=lambda l: any(test_message in (log.message or "") for log in l.logs),
config=PollingConfig(timeout_seconds=10, interval_seconds=1),
)
assert any(test_message in (log.message or "") for log in logs.logs)
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading