ROOT: skip environment lint, matches filter 'lint' .pkg: remove tox env folder /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.pkg py39: install_deps> python -I -m pip install coverage pyee pytest pytest-aiohttp pytest-asyncio python-dateutil dependencies/api-client.tar.gz dependencies/python-test-helper.tar.gz .pkg: install_requires> python -I -m pip install 'setuptools>=61.0' .pkg: _optional_hooks> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta .pkg: get_requires_for_build_sdist> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta .pkg: get_requires_for_build_wheel> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta .pkg: freeze> python -m pip freeze --all .pkg: pip==24.3.1,setuptools==75.8.0,wheel==0.45.1 .pkg: prepare_metadata_for_build_wheel> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta .pkg: build_sdist> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta py39: install_package_deps> python -I -m pip install 'aiortc>=1.10.1' crosslab_api_client py39: install_package> python -I -m pip install --force-reinstall --no-deps /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/2/crosslab_soa_client-0.2.8+dev.ee88c7e5.tar.gz py39: freeze> python -m pip freeze --all py39: aiohappyeyeballs==2.6.1,aiohttp==3.13.2,aioice==0.10.1,aiortc==1.13.0,aiosignal==1.4.0,async-timeout==5.0.1,attrs==25.4.0,av==14.4.0,backports.asyncio.runner==1.2.0,cffi==2.0.0,coverage==7.10.7,crosslab_api_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/api-client.tar.gz#sha256=49327861a9c5f06d766617ca4cbd6ea0a54ea48a66fcec8cc11a6fc49b540d9d,crosslab_soa_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/2/crosslab_soa_client-0.2.8%2Bdev.ee88c7e5.tar.gz#sha256=d3900772fc4ed543d35053de435f1bd96532d4d8a049a6c2c0e5c2576fd2727f,cryptography==46.0.3,dnspython==2.7.0,exceptiongroup==1.3.0,frozenlist==1.8.0,google-crc32c==1.7.1,idna==3.11,ifaddr==0.2.0,iniconfig==2.1.0,multidict==6.7.0,packaging==25.0,pip==24.3.1,pluggy==1.6.0,propcache==0.4.1,pycparser==2.23,pyee==13.0.0,Pygments==2.19.2,pylibsrtp==0.12.0,pyOpenSSL==25.3.0,pytest==8.4.2,pytest-aiohttp==1.1.0,pytest-asyncio==1.2.0,python-dateutil==2.9.0.post0,setuptools==75.8.0,six==1.17.0,test_helper @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/python-test-helper.tar.gz#sha256=e6a2f847f80ea54fc7f4bf564c67f48822b9049f8739584af3248c138a9e5586,tomli==2.3.0,typing_extensions==4.15.0,wheel==0.45.1,yarl==1.22.0 py39: commands[0]> coverage run --source crosslab.soa_client -m pytest ============================= test session starts ============================== platform linux -- Python 3.9.21, pytest-8.4.2, pluggy-1.6.0 cachedir: .tox/py39/.pytest_cache rootdir: /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python configfile: pyproject.toml plugins: aiohttp-1.1.0, asyncio-1.2.0 asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 8 items tests/test_device_handler.py F. [ 25%] tests/test_webrtc_connection.py .... [ 75%] tests/test_websocket_connection.py .. [100%] =================================== FAILURES =================================== ________________________ test_connect_and_authenticate _________________________ ws = device_url = 'http://127.0.0.1:42735/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( > authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): E TypeError: tuple indices must be integers or slices, not str .tox/py39/lib/python3.9/site-packages/crosslab/soa_client/device_handler.py:50: TypeError During handling of the above exception, another exception occurred: mock_server = @pytest.mark.asyncio async def test_connect_and_authenticate(mock_server): mock_server.patch("/devices/123") mock_server.get("/devices/123/websocket", payload="token") ws = mock_server.ws("/devices/123/ws") ws.expect( r'{"messageType": "authenticate", "token": "token"}', answer=r'{"messageType": "authenticate", "authenticated": true}', ) base_url = await mock_server.start() dh = DeviceHandler() > await dh.connect(base_url + "/devices/123") tests/test_device_handler.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py39/lib/python3.9/site-packages/crosslab/soa_client/device_handler.py:112: in connect await authenticate(self.ws, device_url, token, self.get_service_meta()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ws = device_url = 'http://127.0.0.1:42735/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): raise Exception() except Exception: > raise Exception("Authentication failed") E Exception: Authentication failed .tox/py39/lib/python3.9/site-packages/crosslab/soa_client/device_handler.py:55: Exception ----------------------------- Captured stderr call ----------------------------- WSMessage(type=, data=None, extra=None) ------------------------------ Captured log call ------------------------------- ERROR aiohttp.server:web_protocol.py:481 Error handling request from 127.0.0.1 Traceback (most recent call last): File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request resp = await request_handler(request) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 94, in _handle return await expected["ws"].handle(request, self.base_url) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 38, in handle assert await self.ws.receive_str() == message["expect"].replace( AssertionError: assert '{"messageTyp...ervices": []}' == '{"messageTyp...en": "token"}' Skipping 38 identical leading characters in diff, use -v to show - ": "token"} + ": "token", "deviceUrl": "http://127.0.0.1:42735/devices/123", "services": []} DEBUG crosslab.soa_client.device_handler:device_handler.py:28 WSMessage(type=, data=None, extra=None) =============================== warnings summary =============================== tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[True]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[True]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[False]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py39/lib/python3.9/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[False]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_device_handler.py::test_connect_and_authenticate - Exceptio... =================== 1 failed, 7 passed, 4 warnings in 33.06s =================== /usr/lib/python3.9/logging/__init__.py:2141: RuntimeWarning: coroutine 'CrosslabHandler.flush' was never awaited h.flush() RuntimeWarning: Enable tracemalloc to get the object allocation traceback py39: exit 1 (34.88 seconds) /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python> coverage run --source crosslab.soa_client -m pytest pid=21340 py39: FAIL ✖ in 1 minute 20.39 seconds py310: install_deps> python -I -m pip install coverage pyee pytest pytest-aiohttp pytest-asyncio python-dateutil dependencies/api-client.tar.gz dependencies/python-test-helper.tar.gz py310: install_package_deps> python -I -m pip install 'aiortc>=1.10.1' crosslab_api_client py310: install_package> python -I -m pip install --force-reinstall --no-deps /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/3/crosslab_soa_client-0.2.8+dev.ee88c7e5.tar.gz py310: freeze> python -m pip freeze --all py310: aiohappyeyeballs==2.6.1,aiohttp==3.13.2,aioice==0.10.1,aiortc==1.14.0,aiosignal==1.4.0,async-timeout==5.0.1,attrs==25.4.0,av==16.0.1,backports.asyncio.runner==1.2.0,cffi==2.0.0,coverage==7.11.0,crosslab_api_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/api-client.tar.gz#sha256=49327861a9c5f06d766617ca4cbd6ea0a54ea48a66fcec8cc11a6fc49b540d9d,crosslab_soa_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/3/crosslab_soa_client-0.2.8%2Bdev.ee88c7e5.tar.gz#sha256=d3900772fc4ed543d35053de435f1bd96532d4d8a049a6c2c0e5c2576fd2727f,cryptography==46.0.3,dnspython==2.8.0,exceptiongroup==1.3.0,frozenlist==1.8.0,google-crc32c==1.7.1,idna==3.11,ifaddr==0.2.0,iniconfig==2.3.0,multidict==6.7.0,packaging==25.0,pip==24.3.1,pluggy==1.6.0,propcache==0.4.1,pycparser==2.23,pyee==13.0.0,Pygments==2.19.2,pylibsrtp==1.0.0,pyOpenSSL==25.3.0,pytest==8.4.2,pytest-aiohttp==1.1.0,pytest-asyncio==1.2.0,python-dateutil==2.9.0.post0,setuptools==75.8.0,six==1.17.0,test_helper @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/python-test-helper.tar.gz#sha256=e6a2f847f80ea54fc7f4bf564c67f48822b9049f8739584af3248c138a9e5586,tomli==2.3.0,typing_extensions==4.15.0,wheel==0.45.1,yarl==1.22.0 py310: commands[0]> coverage run --source crosslab.soa_client -m pytest ============================= test session starts ============================== platform linux -- Python 3.10.12, pytest-8.4.2, pluggy-1.6.0 cachedir: .tox/py310/.pytest_cache rootdir: /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python configfile: pyproject.toml plugins: aiohttp-1.1.0, asyncio-1.2.0 asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 8 items tests/test_device_handler.py F. [ 25%] tests/test_webrtc_connection.py .... [ 75%] tests/test_websocket_connection.py .. [100%] =================================== FAILURES =================================== ________________________ test_connect_and_authenticate _________________________ ws = device_url = 'http://127.0.0.1:42503/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( > authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): E TypeError: tuple indices must be integers or slices, not str .tox/py310/lib/python3.10/site-packages/crosslab/soa_client/device_handler.py:50: TypeError During handling of the above exception, another exception occurred: mock_server = @pytest.mark.asyncio async def test_connect_and_authenticate(mock_server): mock_server.patch("/devices/123") mock_server.get("/devices/123/websocket", payload="token") ws = mock_server.ws("/devices/123/ws") ws.expect( r'{"messageType": "authenticate", "token": "token"}', answer=r'{"messageType": "authenticate", "authenticated": true}', ) base_url = await mock_server.start() dh = DeviceHandler() > await dh.connect(base_url + "/devices/123") tests/test_device_handler.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py310/lib/python3.10/site-packages/crosslab/soa_client/device_handler.py:112: in connect await authenticate(self.ws, device_url, token, self.get_service_meta()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ws = device_url = 'http://127.0.0.1:42503/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): raise Exception() except Exception: > raise Exception("Authentication failed") E Exception: Authentication failed .tox/py310/lib/python3.10/site-packages/crosslab/soa_client/device_handler.py:55: Exception ----------------------------- Captured stderr call ----------------------------- WSMessage(type=, data=None, extra=None) ------------------------------ Captured log call ------------------------------- ERROR aiohttp.server:web_protocol.py:481 Error handling request from 127.0.0.1 Traceback (most recent call last): File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request resp = await request_handler(request) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 94, in _handle return await expected["ws"].handle(request, self.base_url) File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 38, in handle assert await self.ws.receive_str() == message["expect"].replace( AssertionError: assert '{"messageTyp...ervices": []}' == '{"messageTyp...en": "token"}' Skipping 38 identical leading characters in diff, use -v to show - ": "token"} + ": "token", "deviceUrl": "http://127.0.0.1:42503/devices/123", "services": []} DEBUG crosslab.soa_client.device_handler:device_handler.py:28 WSMessage(type=, data=None, extra=None) =============================== warnings summary =============================== tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[True]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[True]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[False]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py310/lib/python3.10/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[False]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_device_handler.py::test_connect_and_authenticate - Exceptio... =================== 1 failed, 7 passed, 4 warnings in 33.64s =================== /usr/lib/python3.10/logging/__init__.py:2182: RuntimeWarning: coroutine 'CrosslabHandler.flush' was never awaited h.flush() RuntimeWarning: Enable tracemalloc to get the object allocation traceback py310: exit 1 (35.47 seconds) /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python> coverage run --source crosslab.soa_client -m pytest pid=21488 py310: FAIL ✖ in 1 minute 13.54 seconds py311: install_deps> python -I -m pip install coverage pyee pytest pytest-aiohttp pytest-asyncio python-dateutil dependencies/api-client.tar.gz dependencies/python-test-helper.tar.gz py311: install_package_deps> python -I -m pip install 'aiortc>=1.10.1' crosslab_api_client py311: install_package> python -I -m pip install --force-reinstall --no-deps /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/4/crosslab_soa_client-0.2.8+dev.ee88c7e5.tar.gz py311: freeze> python -m pip freeze --all py311: aiohappyeyeballs==2.6.1,aiohttp==3.13.2,aioice==0.10.1,aiortc==1.14.0,aiosignal==1.4.0,attrs==25.4.0,av==16.0.1,cffi==2.0.0,coverage==7.11.0,crosslab_api_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/api-client.tar.gz#sha256=49327861a9c5f06d766617ca4cbd6ea0a54ea48a66fcec8cc11a6fc49b540d9d,crosslab_soa_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/4/crosslab_soa_client-0.2.8%2Bdev.ee88c7e5.tar.gz#sha256=d3900772fc4ed543d35053de435f1bd96532d4d8a049a6c2c0e5c2576fd2727f,cryptography==46.0.3,dnspython==2.8.0,frozenlist==1.8.0,google-crc32c==1.7.1,idna==3.11,ifaddr==0.2.0,iniconfig==2.3.0,multidict==6.7.0,packaging==25.0,pip==24.3.1,pluggy==1.6.0,propcache==0.4.1,pycparser==2.23,pyee==13.0.0,Pygments==2.19.2,pylibsrtp==1.0.0,pyOpenSSL==25.3.0,pytest==8.4.2,pytest-aiohttp==1.1.0,pytest-asyncio==1.2.0,python-dateutil==2.9.0.post0,setuptools==75.8.0,six==1.17.0,test_helper @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/python-test-helper.tar.gz#sha256=e6a2f847f80ea54fc7f4bf564c67f48822b9049f8739584af3248c138a9e5586,typing_extensions==4.15.0,wheel==0.45.1,yarl==1.22.0 py311: commands[0]> coverage run --source crosslab.soa_client -m pytest ============================= test session starts ============================== platform linux -- Python 3.11.11, pytest-8.4.2, pluggy-1.6.0 cachedir: .tox/py311/.pytest_cache rootdir: /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python configfile: pyproject.toml plugins: aiohttp-1.1.0, asyncio-1.2.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 8 items tests/test_device_handler.py F. [ 25%] tests/test_webrtc_connection.py .... [ 75%] tests/test_websocket_connection.py .. [100%] =================================== FAILURES =================================== ________________________ test_connect_and_authenticate _________________________ ws = device_url = 'http://127.0.0.1:33503/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( > authentification_response["messageType"] != "authenticate" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ or not authentification_response["authenticated"] ): E TypeError: tuple indices must be integers or slices, not str .tox/py311/lib/python3.11/site-packages/crosslab/soa_client/device_handler.py:50: TypeError During handling of the above exception, another exception occurred: mock_server = @pytest.mark.asyncio async def test_connect_and_authenticate(mock_server): mock_server.patch("/devices/123") mock_server.get("/devices/123/websocket", payload="token") ws = mock_server.ws("/devices/123/ws") ws.expect( r'{"messageType": "authenticate", "token": "token"}', answer=r'{"messageType": "authenticate", "authenticated": true}', ) base_url = await mock_server.start() dh = DeviceHandler() > await dh.connect(base_url + "/devices/123") tests/test_device_handler.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py311/lib/python3.11/site-packages/crosslab/soa_client/device_handler.py:112: in connect await authenticate(self.ws, device_url, token, self.get_service_meta()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ws = device_url = 'http://127.0.0.1:33503/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): raise Exception() except Exception: > raise Exception("Authentication failed") E Exception: Authentication failed .tox/py311/lib/python3.11/site-packages/crosslab/soa_client/device_handler.py:55: Exception ----------------------------- Captured stderr call ----------------------------- WSMessage(type=, data=None, extra=None) ------------------------------ Captured log call ------------------------------- ERROR aiohttp.server:web_protocol.py:481 Error handling request from 127.0.0.1 Traceback (most recent call last): File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request resp = await request_handler(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 94, in _handle return await expected["ws"].handle(request, self.base_url) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 38, in handle assert await self.ws.receive_str() == message["expect"].replace( AssertionError: assert '{"messageTyp...ervices": []}' == '{"messageTyp...en": "token"}' Skipping 38 identical leading characters in diff, use -v to show - ": "token"} + ": "token", "deviceUrl": "http://127.0.0.1:33503/devices/123", "services": []} DEBUG crosslab.soa_client.device_handler:device_handler.py:28 WSMessage(type=, data=None, extra=None) =============================== warnings summary =============================== tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[True]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[True]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[False]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py311/lib/python3.11/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[False]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_device_handler.py::test_connect_and_authenticate - Exceptio... =================== 1 failed, 7 passed, 4 warnings in 32.50s =================== /usr/lib/python3.11/logging/__init__.py:2185: RuntimeWarning: coroutine 'CrosslabHandler.flush' was never awaited h.flush() RuntimeWarning: Enable tracemalloc to get the object allocation traceback py311: exit 1 (34.31 seconds) /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python> coverage run --source crosslab.soa_client -m pytest pid=21639 py311: FAIL ✖ in 1 minute 14.3 seconds py312: install_deps> python -I -m pip install coverage pyee pytest pytest-aiohttp pytest-asyncio python-dateutil dependencies/api-client.tar.gz dependencies/python-test-helper.tar.gz py312: install_package_deps> python -I -m pip install 'aiortc>=1.10.1' crosslab_api_client py312: install_package> python -I -m pip install --force-reinstall --no-deps /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/5/crosslab_soa_client-0.2.8+dev.ee88c7e5.tar.gz py312: freeze> python -m pip freeze --all py312: aiohappyeyeballs==2.6.1,aiohttp==3.13.2,aioice==0.10.1,aiortc==1.14.0,aiosignal==1.4.0,attrs==25.4.0,av==16.0.1,cffi==2.0.0,coverage==7.11.0,crosslab_api_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/api-client.tar.gz#sha256=49327861a9c5f06d766617ca4cbd6ea0a54ea48a66fcec8cc11a6fc49b540d9d,crosslab_soa_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/5/crosslab_soa_client-0.2.8%2Bdev.ee88c7e5.tar.gz#sha256=d3900772fc4ed543d35053de435f1bd96532d4d8a049a6c2c0e5c2576fd2727f,cryptography==46.0.3,dnspython==2.8.0,frozenlist==1.8.0,google-crc32c==1.7.1,idna==3.11,ifaddr==0.2.0,iniconfig==2.3.0,multidict==6.7.0,packaging==25.0,pip==24.3.1,pluggy==1.6.0,propcache==0.4.1,pycparser==2.23,pyee==13.0.0,Pygments==2.19.2,pylibsrtp==1.0.0,pyOpenSSL==25.3.0,pytest==8.4.2,pytest-aiohttp==1.1.0,pytest-asyncio==1.2.0,python-dateutil==2.9.0.post0,six==1.17.0,test_helper @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/python-test-helper.tar.gz#sha256=e6a2f847f80ea54fc7f4bf564c67f48822b9049f8739584af3248c138a9e5586,typing_extensions==4.15.0,yarl==1.22.0 py312: commands[0]> coverage run --source crosslab.soa_client -m pytest ============================= test session starts ============================== platform linux -- Python 3.12.8, pytest-8.4.2, pluggy-1.6.0 cachedir: .tox/py312/.pytest_cache rootdir: /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python configfile: pyproject.toml plugins: aiohttp-1.1.0, asyncio-1.2.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 8 items tests/test_device_handler.py F. [ 25%] tests/test_webrtc_connection.py .... [ 75%] tests/test_websocket_connection.py .. [100%] =================================== FAILURES =================================== ________________________ test_connect_and_authenticate _________________________ ws = device_url = 'http://127.0.0.1:35835/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( > authentification_response["messageType"] != "authenticate" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ or not authentification_response["authenticated"] ): E TypeError: tuple indices must be integers or slices, not str .tox/py312/lib/python3.12/site-packages/crosslab/soa_client/device_handler.py:50: TypeError During handling of the above exception, another exception occurred: mock_server = @pytest.mark.asyncio async def test_connect_and_authenticate(mock_server): mock_server.patch("/devices/123") mock_server.get("/devices/123/websocket", payload="token") ws = mock_server.ws("/devices/123/ws") ws.expect( r'{"messageType": "authenticate", "token": "token"}', answer=r'{"messageType": "authenticate", "authenticated": true}', ) base_url = await mock_server.start() dh = DeviceHandler() > await dh.connect(base_url + "/devices/123") tests/test_device_handler.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py312/lib/python3.12/site-packages/crosslab/soa_client/device_handler.py:112: in connect await authenticate(self.ws, device_url, token, self.get_service_meta()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ws = device_url = 'http://127.0.0.1:35835/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): raise Exception() except Exception: > raise Exception("Authentication failed") E Exception: Authentication failed .tox/py312/lib/python3.12/site-packages/crosslab/soa_client/device_handler.py:55: Exception ----------------------------- Captured stderr call ----------------------------- WSMessage(type=, data=None, extra=None) ------------------------------ Captured log call ------------------------------- ERROR aiohttp.server:web_protocol.py:481 Error handling request from 127.0.0.1 Traceback (most recent call last): File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request resp = await request_handler(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 94, in _handle return await expected["ws"].handle(request, self.base_url) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 38, in handle assert await self.ws.receive_str() == message["expect"].replace( AssertionError: assert '{"messageTyp...ervices": []}' == '{"messageTyp...en": "token"}' Skipping 38 identical leading characters in diff, use -v to show - ": "token"} + ": "token", "deviceUrl": "http://127.0.0.1:35835/devices/123", "services": []} DEBUG crosslab.soa_client.device_handler:device_handler.py:28 WSMessage(type=, data=None, extra=None) =============================== warnings summary =============================== tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[True]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[True]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[False]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py312/lib/python3.12/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[False]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_device_handler.py::test_connect_and_authenticate - Exceptio... =================== 1 failed, 7 passed, 4 warnings in 38.00s =================== /usr/lib/python3.12/logging/__init__.py:2264: RuntimeWarning: coroutine 'CrosslabHandler.flush' was never awaited h.flush() RuntimeWarning: Enable tracemalloc to get the object allocation traceback py312: exit 1 (44.10 seconds) /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python> coverage run --source crosslab.soa_client -m pytest pid=21785 py312: FAIL ✖ in 1 minute 25.49 seconds py313: install_deps> python -I -m pip install coverage pyee pytest pytest-aiohttp pytest-asyncio python-dateutil dependencies/api-client.tar.gz dependencies/python-test-helper.tar.gz py313: install_package_deps> python -I -m pip install 'aiortc>=1.10.1' crosslab_api_client py313: install_package> python -I -m pip install --force-reinstall --no-deps /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/6/crosslab_soa_client-0.2.8+dev.ee88c7e5.tar.gz py313: freeze> python -m pip freeze --all py313: aiohappyeyeballs==2.6.1,aiohttp==3.13.2,aioice==0.10.1,aiortc==1.14.0,aiosignal==1.4.0,attrs==25.4.0,av==16.0.1,cffi==2.0.0,coverage==7.11.0,crosslab_api_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/api-client.tar.gz#sha256=49327861a9c5f06d766617ca4cbd6ea0a54ea48a66fcec8cc11a6fc49b540d9d,crosslab_soa_client @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/.tmp/package/6/crosslab_soa_client-0.2.8%2Bdev.ee88c7e5.tar.gz#sha256=d3900772fc4ed543d35053de435f1bd96532d4d8a049a6c2c0e5c2576fd2727f,cryptography==46.0.3,dnspython==2.8.0,frozenlist==1.8.0,google-crc32c==1.7.1,idna==3.11,ifaddr==0.2.0,iniconfig==2.3.0,multidict==6.7.0,packaging==25.0,pip==24.3.1,pluggy==1.6.0,propcache==0.4.1,pycparser==2.23,pyee==13.0.0,Pygments==2.19.2,pylibsrtp==1.0.0,pyOpenSSL==25.3.0,pytest==8.4.2,pytest-aiohttp==1.1.0,pytest-asyncio==1.2.0,python-dateutil==2.9.0.post0,six==1.17.0,test_helper @ file:///builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/dependencies/python-test-helper.tar.gz#sha256=e6a2f847f80ea54fc7f4bf564c67f48822b9049f8739584af3248c138a9e5586,typing_extensions==4.15.0,yarl==1.22.0 py313: commands[0]> coverage run --source crosslab.soa_client -m pytest ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.4.2, pluggy-1.6.0 cachedir: .tox/py313/.pytest_cache rootdir: /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python configfile: pyproject.toml plugins: aiohttp-1.1.0, asyncio-1.2.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 8 items tests/test_device_handler.py F. [ 25%] tests/test_webrtc_connection.py .... [ 75%] tests/test_websocket_connection.py .. [100%] =================================== FAILURES =================================== ________________________ test_connect_and_authenticate _________________________ ws = device_url = 'http://127.0.0.1:42173/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( > authentification_response["messageType"] != "authenticate" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ or not authentification_response["authenticated"] ): E TypeError: tuple indices must be integers or slices, not str .tox/py313/lib/python3.13/site-packages/crosslab/soa_client/device_handler.py:50: TypeError During handling of the above exception, another exception occurred: mock_server = @pytest.mark.asyncio async def test_connect_and_authenticate(mock_server): mock_server.patch("/devices/123") mock_server.get("/devices/123/websocket", payload="token") ws = mock_server.ws("/devices/123/ws") ws.expect( r'{"messageType": "authenticate", "token": "token"}', answer=r'{"messageType": "authenticate", "authenticated": true}', ) base_url = await mock_server.start() dh = DeviceHandler() > await dh.connect(base_url + "/devices/123") tests/test_device_handler.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py313/lib/python3.13/site-packages/crosslab/soa_client/device_handler.py:112: in connect await authenticate(self.ws, device_url, token, self.get_service_meta()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ws = device_url = 'http://127.0.0.1:42173/devices/123', token = 'token' services = [] async def authenticate( ws: aiohttp.ClientWebSocketResponse, device_url: str, token: str, services ): authMessage: AuthenticationMessage = { "messageType": "authenticate", "token": token, "deviceUrl": device_url, "services": services} await ws.send_json(authMessage) try: authentification_response = await receiveMessage(ws) if ( authentification_response["messageType"] != "authenticate" or not authentification_response["authenticated"] ): raise Exception() except Exception: > raise Exception("Authentication failed") E Exception: Authentication failed .tox/py313/lib/python3.13/site-packages/crosslab/soa_client/device_handler.py:55: Exception ----------------------------- Captured stderr call ----------------------------- WSMessage(type=, data=None, extra=None) ------------------------------ Captured log call ------------------------------- ERROR aiohttp.server:web_protocol.py:481 Error handling request from 127.0.0.1 Traceback (most recent call last): File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request resp = await request_handler(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/aiohttp/web_app.py", line 569, in _handle return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 94, in _handle return await expected["ws"].handle(request, self.base_url) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/tests/helpers/mock_server.py", line 38, in handle assert await self.ws.receive_str() == message["expect"].replace( "{base_url}", base_url ) AssertionError: assert '{"messageTyp...ervices": []}' == '{"messageTyp...en": "token"}' Skipping 38 identical leading characters in diff, use -v to show - ": "token"} + ": "token", "deviceUrl": "http://127.0.0.1:42173/devices/123", "services": []} DEBUG crosslab.soa_client.device_handler:device_handler.py:28 WSMessage(type=, data=None, extra=None) =============================== warnings summary =============================== tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[True]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[True] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[True]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/_pytest/fixtures.py:1182: PytestRemovedIn9Warning: 'test_webrtc_connection_data_only[False]' requested an async fixture 'server', with no plugin or hook that handled it. This is usually an error, as pytest does not natively support it. This will turn into an error in pytest 9. See: https://docs.pytest.org/en/stable/deprecations.html#sync-test-depending-on-async-fixture warnings.warn( tests/test_websocket_connection.py::test_webrtc_connection_data_only[False] /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python/.tox/py313/lib/python3.13/site-packages/pytest_asyncio/plugin.py:678: PytestDeprecationWarning: asyncio test 'test_webrtc_connection_data_only[False]' requested async @pytest.fixture 'server' in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_device_handler.py::test_connect_and_authenticate - Exceptio... =================== 1 failed, 7 passed, 4 warnings in 33.45s =================== /usr/lib/python3.13/logging/__init__.py:2243: RuntimeWarning: coroutine 'CrosslabHandler.flush' was never awaited h.flush() RuntimeWarning: Enable tracemalloc to get the object allocation traceback py313: exit 1 (35.56 seconds) /builds/FakIA/fachgebiet-iks/goldi/goldi2/crosslab/clients/soa/python> coverage run --source crosslab.soa_client -m pytest pid=21931 py313: FAIL ✖ in 1 minute 25.16 seconds coverage: install_deps> python -I -m pip install coverage coverage: freeze> python -m pip freeze --all coverage: coverage==7.11.0,pip==24.3.1,setuptools==75.8.0,wheel==0.45.1 coverage: commands[0]> coverage combine Combined data file .coverage.runner-hyvuztwq-project-4590-concurrent-0.21340.XoQVQRcx Combined data file .coverage.runner-hyvuztwq-project-4590-concurrent-0.21488.XkLjGMix Combined data file .coverage.runner-hyvuztwq-project-4590-concurrent-0.21639.XAYftZzx Combined data file .coverage.runner-hyvuztwq-project-4590-concurrent-0.21785.XwYqkyBx Combined data file .coverage.runner-hyvuztwq-project-4590-concurrent-0.21931.XApXlEox coverage: commands[1]> coverage report Name Stmts Miss Cover ---------------------------------------------------------------------------- src/crosslab/soa_client/__init__.py 0 0 100% src/crosslab/soa_client/connection.py 58 8 86% src/crosslab/soa_client/connection_webrtc.py 204 20 90% src/crosslab/soa_client/connection_websocket.py 94 69 27% src/crosslab/soa_client/device_handler.py 152 79 48% src/crosslab/soa_client/logging.py 47 30 36% src/crosslab/soa_client/message_handling.py 0 0 100% src/crosslab/soa_client/messages.py 48 0 100% src/crosslab/soa_client/service.py 17 3 82% src/crosslab/soa_client/test_helper/__init__.py 2 0 100% src/crosslab/soa_client/test_helper/connection_stub.py 28 20 29% src/crosslab/soa_client/test_helper/service_stub.py 96 2 98% ---------------------------------------------------------------------------- TOTAL 746 231 69% coverage: commands[2]> coverage xml Wrote XML report to coverage.xml py39: FAIL code 1 (80.39=setup[45.51]+cmd[34.88] seconds) py310: FAIL code 1 (73.54=setup[38.07]+cmd[35.47] seconds) py311: FAIL code 1 (74.30=setup[39.99]+cmd[34.31] seconds) py312: FAIL code 1 (85.49=setup[41.39]+cmd[44.10] seconds) py313: FAIL code 1 (85.16=setup[49.60]+cmd[35.56] seconds) coverage: OK (5.85=setup[4.60]+cmd[0.30,0.43,0.52] seconds) evaluation failed :( (404.91 seconds)