fix(sbx-gits tools): un solo serial adb para cualquier Gradle, CMake del build, etiqueta de frío honesta + build en frío medible (R121+R122) #799

Merged
pi-landing merged 1 commit from plane/HOMELAB-2648-r121-serial-unico into live 2026-11-04 08:12:56 +00:00
Collaborator

Del Verify REAL de E1 con el script oficial de #794 (instalación OK, SMOKE OK, pero T7 no cerraba). Solo tools/ + docs + epic-test: no toca el manifiesto ni el repo de GITS.

(1) Un solo serial en todo el pod. ensure_single_serial (una sola fuente): no crea el duplicado si el emulador se autodescubre, retira el alias TCP, se queda emulator-5554, mide estabilidad en ventana y solo entonces exporta ANDROID_SERIAL; disponible como --ensure-serial para CUALQUIER tarea de Gradle, no solo dentro del smoke. --check-serial [seg] muestrea y exige exactamente 1 (rc=6 si no). [adb-local] de CHECK INFRA ahora es ROJO si adb devices != 1 (dice cuántos/cuáles y nombra el origen).

(2) CMake del build instalado por sdkmanager (pin 3.31.6, fallback 3.22.1, marcador + doctor) — el primer assemble ya no necesita red.

(3) Etiqueta honesta: arranque=frio solo si el guest arrancó de verdad (GUEST_DOWN + boot > 0); nuevo --cold-build medible (--stop + clean + --no-daemon --no-build-cache, etiqueta build=frio).

(4) Fixture 2222 y uninstall: el puerto ocupado se reporta REUTILIZADO (fixture previo) o FALLO si no habla SSH (sin AVISO ambiguo); adb uninstall distingue "no instalado (ok)" de un DELETE_FAILED real (sondeo pm path).

HALLAZGO R122 (no tocado, es plantilla): quien re-registra el alias TCP en ~10 s es el contenedor emulator: core/manifests/apps/sbx-gits/statefulset.yaml:796 (-s 127.0.0.1:5555 en la condición) y :806 (adb connect 127.0.0.1:5555 … || true cada 3 s). No hay arreglo estable desde ConfigMap ni con disconnect en bucle; el smoke lo mide, lo acota y nombra el origen. Propuesta: que ese bucle use -s emulator-5554 (o el puerto de consola) o que no haga connect. Decisión del supervisor: entra en la plantilla y el borrado único.

Comando exacto para E1 (en el pod) — serial estable ≥2 min y solo después la instrumentación:

bash /run/sbx-tools/gits-sbx-emu-smoke.sh --check-serial 120   # una muestra/10 s, 2 min, exige 1 siempre; rc=6 si no (NO corras la instrumentación)
eval "$(bash /run/sbx-tools/gits-sbx-emu-smoke.sh --ensure-serial)" && cd <checkout GITS> && ./gradlew :terminal-core:connectedDebugAndroidTest

Verify: epic-test 340/343 (los 3 rojos son H1a/H10 de staging de la carpeta de épica, ajenos: el staging lleva el cambio de R115 aún sin mergear); 14[R121] y T7[diff] verdes con 14 mutaciones rojas.

