Skip to content

Guía de pruebas después de cambios

Esta página define el workflow local por default para correr tests después de hacer cambios en productive-k3s-core.

La idea es simple:

  1. arrancar desde un estado local limpio de tests
  2. correr el target de test que te interese
  3. pedirle al repositorio un resumen de qué tests pasaron y cuáles fallaron

Workflow local recomendado

Para el desarrollo diario, usá esta secuencia desde la raíz del repositorio:

make test-clean-artifacts
make <test-target>
make test-checkstatus-matrix

Ejemplos:

make test-clean-artifacts
make test-matrix-all
make test-checkstatus-matrix
make test-clean-artifacts
make test-local-all
make test-checkstatus-local

Cobertura local

make test-coverage genera los reportes de kcov bajo tests/coverage/ y aplica un piso obligatorio de 85% sobre los scripts de runtime distribuidos. Las herramientas de desarrollo y mantenimiento de releases quedan fuera de ese agregado porque tienen tests de contrato separados.

El baseline local actual es 85.18% (2179/2558 líneas ejecutables). Si la cobertura de runtime baja del piso, el target termina con exit code no cero.

kcov es una dependencia exclusiva de desarrollo. En Ubuntu se instala la versión fijada y verificada por checksum del repositorio con:

bash tests/bin/install-kcov.sh

El script compila kcov 43 desde su archivo fuente inmutable. CI usa Python 3.11.17; CMake y las bibliotecas firmadas de Ubuntu son prerrequisitos del runner. Ninguna de estas herramientas es un requisito del runtime de Core ni se instala en los nodos administrados.

Qué hace cada target

make test-clean-artifacts

Elimina los archivos locales que este repositorio usa como estado de tests:

  • test-artifacts/
  • runs/apply-*.json locales
  • runs/telemetry-outbox/bootstrap-*.json locales
  • runs/telemetry-outbox/bootstrap-*.status locales

Usalo antes de empezar un nuevo ciclo de validación cuando querés que los comandos de estado describan sólo la corrida actual.

make test-checkstatus-matrix

Recorre los artifacts de resultados actuales bajo test-artifacts/ e imprime un resumen corto de los estados registrados.

Reporta entradas como:

  • resultados de tests en VM escritos por tests/test-in-vm.sh
  • resultados de resumen hosted escritos por tests/test-on-gh-hosted.sh

Ignora a propósito archivos que no son el resultado top-level real del test:

  • manifests copiados de bootstrap como *-apply-manifest.json
  • artifacts públicos saneados como *-public.json

Si al menos un resultado registrado de la matriz está en fallo, make test-checkstatus-matrix termina con exit code no cero.

Si no hay artifacts de resultado, también termina con exit code no cero e indica que no pudo determinar el estado.

Targets de test más comunes

Estos son los targets root que más suelen usarse:

Target Propósito
make test-smoke Validación rápida smoke basada en Docker
make test-local-all Suite local completa sin servicios de terceros
make test-external-all Suites que pueden tocar endpoints externos, hoy telemetría
make test-core Validación VM del perfil core sobre Ubuntu 24.04
make test-core-debian12 Validación VM del perfil core sobre Debian 12
make test-core-debian13 Validación VM del perfil core sobre Debian 13
make test-matrix-smoke Matriz smoke sobre Ubuntu y Debian
make test-matrix-core Matriz core sobre Ubuntu y Debian
make test-matrix-full Matriz full stack sobre Ubuntu y Debian
make test-matrix-full-rollback Matriz full rollback sobre Ubuntu y Debian
make test-matrix-full-clean Matriz full cleanup sobre Ubuntu y Debian
make test-matrix-all Ejecuta todos los perfiles de matriz en secuencia y conserva todos los artifacts de resultado para revisar el estado final

Por qué test-matrix-all es especial

Los perfiles de matriz bajo tests/Makefile siguen validando cada perfil por separado, pero el camino agregado run-all-tests ahora limpia sólo una vez al principio.

Eso permite que este workflow funcione como esperás:

make test-clean-artifacts
make test-matrix-all
make test-checkstatus-matrix

Al final de esa secuencia, test-checkstatus-matrix todavía puede ver los artifacts acumulados de la corrida completa de matriz, en lugar de quedarse sólo con el último perfil.

Cuando un test falla

Arrancá por:

make test-checkstatus-matrix
make test-checkstatus-local
make test-checkstatus-external

Después inspeccioná los archivos de artifact correspondientes en test-artifacts/.

Comandos útiles de seguimiento:

ls -1 test-artifacts
jq . test-artifacts/<artifact>.json

Para fallos en VM, podés preservar la VM cuando haga falta:

./tests/test-in-vm.sh --platform ubuntu --image https://cloud-images.ubuntu.com/releases/noble/release-20260814/ubuntu-24.04-server-cloudimg-amd64.img --profile full --keep-vm

Y después inspeccionarla:

multipass shell <vm-name>
cd /home/ubuntu/productive-k3s-core
sudo k3s kubectl get nodes
sudo k3s kubectl get pods -A -o wide

Notas

Note

make test-checkstatus-matrix, make test-checkstatus-local y make test-checkstatus-external resumen resultados registrados por categoría. No reemplazan leer el JSON completo del artifact cuando necesitás contexto detallado de debugging.

Note

make test-clean ahora es un alias seguro para limpiar sólo artifacts. Usá make test-clean-vms o make test-clean-all cuando quieras borrar explícitamente también las VMs de test de Productive K3S.