fix(ci): address flaky test infrastructure issues#7706
Conversation
Overall package sizeSelf size: 4.93 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.0.0 | 81.15 kB | 815.98 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7706 +/- ##
==========================================
+ Coverage 80.31% 80.35% +0.04%
==========================================
Files 739 741 +2
Lines 31946 32004 +58
==========================================
+ Hits 25657 25718 +61
+ Misses 6289 6286 -3 Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2026-03-06 21:32:54 Comparing candidate commit 03a2197 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 231 metrics, 29 unstable metrics. |
- Add readiness wait after `docker compose up -d testagent` so tests don't start sending multipart data before busboy is ready - Copy servicebus emulator config file and restart emulator in the azure-service-bus CI job (queue.1/topic.1 were missing because GitHub Actions services don't support volume mounts; the azure-functions job already does this with docker cp + restart) - Wait for emulator to be ready after restart before running tests Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
a3b82c3 to
b33d345
Compare
…service-bus SQL Server Edge takes 45-90s to start; without a health check the Service Bus emulator connects before SQL is ready. Add a health check using bash TCP built-in (nc is not installed in the azure-sql-edge image) so GitHub Actions gates job steps until SQL is healthy. After docker restart, wait for port 5672 to be ready before running tests. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
7511b88 to
b2a6f6a
Compare
…us job The azure-service-bus plugin tests use the built-in OOB emulator config (queue.1, topic.1), so copying a custom config file and restarting the emulator is not needed. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
* fix(ci): address flaky test infrastructure issues - Add readiness wait after `docker compose up -d testagent` so tests don't start sending multipart data before busboy is ready - Copy servicebus emulator config file and restart emulator in the azure-service-bus CI job (queue.1/topic.1 were missing because GitHub Actions services don't support volume mounts; the azure-functions job already does this with docker cp + restart) - Wait for emulator to be ready after restart before running tests Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(ci): add SQL Edge health check and emulator ready-wait for azure-service-bus SQL Server Edge takes 45-90s to start; without a health check the Service Bus emulator connects before SQL is ready. Add a health check using bash TCP built-in (nc is not installed in the azure-sql-edge image) so GitHub Actions gates job steps until SQL is healthy. After docker restart, wait for port 5672 to be ready before running tests. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(ci): remove unnecessary emulator config copy from azure-service-bus job The azure-service-bus plugin tests use the built-in OOB emulator config (queue.1, topic.1), so copying a custom config file and restarting the emulator is not needed. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --------- Co-authored-by: Claude Sonnet 4.6 <[email protected]>
* fix(ci): address flaky test infrastructure issues - Add readiness wait after `docker compose up -d testagent` so tests don't start sending multipart data before busboy is ready - Copy servicebus emulator config file and restart emulator in the azure-service-bus CI job (queue.1/topic.1 were missing because GitHub Actions services don't support volume mounts; the azure-functions job already does this with docker cp + restart) - Wait for emulator to be ready after restart before running tests Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(ci): add SQL Edge health check and emulator ready-wait for azure-service-bus SQL Server Edge takes 45-90s to start; without a health check the Service Bus emulator connects before SQL is ready. Add a health check using bash TCP built-in (nc is not installed in the azure-sql-edge image) so GitHub Actions gates job steps until SQL is healthy. After docker restart, wait for port 5672 to be ready before running tests. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(ci): remove unnecessary emulator config copy from azure-service-bus job The azure-service-bus plugin tests use the built-in OOB emulator config (queue.1, topic.1), so copying a custom config file and restarting the emulator is not needed. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --------- Co-authored-by: Claude Sonnet 4.6 <[email protected]>
Summary
Debugger / busboy: Added a readiness health-check after
docker compose up -d testagent. Previously, tests could start sending multipart form data to the test agent container before it was ready to accept connections, causing busboy to receive truncated requests and throwError: Unexpected end of form.Azure Service Bus / queue not found: The
azure-service-busCI job was missing the config-copy + emulator-restart steps that theazure-functionsjob already has. GitHub Actions services don't support volume mounts, so the servicebus emulator was starting with its default (empty) config — noqueue.1ortopic.1existed. Addeddocker cpto injectservicebus-emulator-config.jsonand adocker restartto apply it.Risk analysis
testagent health check
lambda,aws-sdk, and everything routed throughplugins/test. If the/infoendpoint doesn't exist or returns a non-2xx while booting,curl -sfwill keep retrying until the 30s timeout and then fail — turning a flake into a hard breakage across many jobs./infoendpoint is a standard diagnostic endpoint on the DD APM test agent; this pattern is well-established. 30s timeout should be sufficient on normal runners, though a cold-pull on a slow runner could hit it.Azure Service Bus config copy + restart
docker cptiming: GitHub Actions marks services "running" without a healthcheck, so the emulator may not have created/ServiceBus_Emulator/ConfigFiles/yet whendocker cpruns. A failure here would be a hard error rather than a flake.docker restart: relies on the implicit time taken bytestagent/start+nodesetup +installinsideplugins/test. Theazure-functionsjob uses the same pattern and works in practice, which is the main evidence this is safe.Test plan
Error: Unexpected end of form from busboyazure-service-busjob no longer fails with "Queue not found"🤖 Generated with Claude Code