Del Verify REAL de E1 con el script oficial de #794 (instalación OK, SMOKE OK, pero T7 no cerraba). Solo `tools/` + docs + epic-test: **no** toca el manifiesto ni el repo de GITS. **(1) Un solo serial en todo el pod.** `ensure_single_serial` (una sola fuente): no crea el duplicado si el emulador se autodescubre, retira el alias TCP, se queda `emulator-5554`, mide estabilidad en ventana y solo entonces exporta `ANDROID_SERIAL`; disponible como `--ensure-serial` para CUALQUIER tarea de Gradle, no solo dentro del smoke. `--check-serial [seg]` muestrea y exige exactamente 1 (rc=6 si no). `[adb-local]` de CHECK INFRA ahora es **ROJO si `adb devices` != 1** (dice cuántos/cuáles y nombra el origen). **(2) CMake del build instalado** por sdkmanager (pin 3.31.6, fallback 3.22.1, marcador + doctor) — el primer assemble ya no necesita red. **(3) Etiqueta honesta**: `arranque=frio` solo si el guest arrancó de verdad (`GUEST_DOWN` + boot > 0); nuevo `--cold-build` medible (`--stop` + `clean` + `--no-daemon --no-build-cache`, etiqueta `build=frio`). **(4) Fixture 2222 y uninstall**: el puerto ocupado se reporta `REUTILIZADO (fixture previo)` o FALLO si no habla SSH (sin AVISO ambiguo); `adb uninstall` distingue "no instalado (ok)" de un `DELETE_FAILED` real (sondeo `pm path`). **HALLAZGO R122 (no tocado, es plantilla):** quien re-registra el alias TCP en ~10 s es el **contenedor `emulator`**: `core/manifests/apps/sbx-gits/statefulset.yaml:796` (`-s 127.0.0.1:5555` en la condición) y `:806` (`adb connect 127.0.0.1:5555 … || true` cada 3 s). No hay arreglo estable desde ConfigMap ni con disconnect en bucle; el smoke lo mide, lo acota y nombra el origen. Propuesta: que ese bucle use `-s emulator-5554` (o el puerto de consola) o que no haga `connect`. **Decisión del supervisor: entra en la plantilla y el borrado único.** **Comando exacto para E1 (en el pod)** — serial estable ≥2 min y solo después la instrumentación: ``` bash /run/sbx-tools/gits-sbx-emu-smoke.sh --check-serial 120 # una muestra/10 s, 2 min, exige 1 siempre; rc=6 si no (NO corras la instrumentación) eval "$(bash /run/sbx-tools/gits-sbx-emu-smoke.sh --ensure-serial)" && cd <checkout GITS> && ./gradlew :terminal-core:connectedDebugAndroidTest ``` Verify: epic-test 340/343 (los 3 rojos son `H1a`/`H10` de staging de la carpeta de épica, ajenos: el staging lleva el cambio de R115 aún sin mergear); `14[R121]` y `T7[diff]` verdes con 14 mutaciones rojas.
T7-R121: un solo serial adb para cualquier Gradle (ensure_single_serial + adb-local exige 1), CMake del build instalado, etiqueta de frio honesta + build en frio medible, fixture 2222 y uninstall distinguidos (HOMELAB-2648)
Some checks failed
0/0 projects applied successfully.
CI Review / receiver-test (pull_request) Successful in 4s
CI Review / runner-manifest-test (pull_request) Successful in 4s
CI Review / helm-validate (pull_request) Successful in 10s
Lint & Validate / shellcheck (pull_request) Successful in 7s
CI Review / alert-receiver-test (pull_request) Successful in 21s
Lint & Validate / yaml-lint (pull_request) Successful in 28s
CI Review / record-sql-test (pull_request) Successful in 1m53s
Lint & Validate / terraform-validate (pull_request) Successful in 3m16s
CI Review / cockpit-test (pull_request) Failing after 5m13s
CI Review / cockpit-e2e (pull_request) Successful in 6m57s
CI Review / dispatcher-test (pull_request) Successful in 7m42s
fcc08466b9
pi-landing force-pushed plane/HOMELAB-2648-r121-serial-unico from fcc08466b9
Some checks failed
0/0 projects applied successfully.
CI Review / receiver-test (pull_request) Successful in 4s
CI Review / runner-manifest-test (pull_request) Successful in 4s
CI Review / helm-validate (pull_request) Successful in 10s
Lint & Validate / shellcheck (pull_request) Successful in 7s
CI Review / alert-receiver-test (pull_request) Successful in 21s
Lint & Validate / yaml-lint (pull_request) Successful in 28s
CI Review / record-sql-test (pull_request) Successful in 1m53s
Lint & Validate / terraform-validate (pull_request) Successful in 3m16s
CI Review / cockpit-test (pull_request) Failing after 5m13s
CI Review / cockpit-e2e (pull_request) Successful in 6m57s
CI Review / dispatcher-test (pull_request) Successful in 7m42s
to 93ab3f3674
All checks were successful
CI Review / receiver-test (pull_request) Successful in 3s
CI Review / runner-manifest-test (pull_request) Successful in 5s
CI Review / helm-validate (pull_request) Successful in 9s
Lint & Validate / shellcheck (pull_request) Successful in 8s
CI Review / alert-receiver-test (pull_request) Successful in 20s
Lint & Validate / yaml-lint (pull_request) Successful in 18s
CI Review / record-sql-test (pull_request) Successful in 1m34s
Lint & Validate / terraform-validate (pull_request) Successful in 2m10s
CI Review / cockpit-test (pull_request) Successful in 3m12s
CI Review / dispatcher-test (pull_request) Successful in 4m25s
CI Review / cockpit-e2e (pull_request) Successful in 5m20s
2026-11-04 08:01:34 +00:00
Compare
pi-landing deleted branch plane/HOMELAB-2648-r121-serial-unico 2026-11-04 08:12:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
operator-review
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Homelab/infra-core!799
No description provided.