Repository navigation
Fix device fixture allocation and preserve per-case diagnostics - #140
Merged
Merged
Conversation
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.
Device suites could fail before instrumentation when a TCP-selected port was already occupied by UDP. Allocate a port available for both protocols, with bounded retries only for allocation collisions before fixture startup.
Wait for the previous app process and activities, then use a unique Logcat marker's precise device timestamp as the next case's cursor. Avoid unreliable
logcat -con API 26. Decode Logcat with UTF-8 replacement so malformed device log bytes cannot abort evidence collection, cleanup or JUnit reporting; retain strict decoding for fixture credentials/configuration and other commands.Collect a bounded sanitized diagnostic tail after VPN cleanup on both successful and failed cases. Capture setup/body/cleanup failure evidence without hiding the original error or skipping subsequent cleanup.
Validation: Python checks (91 tests); Android JVM (367 tests), lint, debug and unsigned-release checks; instrumentation APK build. Local API 26/35 smoke passed VPN consent denial and real TUN/JNI traffic/stop/restart with a private HTTPS fixture. Regressions cover each lifecycle failure phase, multiple errors, skips, port collisions, precise log cursors, and real subprocess output containing invalid UTF-8 while preserving both successful and failed JUnit verdicts. Full API 26/35 integration runs in CI.