Testes do sistema
api_db_test.go
Nesse código temos um conjunto de testes para um sistema que lida com sensores de diferentes tipos, como sensores de temperatura, sensores de gases e sensores de radiação, utilizando a biblioteca padrão de teste (testing) para verificar se as rotas da API do sistema estão funcionando corretamente.
Teste de envio de dados do sensor (Função testPostsensor):
Este teste envia um payload JSON contendo informações sobre um sensor, como latitude, longitude, código, fabricante, etc., para a rota /sensors do servidor. Após enviar os dados, o teste verifica se a resposta do servidor foi bem-sucedida.
Teste de envio de dados de gás (Função testPostgas):
Similar ao teste anterior, este teste envia informações sobre a concentração de diferentes gases para a rota /gases do servidor. O payload contém informações como o ID do sensor, nome do sensor, unidade de medida e concentrações de vários gases. Após enviar os dados, o teste verifica se a resposta do servidor foi bem-sucedida.
Teste de envio de dados de radiação (Função testPostradiation):
Novamente, este teste envia informações sobre a radiação detectada por um sensor para a rota /radiations do servidor, o payload inclui o ID do sensor, nome do sensor, unidade de medida e nível de radiação detectada. Por fim, o teste então verifica se a resposta do servidor foi bem-sucedida.
Teste de requisição GET (Função testGet):
Este teste realiza uma requisição GET para as três rotas principais do servidor (/sensors, /gases e /radiations), verifica se o servidor responde corretamente às requisições GET para cada uma dessas rotas.
Teste principal (Função TestApi):
Este é o teste principal que chama os testes individuais acima, ele executa todos os testes em sequência para verificar se todas as funcionalidades principais da API estão funcionando corretamente.
aws_test.go
Tal teste verifica se uma aplicação está em execução em uma URL específica na nuvem, realizando uma série de tentativas de conexão, fazendo uma requisição HTTP GET para a URL da aplicação a cada tentativa.
Se a conexão for bem-sucedida e a aplicação responder com o código de status 200 (OK), o programa imprime "A aplicação está em execução na nuvem!" e encerra com um código de saída 0, indicando sucesso. Caso contrário, ele aguarda um segundo e tenta novamente; após 30 tentativas sem sucesso, o programa imprime "Falha ao conectar à aplicação na nuvem." e encerra com um código de saída 1, indicando falha na conexão.
client_test.go
Este código contém testes para um cliente MQTT, utilizando a biblioteca "github.com/eclipse/paho.mqtt.golang".
Teste de Criação de Cliente (Função CreateClient):
Teste que cria um cliente MQTT utilizando uma função de criação fornecida pelo pacote comum (common), verificando se a conexão do cliente é bem-sucedida.
Teste de Inscrição em Tópico (Função SubscribeTopic):
Neste teste, o cliente MQTT é criado e conectado. Em seguida, ele se inscreve em um tópico específico e espera receber mensagens nesse tópico; após dois segundos, o cliente cancela a inscrição no tópico.
Teste de Publicação de Mensagem (Função PublishMessage):
Cria um cliente MQTT, o conecta e publica uma mensagem em um tópico específico, verificando se a publicação da mensagem é bem-sucedida.
controller_test.go
Testes para validar o comportamento do controlador de um sistema que lida com mensagens MQTT.
Teste de Publicação de Campos (Função TestPublishFields):
Verifica se os campos das mensagens MQTT publicadas estão de acordo com um padrão específico. Sendo assim, o controlador publica mensagens nos tópicos "sensor/gases" e "sensor/radiation". Para cada mensagem publicada, o teste verifica se o payload da mensagem corresponde ao padrão esperado para cada tópico. Se o payload não corresponder ao padrão esperado, o teste falhará, indicando uma inconsistência nos campos da mensagem.
Teste de Qualidade de Serviço (QoS) (Função TestQos):
Tal teste verifica se o serviço de qualidade de serviço (QoS) está configurado corretamente. O controlador se inscreve em todos os tópicos sob "sensor/#", após uma pausa de dois segundos, o controlador verifica se todas as mensagens recebidas têm QoS igual a 1. Se alguma mensagem não tiver QoS igual a 1, o teste falhará, indicando uma configuração incorreta do QoS.
database_test.go
Teste de unidade para verificar a funcionalidade de inserção de dados no MongoDB.