Motor de Conciliación
El motor de conciliacion es el nucleo algoritmico de Testform. Se encarga de construir el grafo de dependencias, comparar el estado deseado con el estado registrado y orquestar las mutaciones en orden topologico.
El Algoritmo de Conciliacion
Sección titulada «El Algoritmo de Conciliacion»Cuando ejecutas testform plan o testform apply, el motor realiza las siguientes fases:
- Adquisicion de Bloqueo (Locking): Adquiere un mutex distribuido en el backend de estado para evitar ejecuciones simultaneas.
- Descubrimiento y Parsing: Lee y analiza todos los archivos
.featuredentro de los directorios definidos enscopes. - Carga del Ledger de Estado: Descarga y deserializa el archivo
testform.state. - Consulta Remota (Refresh Opcional): Si no se especifico
-refresh=false, consulta las APIs remotas (GitHub, GitLab, Jira) para verificar si los recursos fueron modificados fuera de banda. - Calculo de Diferencias (Diff Computation): Compara los hashes SHA-256 y atributos clave de cada recurso.
- Construccion del Grafo Aciclico Dirigido (DAG): Ordena las operaciones segun las relaciones de dependencia (
depends_on,suite). - Ejecucion y Commit: Aplica las operaciones en orden topologico y escribe el nuevo estado con un incremento en el numero de serial.
- Liberacion de Bloqueo: Libera el mutex distribuido garantizando la integridad del ledger.
Testform resuelve el orden de ejecucion construyendo un grafo dirigido sin ciclos:
[ testplan: @tp-release-v2.5 ] | +----------+----------+ | | v v [ testcase: @tc-auth ] [ testcase: @tc-checkout ] | | +----------+----------+ | v [ testrun: @tr-build-412 ]- Los
testcasese concilian primero para garantizar que sus identidades y metadatos existan. - Los
testplanse concilian despues, vinculando los casos de prueba incluidos. - Los
testrunse registran al final, asociando los resultados de ejecucion a los casos existentes.
Drift & Resolución de Conflictos
Sección titulada «Drift & Resolución de Conflictos»Si un usuario modifica un caso de prueba directamente en la interfaz web de Jira o GitHub sin pasar por Git:
- Modo Deteccion (
plan): Testform detectara que el hash remoto difiere del hash registrado en el ledger y mostrara un diff indicando la desviacion. - Modo Restauracion (
apply): Testform sobrescribira la modificacion externa con la definicion autoritativa declarada en Git, eliminando la deriva y restaurando el estado deseado.