Skip to content

Fix test-ci locally #180

@madwort

Description

@madwort

This passes on GHA CI, but fails on @bloodearnest 's local with:

wavy@bebop:~/bennett/opensafely-sysadmin/services/otel-gateway (madwort/remove-grafana)$ just test-ci
test -e .env || cp dotenv-sample .env
mock-honeycomb
3ab7d1e3fb5b7508f78696ff1b76db2ba0e5a02e8b128c8711557fbcaf126af6
test -e .env || cp dotenv-sample .env
docker build . -t $IMAGE_NAME
[+] Building 1.8s (7/7) FINISHED
 => [internal] load .dockerignore                                                                                                                                                                                                                                            0.1s
 => => transferring context: 2B                                                                                                                                                                                                                                              0.0s
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                         0.1s
 => => transferring dockerfile: 896B                                                                                                                                                                                                                                         0.0s
 => [internal] load metadata for docker.io/otel/opentelemetry-collector-contrib:0.84.0                                                                                                                                                                                       1.6s
 => [internal] load build context                                                                                                                                                                                                                                            0.0s
 => => transferring context: 1.18kB                                                                                                                                                                                                                                          0.0s
 => [1/2] FROM docker.io/otel/opentelemetry-collector-contrib:0.84.0@sha256:55d008bc28344c3178645d40e7d07df30f9d90abe4b53c3fc4e5e9c0295533da                                                                                                                                 0.0s
 => CACHED [2/2] COPY config.yaml /etc/otelcol-contrib/config.yaml                                                                                                                                                                                                           0.0s
 => exporting to image                                                                                                                                                                                                                                                       0.0s
 => => exporting layers                                                                                                                                                                                                                                                      0.0s
 => => writing image sha256:327a3bf2aa5c6a598bb2de6a18086c1a97123b97f49af2c7e2b8c381923db8c9                                                                                                                                                                                 0.0s
 => => naming to docker.io/library/otel-gateway                                                                                                                                                                                                                              0.0s
docker rm --force otel-gateway 2>/dev/null || true
otel-gateway
docker run --name otel-gateway -e BASIC_AUTH_USER=$BASIC_AUTH_USER -e BASIC_AUTH_PASSWORD=$BASIC_AUTH_PASSWORD -e HONEYCOMB_KEY -d -e HONEYCOMB_ENDPOINT -e LOG_LEVEL=debug -p 4318:4318 --add-host=host.docker.internal:host-gateway otel-gateway
feae4a4238e8f80b4a57245548ef942d078bdb4d2db21fbca5724868e70b765e
test -e .env || cp dotenv-sample .env
============================================================================================================================== test session starts ===============================================================================================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/wavy/bennett/opensafely-sysadmin/services/otel-gateway
collected 2 items
tests.py F.                                                                                                                                                                                                                                                                [100%]
==================================================================================================================================== FAILURES ====================================================================================================================================
____________________________________________________________________________________________________________________________ test_trace[trace_file0] _____________________________________________________________________________________________________________________________
trace_file = PosixPath('exported/honeycomb/traces.json')
    @pytest.mark.parametrize("trace_file", trace_files)
    def test_trace(trace_file):
        generate_test_trace()
>       output = get_output(trace_file)
tests.py:85:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
path = PosixPath('exported/honeycomb/traces.json')
    def get_output(path):
        # wait for file to be written to, typically a few hundred 100ms
        timeout_count = 0
        while path.exists() and path.stat().st_size == 0:
            time.sleep(0.01)
            timeout_count = timeout_count + 1
            if timeout_count > 500:
>               raise Exception(
                    "Test timed out - no output written to file after 5 seconds"
                )
E               Exception: Test timed out - no output written to file after 5 seconds
tests.py:64: Exception
------------------------------------------------------------------------------------------------------------------------------- Captured log call --------------------------------------------------------------------------------------------------------------------------------
ERROR    opentelemetry.sdk.trace.export:__init__.py:116 Exception while exporting Span.
Traceback (most recent call last):
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
    response = conn.getresponse()
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
    httplib_response = super().getresponse()
  File "/usr/lib/python3.10/http/client.py", line 1375, in getresponse
    response.begin()
  File "/usr/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.10/http/client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.10/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
    retries = retries.increment(
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
    raise reraise(type(error), error, _stacktrace)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/util/util.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 534, in _make_request
    response = conn.getresponse()
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/urllib3/connection.py", line 516, in getresponse
    httplib_response = super().getresponse()
  File "/usr/lib/python3.10/http/client.py", line 1375, in getresponse
    response.begin()
  File "/usr/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.10/http/client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.10/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/opentelemetry/sdk/trace/export/__init__.py", line 113, in on_end
    self.span_exporter.export((span,))
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py", line 189, in export
    return self._export_serialized_spans(serialized_data)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py", line 159, in _export_serialized_spans
    resp = self._export(serialized_data)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py", line 133, in _export
    return self._session.post(
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/requests/sessions.py", line 637, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/home/wavy/bennett/opensafely-sysadmin/services/otel-gateway/.venv/lib/python3.10/site-packages/requests/adapters.py", line 682, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
============================================================================================================================ short test summary info =============================================================================================================================
FAILED tests.py::test_trace[trace_file0] - Exception: Test timed out - no output written to file after 5 seconds
========================================================================================================================== 1 failed, 1 passed in 6.48s ===========================================================================================================================
error: Recipe `run-python` failed with exit code 1
error: Recipe `test-ci` failed with exit code 1```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions