Conversation
- Add filter_gradle_log.py: streaming filter that emits one line per passing test and full context (STARTED + stdout + exception) for failing/crashed tests; [TEST::INFO] lines suppressed on pass - Pipe all four test job types through tee + filter; raw log preserved in build/test-raw.log and collected as artifact on failure - Add GradleStyleTestListener to ProfilerTestRunner so musl/Exec jobs emit STARTED/PASSED/FAILED markers matching Gradle's Test task format - Redirect ASAN/UBSAN/TSAN output to /tmp/*san_%p.log via log_path so sanitizer reports no longer pollute the build log; collected as artifacts - Collect sanitizer logs in prepare_reports.sh alongside hs_err files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ProfilerTestPlugin was only emitting passed/skipped/failed events; without STARTED the filter never entered buffering mode and passed everything through unchanged. Also suppress [TEST::INFO] lines in OUTSIDE state (class-level init output that precedes any STARTED marker) since they are noise when no test has failed; the raw log still contains them. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GHA defaults to sh (busybox) inside Alpine containers; PIPESTATUS is bash-only and caused a 'bad substitution' error. bash is already installed in Setup OS, just needs to be declared for the Test step. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CI Test ResultsRun: #22305234112 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Failed Testsglibc-amd64/asan / 8-j9Job: View logs No detailed failure information available. Check the job logs. Summary: Total: 70 | Passed: 69 | Failed: 1 Updated: 2026-02-23 12:18:02 UTC |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?:
Adds a streaming log filter to CI test jobs that compresses verbose Gradle test output: passing tests emit a single summary line, failing tests emit full context (stdout/stderr including
[TEST::INFO]lines, exception and stack trace), and crashed tests emit a warning with their buffered output. The unfiltered raw log is preserved viateeand collected as an artifact on failure.Motivation:
Sanitized builds (asan/tsan) produce extremely noisy CI logs — per-test debug output, sanitizer stack traces, and profiler initialization messages make it very hard to spot actual failures. The filtered view makes failures immediately visible without having to scroll through thousands of irrelevant lines.
Additional Notes:
filter_gradle_log.py: streaming state-machine filter (OUTSIDE → BUFFERING → FAILING).[TEST::INFO]lines are suppressed for passing tests and in class-level init context (OUTSIDE state), but shown in full for failing tests.ProfilerTestPlugin.kt: added"started"totestLogging.events— without it the filter never entered buffering mode.ProfilerTestRunner.java: addedGradleStyleTestListenerthat emits STARTED/PASSED/FAILED/SKIPPED markers to stdout, making the musl/Exec path produce the same format as the glibc/Test-task path.ConfigurationPresets.kt: addedlog_path=/tmp/*san_%p.logto ASAN/UBSAN/TSAN options so sanitizer reports go to per-process files instead of polluting the build log; collected as artifacts.prepare_reports.sh: collectstest-raw.logand sanitizer log files alongside existing artifacts.shell: bash— GHA defaults to busyboxshinside Alpine containers, which does not supportPIPESTATUS.How to test the change?:
Trigger a sanitized build (add
test:asanortest:tsanlabel to a PR) and verify that the CI log shows only one line per passing test and full context for any failures. The raw unfiltered log is available astest-raw.login the test-reports artifact.For Datadog employees:
credentials of any kind, I've requested a review from
@DataDog/security-design-and-guidance.