Partilhar via


Reboot

O TAEF permite que um teste especifique que ele pode causar ou exigir que o computador seja reiniciado. O recurso consiste em dois a três componentes: metadados para sinalizar o teste como possivelmente causando ou exigindo uma reinicialização, uma API para solicitar que o TAEF execute uma reinicialização ou notifique o TAEF de uma reinicialização iniciada por teste iminente e uma opção de comando para optar por executar esses testes ao executar localmente.

Comportamento

A semântica específica de reiniciar o computador requer algumas alterações no modelo de execução taef, as garantias de operações de instalação e limpeza e o comportamento de êxito e falha.

  • O comportamento de reinicialização só está disponível para um teste (com os metadados apropriados), não para acessórios (instalação e limpeza).
  • Se a API de Reinicialização for usada de qualquer lugar diferente de um teste com a marcação apropriada, a função não retornará. Em vez disso, o TAEF elimina o processo de teste. Isso representa um bug na forma como o teste foi gravado e o código de teste deve ser corrigido.
  • Os acessórios de teste não serão executados no limite de reinicialização. Isso significa que as operações de desativação não são executadas antes da reinicialização (independentemente de o teste iniciar a reinicialização ou das solicitações que o TAEF causa a reinicialização em si) e as operações de instalação não serão executadas após a reinicialização.
  • O registro em log (e, consequentemente, falhas de log) será ignorado a partir do momento em que você notificar ou solicitar uma reinicialização até que o teste seja concluído.

Metadados

Para habilitar o uso das APIs de Reinicialização, um teste deve ser sinalizado definindo os metadados RebootPossible como "true". Esses metadados obedecem às regras usuais de herança de metadados, portanto, podem ser especificados no nível da classe se qualquer teste em sua classe puder ser reiniciado (embora dada a natureza bastante pesada da reinicialização, seria aconselhável tomar decisões explícitas sobre qual teste pode ou não iniciar reinicializações). Consulte a documentação sobre testes de criação em C++ e Testes de criação em C# para obter exemplos de especificação de metadados.

API

Há duas funções main para lidar com reinicializações do computador:

  • Reinicializações(Opção) solicita que o TAEF inicie uma reinicialização do computador de teste.
  • RebootCustom(Option) notifica o TAEF de que o teste causará uma reinicialização do computador de teste. Essa API também dá suporte à falha do sistema. O TAEF garantirá que os dados aplicáveis sejam liberados após o retorno da API.

O parâmetro Option especifica o comportamento do currículo, um dos seguintes:

  • Executar novamente, fazendo com que o TAEF execute o mesmo teste novamente após a reinicialização
  • Continue, fazendo com que o TAEF execute o próximo teste após a reinicialização

Nativo

Acesse as APIs de Reinicialização incluindo o cabeçalho Interruption.h e chamando as funções no namespace WEX::TestExecution::Interruption . As quatro chamadas possíveis são:

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

Gerenciado

Chame um dos dois métodos na classe estática Interrupção no WEX. Namespace TestExecution , que está localizado em Te.Managed.dll:

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

Uso do prompt de comando

O uso ideal para esse recurso é executar testes TAEF que potencialmente serão reiniciados com a Execução entre Máquinas ou por meio do WTT. Nesses casos, o TAEF habilita a execução de reinicialização implicitamente* porque ela não deve interromper o fluxo de trabalho. Se você estiver executando testes de reinicialização manualmente no computador local ou precisar substituir o caminho padrão que o TAEF usa para armazenar em cache seu estado, você precisará aceitar explicitamente a reinicialização dos testes. Se você não fizer isso, qualquer teste de reinicialização será marcado como bloqueado. Para habilitar testes de reinicialização ao executar localmente, use o seguinte argumento de comando:

Te.exe /rebootStateFile:MyRestartFile.xml

O TAEF criará o arquivo especificado para armazenar seu estado (quais testes já foram executados, qualquer comando TAEF ou opções de ambiente etc.) e retomará de onde parou quando ele for retomado após a reinicialização. O TAEF manipula a execução novamente quando o computador aparece novamente após a reinicialização.

Observe que essa opção não funciona em computadores Arm devido à remoção de um recurso do qual o TAEF depende para retomar os testes após a reinicialização (chave RunOnce).

* Desde que você não esteja usando nenhum recurso de execução incompatível (atualmente modos paralelos e de teste).

Perguntas frequentes

Se eu escolher Executar novamente, há alguma maneira de saber se o teste está sendo invocado pela primeira vez ou após uma reinicialização?

O TAEF não fornece nenhuma funcionalidade para você conseguir isso. A intenção da opção de nova execução é permitir que você escreva testes que possam exigir um número indeterminado de reinicializações com base no estado do computador (como executar Windows Update até a conclusão). Considere usar um ExecutionGroup e a opção continuar para dividir as tarefas em operações de teste separadas que ocorrem em sequência antes/após a reinicialização.

Quais tipos de teste TAEF têm suporte?

Esse recurso está disponível para testes nativos, gerenciados e de script.