Conversation
Replace the local Android emulator runner (reactivecircus/android-emulator-runner) with emulator.wtf cloud-based testing. This removes the need for KVM setup, AVD caching, and local emulator management in CI. - Use emulator-wtf/configure-credentials@v1 with OIDC (no secrets needed) - Run tests for android-test, android-test-app, and regression-test separately - Add emulator.wtf CLI instructions to android-test README - Keep existing API level matrix (21, 23, 29, 34)
Pin emulator-wtf/configure-credentials to commit SHA to fix Semgrep warnings about unpinned third-party actions. Add the emulator.wtf OIDC configuration ID. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
android-test and regression-test are Android library modules, not app modules, so they don't produce an app APK. Use the library-test parameter instead of test for emulator.wtf run-tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
android-test-debug-androidTest - There were errors while running the tests
|
yschimke
added a commit
that referenced
this pull request
Apr 21, 2026
…e edges Real timeout propagation (#19). QuicBodySource and QuicRequestBodySink used to return Timeout.NONE, so OkHttpClient.readTimeout / writeTimeout on the buffered source/sink had no effect. Both now expose a mutable Timeout seeded from chain.readTimeoutMillis / writeTimeoutMillis, and honour both the timeout value and any deadline callers set on top. QuicBodySource's bodyQueue.take() becomes a bounded poll; sink writes translate the remaining budget into sendBodyChunk's existing timeout parameter, so the I/O-thread retry loop bails at the right moment too. Pool lock scoped per origin (#8). Quiche4jEngine had a process-wide ReentrantLock around acquire() — a call to origin B waited for origin A's handshake. Replaced with ConcurrentHashMap.compute so handshakes to distinct keys run in parallel; only same-origin races serialise, which is the correct behaviour (the second call reuses the pooled connection the first one produces). I/O thread joined on pool close (#10). QuicPooledConnection.close now briefly joins the I/O thread so tests that build+tear-down engines in sequence don't leak threads. Soft-cast the chain (#14). Quiche4jInterceptor used `chain as RealInterceptorChain`. A test-wrapped chain would have thrown CCE at the user's call site; now we fall through to the standard transport if we can't recognise the chain. HttpsAwareDns polish (#15/#16). Three fixes in one: a 5-minute TTL on cached lookups (unbounded caching meant a transient DNS outage poisoned the cache forever), a single resolver.lookup call instead of two on the "no h3 record" fallback path, and a bounded default executor (newFixedThreadPool(2)) shared across instances instead of newCachedThreadPool. AltSvcEntry parse edges (#21/#22). splitAuthority now handles bracketed IPv6 literals (`[2001:db8::1]:443`) instead of splitting on the last colon of the v6 address. splitAtCommas no longer uses an integer depth counter that got stuck on unbalanced quotes — malformed entries drop out, the rest of the header parses normally. Three new AltSvc tests cover the bracketed-IPv6, unbalanced-quote, and unbracketed-IPv6 rejection paths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
yschimke
added a commit
that referenced
this pull request
Apr 21, 2026
No code changes — just refreshes the review doc so it reflects which items have landed (#5, #6, #7, #8, #10, #11, #12, #14, #15, #16, #17, #19, #21, #22) and which are still parked (#9, #13, #18, #20). Item #13's block-via-latch is now block-via-CompletableFuture bounded by the write-timeout, so the concern is narrower than it was. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Replace the local Android emulator runner (reactivecircus/android-emulator-runner) with emulator.wtf cloud-based testing. This removes the need for KVM setup, AVD caching, and local emulator management in CI.