Skip to content

Fluentbit log test fails sometimes

Summary

The helm test for the testkit seems to fail sometimes with missing logs:

cert-generator-grid-test-cert 12:55:05 ============================= test session starts ==============================
cert-generator-grid-test-cert 12:55:05 platform linux -- Python 3.12.11, pytest-8.4.0, pluggy-1.6.0 -- /usr/local/bin/python3
cert-generator-grid-test-cert 12:55:05 cachedir: //.pytest-cache
cert-generator-grid-test-cert 12:55:05 rootdir: /scripts
cert-generator-grid-test-cert 12:55:05 plugins: mock-3.14.1, cov-6.1.1
cert-generator-grid-test-cert 12:55:06 collecting ... collected 1 item
cert-generator-grid-test-cert 12:55:06 
cert-generator-grid-test-cert 12:55:06 scripts/test_logs.py::test_inspect_service_log 
cert-generator-grid-test-cert 12:55:06 -------------------------------- live log call ---------------------------------
cert-generator-grid-test-cert 12:55:06 DEBUG    urllib3.connectionpool:connectionpool.py:241 Starting new HTTP connection (1): testkit:8000
cert-generator-grid-test-cert 12:55:06 DEBUG    urllib3.connectionpool:connectionpool.py:544 http://testkit:8000 "GET /logs.ndjson HTTP/1.1" 200 None
cert-generator-grid-test-cert 12:55:06 INFO     root:test_logs.py:38 found all requested events within 9.0 seconds: ['1749646483.0: Created pod: cert-generator-grid-generate-certificates-fbgbt', '1749646492.0: Job completed']
cert-generator-grid-test-cert 12:55:06 FAILED                                                                   [100%]
cert-generator-grid-test-cert 12:55:06 
cert-generator-grid-test-cert 12:55:06 =================================== FAILURES ===================================
cert-generator-grid-test-cert 12:55:06 ___________________________ test_inspect_service_log ___________________________
cert-generator-grid-test-cert 12:55:06 
cert-generator-grid-test-cert 12:55:06     def test_inspect_service_log():
cert-generator-grid-test-cert 12:55:06         found = {"log": False, "events": False}
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06         lines = []
cert-generator-grid-test-cert 12:55:06         selected_events = []
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06         for line in requests.get("http://testkit:8000/logs.ndjson").content.splitlines():
cert-generator-grid-test-cert 12:55:06             try:
cert-generator-grid-test-cert 12:55:06                 line_dict = json.loads(line.decode("utf-8"))
cert-generator-grid-test-cert 12:55:06             except json.JSONDecodeError:
cert-generator-grid-test-cert 12:55:06                 logging.error("Could not parse line as JSON: '%s'", line)
cert-generator-grid-test-cert 12:55:06                 raise
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06             if (
cert-generator-grid-test-cert 12:55:06                 line_dict.get("kubernetes", {}).get("container_name")
cert-generator-grid-test-cert 12:55:06                 == "generate-certificates"
cert-generator-grid-test-cert 12:55:06             ):
cert-generator-grid-test-cert 12:55:06                 lines.append(line_dict["log"])
cert-generator-grid-test-cert 12:55:06                 if (
cert-generator-grid-test-cert 12:55:06                     "Certificates generated and stored" in line_dict["log"]
cert-generator-grid-test-cert 12:55:06                     or "Certificates already generated" in line_dict["log"]
cert-generator-grid-test-cert 12:55:06                 ):
cert-generator-grid-test-cert 12:55:06                     found["log"] = True
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06             if (
cert-generator-grid-test-cert 12:55:06                 line_dict.get("involvedObject", {}).get("name", None)
cert-generator-grid-test-cert 12:55:06                 == "cert-generator-grid-generate-certificates"
cert-generator-grid-test-cert 12:55:06             ):
cert-generator-grid-test-cert 12:55:06                 selected_events.append(line_dict)
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06                 if line_dict.get("message") == "Job completed":
cert-generator-grid-test-cert 12:55:06                     logging.info(
cert-generator-grid-test-cert 12:55:06                         "found all requested events within %s seconds: %s",
cert-generator-grid-test-cert 12:55:06                         selected_events[-1]["date"] - selected_events[0]["date"],
cert-generator-grid-test-cert 12:55:06                         [f"{c['date']}: {c['message']}" for c in selected_events],
cert-generator-grid-test-cert 12:55:06                     )
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06                     found["events"] = True
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06             if found["log"] and found["events"]:
cert-generator-grid-test-cert 12:55:06                 break
cert-generator-grid-test-cert 12:55:06     
cert-generator-grid-test-cert 12:55:06 >       assert found["log"], "Did not find expected entries in logs, lines: " + (
cert-generator-grid-test-cert 12:55:06             "\n".join(lines)
cert-generator-grid-test-cert 12:55:06         )
cert-generator-grid-test-cert 12:55:06 E       AssertionError: Did not find expected entries in logs, lines: 
cert-generator-grid-test-cert 12:55:06 E       assert False
cert-generator-grid-test-cert 12:55:06 
cert-generator-grid-test-cert 12:55:06 scripts/test_logs.py:49: AssertionError

See job: https://gitlab.cta-observatory.org/cta-computing/dpps/aiv/dpps-aiv-toolkit/-/jobs/367187