Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Nota
titleAbrangência

Recurso disponível a partir do tlppCore versão 01.04.04.

O dilema do troubleshooting em DevOps

Em técnicas de DevOps utilizamos muitas ferramentas que conversam entre si, onde uma aciona outra para executar algum processo específico.

Vejamos o diagrama simplificado abaixo para entendermos:

Image Added

Cada ferramenta possui um log contendo informações do que acontece sob seu controle, porém ela não consegue obter informações específicas de outas ferramentas.

Acontece a mesma coisa na execução dos testes do PROBAT, que somente conhece as informações de execuções dos testes que ele disparou.

O que queremos mostrar é que em um ambiente automatizado, haverão muitas informações dos eventos, porém as informações ficam descentralizadas e portanto gera um trabalho muito grande para realizar o troubleshooting quando os testes não rodarem a contento.

Se o erro for somente um teste específico, você facilmente encontrará pelos resultados do PROBAT, porém, e se o evento ocorrido for na execução do script? ou em alguma outra ferramenta?


A Solução

Olhando para esse "problema" o PROBAT passou a disponibilizar o recurso na qual ferramentas externas podem enviar informações importantes para o PROBAT com o mesmo ID Customizado, dessa forma ao exportar os resultados dos testes, também serão considerados os dados de eventos externos.

Com essa centralização de informações, o trabalho para encontrar o que ocorreu fica facilitado para pessoas menos experientes em ambientes complexos, pois o PROBAT facilmente terá as informações de todas as ferramentas usadas no processo automatizado.

A ideia não é substituir as informações densas que existem em cada Log, mas centralizar os principais eventos para que o PROBAT possa sinalizar problemas fora de sua execução tornando o troubleshooting mais assertivo e ágil.


Como utilizar?

O PROBAT possui algumas 'Main Function', na qual permite que sejam executadas diretamente através do AppServer Command Line por qualquer processo de sua escolha. Aqui iremos utilizar como exemplo um Shell Script em Linux para orquestrar as tarefas de uma automação.

O script completo pode ser acessado por nosso projeto no GitHub que contém exemplos práticos de uso do PROBAT.
GitHub.com/TOTVS/tlpp-probat-samples/run/

Dessa forma, diretamente por um processo externo indicamos ao PROBAT quando o Script iniciou e encerrou sua execução, quando ocorreram eventos Positivos, de Erro ou somente Avisos, também podemos verificar se um Exit Code dentro do Script ocorreu sem erros e entregando ao PROBAT essa verificação.

Além dos estados acima, podemos informar qual é o Plano de Execução do processo, enviando ao PROBAT uma lista com os passos (Steps) e sua descrição. Com isso deveremos informar quando cada Step inicia e encerra, informando também se foi encerrado com sucesso ou erro.

Portanto, quando formos apurar os resultados no processo de exportação, o PROBAT irá considerar todos os dados recebidos da execução externa e anexar como fosse uma suite destacada, ou seja, se houver apenas um erro no script e não houver erro algum nos testes executados, ao mesclar as duas execuções o resultado final será negativo, justamente pelo erro ocorrido no evento do Script.

Importante: Para garantirmos que uma Execução real do PROBAT seja linkada com uma Execução Externa, devemos utilizar o recurso de Identificador Customizado e enviar o mesmo ID para todas as execuções do PROBAT, tanto as reais como a externa.


Funções

Abaixo seguem as funções disponíveis nesse recurso:

Início e Fim do Processo:

  • tlpp.probat.over.startScript
  • tlpp.probat.over.endScript

Asserts:

  • tlpp.probat.over.assertOK
  • tlpp.probat.over.assertError
  • tlpp.probat.over.assertWarning
  • tlpp.probat.over.assertExitCode

Plano de execução:

  • tlpp.probat.over.setPlan
  • tlpp.probat.over.startStep
  • tlpp.probat.over.endStep
  • tlpp.probat.over.setStep