Files
fn_registry/functions/infra/e2e_run_checks.md
T
egutierrez 750b7abcd5 chore: auto-commit (97 archivos)
- .claude/CLAUDE.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- bash/functions/infra/build_cpp_windows.sh
- cpp/CMakeLists.txt
- cpp/PATTERNS.md
- cpp/framework/app_base.cpp
- cpp/framework/app_base.h
- dev/issues/README.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:11:24 +02:00

2.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
e2e_run_checks function go infra 1.0.0 impure func E2ERunChecks(checks []E2ECheck, workDir string) ([]CheckResult, error) Ejecuta una lista de E2ECheck en orden y retorna un CheckResult por check. Soporta comandos de shell (via bash -c), health checks HTTP, y referencias a otros artefactos (Ref, actualmente skip). Los checks individuales que fallan no abortan la ejecucion del resto.
e2e
testing
infra
checks
validation
monitoring
pipeline
health_check_http_go_infra
E2ECheck_go_infra
CheckResult_go_infra
false error_go_core
bytes
context
fmt
os/exec
strings
time
true
todos los checks pasan con exit 0
check falla por exit code incorrecto
check falla por stdout_contains no encontrado
check falla por timeout de comando
functions/infra/e2e_run_checks_test.go functions/infra/e2e_run_checks.go
name desc
checks Lista de E2ECheck declarados en app.md::e2e_checks. Se ejecutan en el orden del slice.
name desc
workDir Directorio de trabajo para los subprocesos. Usar string vacio para heredar el directorio del proceso actual.
Slice de CheckResult con un resultado por cada check de entrada. El error solo indica fallo de infraestructura (imposible iniciar el proceso, workDir invalido), no fallos individuales de checks.

Ejemplo

zero := 0
checks := []infra.E2ECheck{
    {ID: "api-alive", Health: "http://localhost:8080/health", TimeoutS: 30},
    {ID: "data-ok", Cmd: "psql $DB_URL -c 'SELECT 1'", ExpectExit: &zero},
    {ID: "schema-v3", Cmd: "migrate status", ExpectStdoutContains: "version: 3"},
}

results, err := infra.E2ERunChecks(checks, "/opt/apps/myapp")
for _, r := range results {
    fmt.Printf("%s: %s (%dms)\n", r.ID, r.Status, r.DurationMs)
}

Comportamiento por tipo de check

Campo presente Comportamiento
Solo Cmd (foreground) Ejecuta con bash -c, captura stdout/stderr, evalua ExpectExit y ExpectStdoutContains
Cmd terminando en & Lanza en background, no espera exit, pasa inmediatamente al paso Health
Solo Health Sondea el endpoint HTTP hasta 200 o timeout
Cmd + Health Ejecuta Cmd primero, luego sondea Health
Solo Ref skip con error "ref handler not implemented"
Ninguno skip

Notas

Los comandos background (terminan en &) son utiles para iniciar servicios y luego verificar su salud via Health. Se asume exit 0 inmediato; si el proceso no levanta antes del timeout del health check, el check falla.

Stdout y stderr se truncan a 4KB por check para evitar resultados excesivamente grandes.

La implementacion de Ref (cross-service checks) esta reservada para issue posterior.