Created
October 16, 2024 07:51
-
-
Save mangelajo/58ee2d25c0a4791d50c4c3b26cf2113a to your computer and use it in GitHub Desktop.
test errors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
======================================================================== FAILURES ======================================================================== | |
__________________________________________________________________ test_exporter_serve ___________________________________________________________________ | |
mock_controller = '127.0.0.1:44357' | |
async def test_exporter_serve(mock_controller): | |
exporter = ExporterConfigV1Alpha1( | |
apiVersion="jumpstarter.dev/v1alpha1", | |
kind="ExporterConfig", | |
endpoint=mock_controller, | |
token="dummy-exporter-token", | |
export={ | |
"power": ExporterConfigV1Alpha1DriverInstance( | |
type="jumpstarter.drivers.power.driver.MockPower", | |
), | |
"nested": ExporterConfigV1Alpha1DriverInstance( | |
children={ | |
"tcp": ExporterConfigV1Alpha1DriverInstance( | |
type="jumpstarter.drivers.network.driver.TcpNetwork", | |
config={ | |
"host": "127.0.0.1", | |
"port": 8080, | |
}, | |
) | |
} | |
), | |
}, | |
) | |
client = ClientConfigV1Alpha1( | |
name="testclient", | |
client=ClientConfigV1Alpha1Client( | |
endpoint=mock_controller, | |
token="dummy-client-token", | |
drivers=ClientConfigV1Alpha1Drivers(allow=[], unsafe=True), | |
), | |
) | |
async with create_task_group() as tg: | |
tg.start_soon(exporter.serve_forever) | |
with start_blocking_portal() as portal: | |
> async with client.lease_async(metadata_filter=MetadataFilter(), portal=portal) as lease: | |
jumpstarter/config/exporter_test.py:50: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
../.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py:210: in __aenter__ | |
return await anext(self.gen) | |
jumpstarter/config/client.py:83: in lease_async | |
async with Lease( | |
jumpstarter/client/lease.py:36: in __aenter__ | |
self.lease = await self.controller.RequestLease( | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <_AioCall of RPC that terminated with: | |
status = failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0...iled (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
> | |
def __await__(self) -> Generator[Any, None, ResponseType]: | |
"""Wait till the ongoing RPC request finishes.""" | |
try: | |
response = yield from self._call_response | |
except asyncio.CancelledError: | |
# Even if we caught all other CancelledError, there is still | |
# this corner case. If the application cancels immediately after | |
# the Call object is created, we will observe this | |
# `CancelledError`. | |
if not self.cancelled(): | |
self.cancel() | |
raise | |
# NOTE(lidiz) If we raise RpcError in the task, and users doesn't | |
# 'await' on it. AsyncIO will log 'Task exception was never retrieved'. | |
# Instead, if we move the exception raising here, the spam stops. | |
# Unfortunately, there can only be one 'yield from' in '__await__'. So, | |
# we need to access the private instance variable. | |
if response is cygrpc.EOF: | |
if self._cython_call.is_locally_cancelled(): | |
raise asyncio.CancelledError() | |
else: | |
> raise _create_rpc_error( | |
self._cython_call._initial_metadata, | |
self._cython_call._status, | |
) | |
E grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
E status = StatusCode.UNAVAILABLE | |
E details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
E debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:20.866003406+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
E > | |
../.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py:327: AioRpcError | |
During handling of the above exception, another exception occurred: | |
Traceback (most recent call last): | |
File "/home/majopela/jumpstarter/jumpstarter/config/exporter_test.py", line 50, in test_exporter_serve | |
async with client.lease_async(metadata_filter=MetadataFilter(), portal=portal) as lease: | |
File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
return await anext(self.gen) | |
^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/jumpstarter/jumpstarter/config/client.py", line 83, in lease_async | |
async with Lease( | |
File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 36, in __aenter__ | |
self.lease = await self.controller.RequestLease( | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
raise _create_rpc_error( | |
grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
status = StatusCode.UNAVAILABLE | |
details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:20.866003406+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
> | |
During handling of the above exception, another exception occurred: | |
+ Exception Group Traceback (most recent call last): | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call | |
| result: TResult | None = func() | |
| ^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda> | |
| lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ | |
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec | |
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall | |
| return outcome.get_result() | |
| ^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result | |
| raise exc.with_traceback(exc.__traceback__) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | |
| yield from thread_exception_runtest_hook() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | |
| yield from unraisable_exception_runtest_hook() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call | |
| yield from self._runtest_for(item, "call") | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call | |
| return (yield) | |
| ^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | |
| return (yield) | |
| ^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall | |
| res = hook_impl.function(*args) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call | |
| item.runtest() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest | |
| self.ihook.pytest_pyfunc_call(pyfuncitem=self) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ | |
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec | |
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall | |
| raise exception.with_traceback(exception.__traceback__) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall | |
| res = hook_impl.function(*args) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/pytest_plugin.py", line 160, in pytest_pyfunc_call | |
| runner.run_test(pyfuncitem.obj, testargs) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2176, in run_test | |
| self._raise_async_exceptions() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2080, in _raise_async_exceptions | |
| raise exceptions[0] | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2170, in run_test | |
| self.get_loop().run_until_complete( | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete | |
| return future.result() | |
| ^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2130, in _call_in_runner_task | |
| return await future | |
| ^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2097, in _run_tests_and_fixtures | |
| retval = await coro | |
| ^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/config/exporter_test.py", line 46, in test_exporter_serve | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/jumpstarter/config/exporter_test.py", line 50, in test_exporter_serve | |
| async with client.lease_async(metadata_filter=MetadataFilter(), portal=portal) as lease: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/config/client.py", line 83, in lease_async | |
| async with Lease( | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 36, in __aenter__ | |
| self.lease = await self.controller.RequestLease( | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:20.866003406+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:44357: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
| > | |
+------------------------------------ | |
___________________________________________________________ test_drivers_mock_storage_mux_http ___________________________________________________________ | |
def test_drivers_mock_storage_mux_http(): | |
class StaticHandler(BaseHTTPRequestHandler): | |
def do_HEAD(self): | |
self.send_response(200) | |
self.send_header("content-length", 11 * 1000) | |
self.end_headers() | |
def do_GET(self): | |
self.send_response(200) | |
self.send_header("content-length", 11 * 1000) | |
self.end_headers() | |
self.wfile.write(b"testcontent" * 1000) | |
with serve(MockStorageMux()) as client: | |
> server = HTTPServer(("127.0.0.1", 8080), StaticHandler) | |
jumpstarter/drivers/storage/driver_test.py:43: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
../.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/socketserver.py:457: in __init__ | |
self.server_bind() | |
../.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/http/server.py:136: in server_bind | |
socketserver.TCPServer.server_bind(self) | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <http.server.HTTPServer object at 0x7f0f0155dd60> | |
def server_bind(self): | |
"""Called by constructor to bind the socket. | |
May be overridden. | |
""" | |
if self.allow_reuse_address and hasattr(socket, "SO_REUSEADDR"): | |
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | |
if self.allow_reuse_port and hasattr(socket, "SO_REUSEPORT"): | |
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) | |
> self.socket.bind(self.server_address) | |
E OSError: [Errno 98] Address already in use | |
../.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/socketserver.py:473: OSError | |
______________________________________________________________________ test_router _______________________________________________________________________ | |
handler = <function test_router.<locals>.handle_async at 0x7f0f0142bba0> | |
@asynccontextmanager | |
async def TemporaryUnixListener(handler): | |
with TemporarySocket() as path: | |
async with await create_unix_listener(path) as listener: | |
async with create_task_group() as tg: | |
tg.start_soon(listener.serve, handler, tg) | |
try: | |
> yield path | |
jumpstarter/common/tempfile.py:23: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
jumpstarter/client/lease.py:81: in serve_unix_async | |
yield path | |
jumpstarter/client/lease.py:86: in connect_async | |
async with client_from_path(path, self.portal) as client: | |
../.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py:210: in __aenter__ | |
return await anext(self.gen) | |
jumpstarter/client/client.py:21: in client_from_path | |
yield await client_from_channel(channel, portal) | |
jumpstarter/client/client.py:32: in client_from_channel | |
response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <_AioCall of RPC that terminated with: | |
status = failed to connect to all addresses; last error: UNAVAILABLE: unix:/tm..."failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
> | |
def __await__(self) -> Generator[Any, None, ResponseType]: | |
"""Wait till the ongoing RPC request finishes.""" | |
try: | |
response = yield from self._call_response | |
except asyncio.CancelledError: | |
# Even if we caught all other CancelledError, there is still | |
# this corner case. If the application cancels immediately after | |
# the Call object is created, we will observe this | |
# `CancelledError`. | |
if not self.cancelled(): | |
self.cancel() | |
raise | |
# NOTE(lidiz) If we raise RpcError in the task, and users doesn't | |
# 'await' on it. AsyncIO will log 'Task exception was never retrieved'. | |
# Instead, if we move the exception raising here, the spam stops. | |
# Unfortunately, there can only be one 'yield from' in '__await__'. So, | |
# we need to access the private instance variable. | |
if response is cygrpc.EOF: | |
if self._cython_call.is_locally_cancelled(): | |
raise asyncio.CancelledError() | |
else: | |
> raise _create_rpc_error( | |
self._cython_call._initial_metadata, | |
self._cython_call._status, | |
) | |
E grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
E status = StatusCode.UNAVAILABLE | |
E details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
E debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
E > | |
../.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py:327: AioRpcError | |
During handling of the above exception, another exception occurred: | |
Traceback (most recent call last): | |
File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 23, in TemporaryUnixListener | |
yield path | |
File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 81, in serve_unix_async | |
yield path | |
File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 86, in connect_async | |
async with client_from_path(path, self.portal) as client: | |
File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
return await anext(self.gen) | |
^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 21, in client_from_path | |
yield await client_from_channel(channel, portal) | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 32, in client_from_channel | |
response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
raise _create_rpc_error( | |
grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
status = StatusCode.UNAVAILABLE | |
details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
> | |
During handling of the above exception, another exception occurred: | |
+ Exception Group Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 45, in test_router | |
| async with lease.connect_async() as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 85, in connect_async | |
| async with self.serve_unix_async() as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 80, in serve_unix_async | |
| async with TemporaryUnixListener(self.handle_async) as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 20, in TemporaryUnixListener | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 23, in TemporaryUnixListener | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 81, in serve_unix_async | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 86, in connect_async | |
| async with client_from_path(path, self.portal) as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 21, in client_from_path | |
| yield await client_from_channel(channel, portal) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 32, in client_from_channel | |
| response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
| > | |
+------------------------------------ | |
During handling of the above exception, another exception occurred: | |
+ Exception Group Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 45, in test_router | |
| async with lease.connect_async() as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 85, in connect_async | |
| async with self.serve_unix_async() as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 80, in serve_unix_async | |
| async with TemporaryUnixListener(self.handle_async) as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 20, in TemporaryUnixListener | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 23, in TemporaryUnixListener | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 81, in serve_unix_async | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 86, in connect_async | |
| async with client_from_path(path, self.portal) as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 21, in client_from_path | |
| yield await client_from_channel(channel, portal) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 32, in client_from_channel | |
| response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
| > | |
+------------------------------------ | |
During handling of the above exception, another exception occurred: | |
+ Exception Group Traceback (most recent call last): | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call | |
| result: TResult | None = func() | |
| ^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda> | |
| lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ | |
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec | |
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall | |
| return outcome.get_result() | |
| ^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result | |
| raise exc.with_traceback(exc.__traceback__) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call | |
| yield from thread_exception_runtest_hook() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call | |
| yield from unraisable_exception_runtest_hook() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call | |
| yield from self._runtest_for(item, "call") | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for | |
| yield | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call | |
| return (yield) | |
| ^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall | |
| teardown.throw(outcome._exception) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call | |
| return (yield) | |
| ^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall | |
| res = hook_impl.function(*args) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call | |
| item.runtest() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/_pytest/python.py", line 1627, in runtest | |
| self.ihook.pytest_pyfunc_call(pyfuncitem=self) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__ | |
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec | |
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall | |
| raise exception.with_traceback(exception.__traceback__) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall | |
| res = hook_impl.function(*args) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/pytest_plugin.py", line 160, in pytest_pyfunc_call | |
| runner.run_test(pyfuncitem.obj, testargs) | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2176, in run_test | |
| self._raise_async_exceptions() | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2080, in _raise_async_exceptions | |
| raise exceptions[0] | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2170, in run_test | |
| self.get_loop().run_until_complete( | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete | |
| return future.result() | |
| ^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2130, in _call_in_runner_task | |
| return await future | |
| ^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2097, in _run_tests_and_fixtures | |
| retval = await coro | |
| ^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 34, in test_router | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 23, in TemporaryUnixListener | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 81, in serve_unix_async | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 86, in connect_async | |
| async with client_from_path(path, self.portal) as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 21, in client_from_path | |
| yield await client_from_channel(channel, portal) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 32, in client_from_channel | |
| response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
| > | |
| | |
| During handling of the above exception, another exception occurred: | |
| | |
| Exception Group Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 45, in test_router | |
| async with lease.connect_async() as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 85, in connect_async | |
| async with self.serve_unix_async() as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 80, in serve_unix_async | |
| async with TemporaryUnixListener(self.handle_async) as path: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 231, in __aexit__ | |
| await self.gen.athrow(value) | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 20, in TemporaryUnixListener | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/jumpstarter/common/tempfile.py", line 23, in TemporaryUnixListener | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 81, in serve_unix_async | |
| yield path | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 86, in connect_async | |
| async with client_from_path(path, self.portal) as client: | |
| File "/home/majopela/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/lib/python3.12/contextlib.py", line 210, in __aenter__ | |
| return await anext(self.gen) | |
| ^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 21, in client_from_path | |
| yield await client_from_channel(channel, portal) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/jumpstarter/jumpstarter/client/client.py", line 32, in client_from_channel | |
| response = await jumpstarter_pb2_grpc.ExporterServiceStub(channel).GetReport(empty_pb2.Empty()) | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.572393001+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNAVAILABLE: unix:/tmp/jumpstarter-kl51mjm1/socket: Socket closed"}" | |
| > | |
+------------------------------------ | |
____________________________________________________________________ test_controller _____________________________________________________________________ | |
mock_controller = '127.0.0.1:46259' | |
@pytest.mark.xfail(raises=RuntimeError) | |
async def test_controller(mock_controller): | |
uuid = uuid4() | |
async with Exporter( | |
channel=grpc.aio.secure_channel(mock_controller, grpc.ssl_channel_credentials()), | |
uuid=uuid, | |
labels={}, | |
device_factory=lambda: MockPower(), | |
) as exporter: | |
async with create_task_group() as tg: | |
tg.start_soon(exporter.serve) | |
with start_blocking_portal() as portal: | |
> async with Lease( | |
channel=grpc.aio.secure_channel(mock_controller, grpc.ssl_channel_credentials()), | |
metadata_filter=MetadataFilter(), | |
portal=portal, | |
) as lease: | |
tests/test_listener.py:64: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
jumpstarter/client/lease.py:36: in __aenter__ | |
self.lease = await self.controller.RequestLease( | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <_AioCall of RPC that terminated with: | |
status = failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0...iled (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
> | |
def __await__(self) -> Generator[Any, None, ResponseType]: | |
"""Wait till the ongoing RPC request finishes.""" | |
try: | |
response = yield from self._call_response | |
except asyncio.CancelledError: | |
# Even if we caught all other CancelledError, there is still | |
# this corner case. If the application cancels immediately after | |
# the Call object is created, we will observe this | |
# `CancelledError`. | |
if not self.cancelled(): | |
self.cancel() | |
raise | |
# NOTE(lidiz) If we raise RpcError in the task, and users doesn't | |
# 'await' on it. AsyncIO will log 'Task exception was never retrieved'. | |
# Instead, if we move the exception raising here, the spam stops. | |
# Unfortunately, there can only be one 'yield from' in '__await__'. So, | |
# we need to access the private instance variable. | |
if response is cygrpc.EOF: | |
if self._cython_call.is_locally_cancelled(): | |
raise asyncio.CancelledError() | |
else: | |
> raise _create_rpc_error( | |
self._cython_call._initial_metadata, | |
self._cython_call._status, | |
) | |
E grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
E status = StatusCode.UNAVAILABLE | |
E details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
E debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.637283203+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
E > | |
../.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py:327: AioRpcError | |
During handling of the above exception, another exception occurred: | |
Traceback (most recent call last): | |
File "/home/majopela/jumpstarter/tests/test_listener.py", line 64, in test_controller | |
async with Lease( | |
File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 36, in __aenter__ | |
self.lease = await self.controller.RequestLease( | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
raise _create_rpc_error( | |
grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
status = StatusCode.UNAVAILABLE | |
details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.637283203+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
> | |
During handling of the above exception, another exception occurred: | |
+ Exception Group Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 60, in test_controller | |
| async with create_task_group() as tg: | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 685, in __aexit__ | |
| raise BaseExceptionGroup( | |
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
+-+---------------- 1 ---------------- | |
| Traceback (most recent call last): | |
| File "/home/majopela/jumpstarter/tests/test_listener.py", line 64, in test_controller | |
| async with Lease( | |
| File "/home/majopela/jumpstarter/jumpstarter/client/lease.py", line 36, in __aenter__ | |
| self.lease = await self.controller.RequestLease( | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| File "/home/majopela/.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py", line 327, in __await__ | |
| raise _create_rpc_error( | |
| grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
| status = StatusCode.UNAVAILABLE | |
| details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
| debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.637283203+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
| > | |
+------------------------------------ | |
During handling of the above exception, another exception occurred: | |
mock_controller = '127.0.0.1:46259' | |
@pytest.mark.xfail(raises=RuntimeError) | |
async def test_controller(mock_controller): | |
uuid = uuid4() | |
> async with Exporter( | |
channel=grpc.aio.secure_channel(mock_controller, grpc.ssl_channel_credentials()), | |
uuid=uuid, | |
labels={}, | |
device_factory=lambda: MockPower(), | |
) as exporter: | |
tests/test_listener.py:54: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
jumpstarter/exporter/exporter.py:35: in __aexit__ | |
await self.controller.Unregister( | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <_AioCall of RPC that terminated with: | |
status = failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0...iled (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
> | |
def __await__(self) -> Generator[Any, None, ResponseType]: | |
"""Wait till the ongoing RPC request finishes.""" | |
try: | |
response = yield from self._call_response | |
except asyncio.CancelledError: | |
# Even if we caught all other CancelledError, there is still | |
# this corner case. If the application cancels immediately after | |
# the Call object is created, we will observe this | |
# `CancelledError`. | |
if not self.cancelled(): | |
self.cancel() | |
raise | |
# NOTE(lidiz) If we raise RpcError in the task, and users doesn't | |
# 'await' on it. AsyncIO will log 'Task exception was never retrieved'. | |
# Instead, if we move the exception raising here, the spam stops. | |
# Unfortunately, there can only be one 'yield from' in '__await__'. So, | |
# we need to access the private instance variable. | |
if response is cygrpc.EOF: | |
if self._cython_call.is_locally_cancelled(): | |
raise asyncio.CancelledError() | |
else: | |
> raise _create_rpc_error( | |
self._cython_call._initial_metadata, | |
self._cython_call._status, | |
) | |
E grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
E status = StatusCode.UNAVAILABLE | |
E details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED" | |
E debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-10-16T09:47:22.638772528+02:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:46259: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED"}" | |
E > | |
../.cache/uv/builds-v0/.tmpmA5xPI/lib/python3.12/site-packages/grpc/aio/_call.py:327: AioRpcError | |
---------- coverage: platform linux, python 3.12.3-final-0 ----------- | |
Coverage HTML written to dir htmlcov | |
Coverage XML written to file coverage.xml | |
================================================================ short test summary info ================================================================= | |
FAILED jumpstarter/config/exporter_test.py::test_exporter_serve - ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
FAILED jumpstarter/drivers/storage/driver_test.py::test_drivers_mock_storage_mux_http - OSError: [Errno 98] Address already in use | |
FAILED tests/test_listener.py::test_router - ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) | |
FAILED tests/test_listener.py::test_controller - grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with: | |
======================================================== 4 failed, 59 passed, 1 skipped in 5.09s ========================================================= | |
make: *** [Makefile:20: test-jumpstarter] Error 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment