Skip to content

android-ech has been failing on main since a docs-only commit #29

Description

@yschimke

The android-ech workflow has been red on main for four consecutive pushes, and the status page's picture of that suite is stale as a result.

What is failing

:android-ech:connectedDebugAndroidTest. The Gradle job summary shows :ech-fixture:runEchFixture succeeding (✅) and :android-ech:connectedDebugAndroidTest failing (❌), so the fixture containers start and the instrumentation step is what dies.

History

Commit Result What it changed
e861bc6 last green — the Pages site (#3)
a6fac14 README.md and site/** only (#23)
907867f the network suite (#2)
983ed8c pages.yml enablement (#25)

The first failure, a6fac14, touched nothing but documentation and the static site. That rules out a code change in that commit as the cause and points at the emulator, the runner image, or something time-dependent rather than at the suite itself.

What the artifact says

The uploaded android-ech-test-results-pinned-snapshot is 1490 bytes and contains no androidTest-results XML at all — only run-metadata.json. So the job died before any test could report a result. That is the case jobStatus in run-metadata.json exists for, and the status page is showing it correctly; there is simply nothing else to show.

Where I got stuck

GitHub's job-log API returns only the post-job cleanup tail for this job however I ask for it — tail_lines up to 260, and failed_only on the run — so I never saw the actual error. Diagnosing this needs the raw log downloaded from the web UI, or a workflow_dispatch re-run with more logging.

Candidates worth checking first

  • The emulator failing to boot or adb losing the device — the run does terminate an orphan adb process during cleanup.
  • The API 37 system image moving, or ANDROID_AVD_HOME / snapshot caching changing under the runner.
  • adb reverse not being set up in time, which would make every test fail rather than the job die — less likely given no XML at all.
  • Something in the ECH fixture's published ports file arriving late, since run-ech-test.sh couples the fixture and the instrumentation run.

Why it matters

The daily run is the point of this repository, and one of the three workflows has not produced a usable result in four pushes. It is also the suite with no independent coverage: network's EchTest reports on the public ECH servers, and android-ech is the only thing asserting the client behaviour against a fixture nobody else can change.


Resolved

Green on main since a320bc1, and green for every run since:

Run Commit Result
19:56 a320bc1
20:06 5aeebf8
20:14 4115162
20:20 103a361

I can't attribute the fix to one commit without bisecting, and it isn't worth doing now. The plausible candidates all landed in the same window: the emulator-readiness change (#31), giving OkHttp the application context before the suites run (#37), and a run of toolchain bumps — AGP to 9.3.1 (#45), Gradle to 9.7.0 (#48), Kotlin to 2.4.10 (#46) — any of which could plausibly have moved an instrumentation run that was dying before it could report.

Closing as fixed. If it returns, the useful thing this issue leaves behind is the diagnostic dead end: the job-log API truncates before the error, so the raw log from the web UI is the way in.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions