Compartir a través de


Reboot

TAEF permite que una prueba especifique que puede causar o requerir que el equipo se reinicie. La característica consta de dos a tres componentes: metadatos para marcar la prueba como posiblemente causa o requerir un reinicio, una API para solicitar que TAEF realice un reinicio o notifique a TAEF un reinicio pendiente iniciado por una prueba y una opción de comando para optar por ejecutar estas pruebas al ejecutar localmente.

Comportamiento

La semántica concreta de reiniciar el equipo requiere algunos cambios en el modelo de ejecución de TAEF, las garantías de las operaciones de configuración y limpieza, y el comportamiento de éxito y error.

  • El comportamiento de reinicio solo está disponible para una prueba (con los metadatos adecuados), no para los accesorios (configuración y limpieza).
  • Si la API de reinicio se usa desde cualquier lugar distinto de una prueba con el marcado adecuado, la función no devolverá. En su lugar, TAEF mata el proceso de prueba. Esto representa un error en la forma en que se escribió la prueba y se debe corregir el código de prueba.
  • Los accesorios de prueba no se ejecutarán en el límite de reinicio. Esto significa que las operaciones de desmontaje no se ejecutan antes del reinicio (independientemente de si la prueba inicia el reinicio o las solicitudes que TAEF provocan el propio reinicio) y las operaciones de configuración no se ejecutarán después del reinicio.
  • El registro (y, por tanto, los errores de registro) se omitirá desde el momento en que notifique o solicite un reinicio hasta que finalice la prueba.

Metadatos

Para habilitar el uso de las API de reinicio, se debe marcar una prueba estableciendo los metadatos rebootPossible en "true". Estos metadatos obedecen las reglas habituales de herencia de metadatos, por lo que se pueden especificar en el nivel de clase si alguna prueba de la clase puede reiniciarse (aunque dada la naturaleza bastante pesada del reinicio, sería aconsejable tomar decisiones explícitas sobre qué prueba puede y no puede iniciar reinicios). Consulte la documentación sobre creación de pruebas en C++ y Pruebas de creación en C# para obtener ejemplos de especificación de metadatos.

API

Hay dos funciones principales para controlar los reinicios de la máquina:

  • Reboot(Option) solicita que TAEF inicie un reinicio de la máquina de prueba.
  • RebootCustom(Option) notifica a TAEF que la prueba provocará un reinicio de la máquina de prueba. Esta API también admite el bloqueo del sistema. TAEF garantizará que los datos aplicables se vacían después de que la API vuelva.

El parámetro Option especifica el comportamiento de reanudación, uno de los siguientes:

  • Vuelva a ejecutarse, lo que provoca que TAEF vuelva a ejecutar la misma prueba después de que se haya producido el reinicio.
  • Continuar, lo que provoca que TAEF ejecute la siguiente prueba después de que se haya producido el reinicio.

Nativo

Acceda a las API de reinicio incluyendo el encabezado Interruption.h y llamando a las funciones en el espacio de nombres WEX::TestExecution::Interruption . Las cuatro llamadas posibles son:

using namespace WEX::TestExecution;
Interruption::Reboot(RebootOption::Rerun);
Interruption::Reboot(RebootOption::Continue);
Interruption::RebootCustom(RebootOption::Rerun);
Interruption::RebootCustom(RebootOption::Continue);

Administrado

Llame a cualquiera de los dos métodos de la clase estática De interrupción en WEX. Espacio de nombres TestExecution , que se encuentra en Te.Managed.dll:

using WEX.TestExecution;
Interruption.Reboot(RebootOption.Rerun);
Interruption.Reboot(RebootOption.Continue);
Interruption.RebootCustom(RebootOption.Rerun);
Interruption.RebootCustom(RebootOption.Continue);

Uso del símbolo del sistema

El uso ideal para esta característica es ejecutar pruebas TAEF que potencialmente se reiniciarán con la ejecución entre máquinas o a través de WTT. En estos casos, TAEF habilita la ejecución de reinicio implícitamente* porque no debe interrumpir el flujo de trabajo. Si está ejecutando pruebas de reinicio manualmente en el equipo local o necesita invalidar la ruta de acceso predeterminada que TAEF usa para almacenar en caché su estado, tendrá que optar explícitamente por reiniciar las pruebas. Si no lo hace, cualquier prueba de reinicio se marcará como bloqueada. Para habilitar las pruebas de reinicio al ejecutarse localmente, use el siguiente argumento de comando:

Te.exe /rebootStateFile:MyRestartFile.xml

TAEF creará el archivo especificado para almacenar su estado (que las pruebas ya se han ejecutado, cualquier comando DE TAEF o opciones de entorno, etc.) y reanudar desde donde se dejó cuando se reanuda después del reinicio. TAEF se encarga de volver a ejecutarse una vez que la máquina vuelve a subir después del reinicio.

Tenga en cuenta que esta opción no funciona en las máquinas Arm debido a la eliminación de una característica que TAEF depende de reanudar las pruebas después del reinicio (tecla RunOnce).

* Siempre que no use ninguna característica de ejecución incompatible (actualmente modos paralelos y de prueba).

Preguntas más frecuentes

Si elijo Volver a ejecutar, ¿hay alguna manera de saber si la prueba se invoca por primera vez o después de un reinicio?

TAEF no proporciona ninguna funcionalidad para lograr esto. La intención de la opción de volver a ejecutar es permitirle escribir pruebas que pueden requerir un número indeterminado de reinicios en función del estado de la máquina (por ejemplo, ejecutar Windows Update para completarse). Considere la posibilidad de usar executionGroup y la opción continuar para dividir las tareas en operaciones de prueba independientes que se producen en secuencia antes o después del reinicio.

¿Qué tipos de pruebas DE TAEF se admiten?

Esta característica está disponible para pruebas nativas, administradas y de script.