O código contido neste repositório representa o sistema de simulação. Este projeto foi construído conforme as golang-standards 1.
Antes de continuar, é necessário instalar as dependências para a execução dos comandos abaixo. Acesse o link.
Abaixo estão as possíveis interações e as instruções de como realizá-las.
Aqui, todos os comandos necessários estão sendo abstraídos por um arquivo Makefile. Se você tiver curiosidade para saber o que o comando abaixo faz, basta conferir aqui.
make test
[+] Running 1/1
✔ Container p1-m9-broker-1 Started 0.0s
Running the tests
? github.com/henriquemarlon/p1-m9/cmd/freezer [no test files]
? github.com/henriquemarlon/p1-m9/cmd/refrigerator [no test files]
? github.com/henriquemarlon/p1-m9/cmd/subscriber [no test files]
=== RUN TestGenerateFreezerPayload
--- PASS: TestGenerateFreezerPayload (0.00s)
=== RUN TestConnectFreezerMQTT
--- PASS: TestConnectFreezerMQTT (0.00s)
=== RUN TestFreezerMessageTransmissionAndQOS
freezer_test.go:68: New message on topic /sectors: {"id":"ST-1","type":"freezer","temperature":-18,"timestamp":"2024-03-08 15:58:06.464641995 -0300 -03 m=+0.009711507"}
--- PASS: TestFreezerMessageTransmissionAndQOS (2.00s)
=== RUN TestGenerateRefrigeratorPayload
--- PASS: TestGenerateRefrigeratorPayload (0.00s)
=== RUN TestConnectRefrigeratorMQTT
--- PASS: TestConnectRefrigeratorMQTT (0.00s)
=== RUN TestRefrigeratorMessageTransmissionAndQOS
refrigerator_test.go:68: New message on topic /sectors: {"id":"ST-1","type":"refrigerator","temperature":2,"timestamp":"2024-03-08 15:58:08.4738584 -0300 -03 m=+2.018927982"}
--- PASS: TestRefrigeratorMessageTransmissionAndQOS (2.00s)
PASS
coverage: 87.5% of statements
ok github.com/henriquemarlon/p1-m9/internal/domain/entity 4.023s coverage: 87.5% of statements
[+] Running 2/2
✔ Container p1-m9-broker-1 Removed 0.2s
✔ Network p1-m9_default Removed
Note
- No meio do processo, é necessário subir um broker local para realizar os testes de transmissão de mensagens entre os tópicos.
Mais uma vez, todos os comandos necessários estão sendo abstraídos por um arquivo Makefile. Se você tiver curiosidade para saber o que o comando abaixo faz, basta conferir aqui.
make run
subscriber-1 | ST-0 - Temperature: 4 ºC [OK Refrigerator]
subscriber-1 | ST-0 - Temperature: 3 ºC [OK Refrigerator]
subscriber-1 | ST-1 - Temperature: -19 ºC [OK Freezer]
subscriber-1 | ST-2 - Temperature: -20 ºC [OK Freezer]
subscriber-1 | ST-4 - Temperature: -14 ºC [ALERT High Temperature - Freezer]
subscriber-1 | ST-3 - Temperature: -20 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: 9 ºC [OK Refrigerator]
subscriber-1 | ST-0 - Temperature: 3 ºC [OK Refrigerator]
subscriber-1 | ST-0 - Temperature: 8 ºC [OK Refrigerator]
subscriber-1 | ST-2 - Temperature: -18 ºC [OK Freezer]
subscriber-1 | ST-3 - Temperature: -23 ºC [OK Freezer]
subscriber-1 | ST-4 - Temperature: -21 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: -16 ºC [OK Freezer]
subscriber-1 | ST-1 - Temperature: -26 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-0 - Temperature: 7 ºC [OK Refrigerator]
subscriber-1 | ST-1 - Temperature: -19 ºC [OK Freezer]
subscriber-1 | ST-3 - Temperature: -16 ºC [OK Freezer]
subscriber-1 | ST-2 - Temperature: -21 ºC [OK Freezer]
subscriber-1 | ST-4 - Temperature: -24 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: 9 ºC [OK Refrigerator]
subscriber-1 | ST-0 - Temperature: 3 ºC [OK Refrigerator]
subscriber-1 | ST-4 - Temperature: -10 ºC [ALERT High Temperature - Freezer]
subscriber-1 | ST-1 - Temperature: -10 ºC [ALERT High Temperature - Freezer]
subscriber-1 | ST-2 - Temperature: -28 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-3 - Temperature: -22 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: -22 ºC [OK Freezer]
subscriber-1 | ST-3 - Temperature: -24 ºC [OK Freezer]
subscriber-1 | ST-2 - Temperature: -29 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-1 - Temperature: -26 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-0 - Temperature: -27 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-0 - Temperature: 0 ºC [ALERT Low Temperature - Refrigerator]
subscriber-1 | ST-0 - Temperature: 12 ºC [ALERT High Temperature - Refrigerator]
subscriber-1 | ST-0 - Temperature: 11 ºC [ALERT High Temperature - Refrigerator]
subscriber-1 | ST-1 - Temperature: -12 ºC [ALERT High Temperature - Freezer]
subscriber-1 | ST-3 - Temperature: -19 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: -19 ºC [OK Freezer]
subscriber-1 | ST-2 - Temperature: -29 ºC [ALERT Low Temperature - Freezer]
subscriber-1 | ST-4 - Temperature: -18 ºC [OK Freezer]
subscriber-1 | ST-0 - Temperature: 9 ºC [OK Refrigerator]
subscriber-1 | ST-0 - Temperature: 7 ºC [OK Refrigerator]
Note
- Este comando está subindo todos os serviços presentes no arquivo compose.yml. São eles, o broker local, a simulação e a api-test que está sendo usada, por hora apenas para mostrar o log do que está sendo transmitido pela simulação.
Novamente, todos os comandos necessários estão sendo abstraídos por um arquivo Makefile. Se você tiver curiosidade para saber o que o comando abaixo faz, basta conferir aqui.
make coverage
Note
- Este comando está criando, a partir do arquivo
coverage_sheet.md
, uma visualização da cobertura de testes nos principais arquivos Go.
Footnotes
-
A estrutura de pastas escolhida para este projeto está de acordo com as convenções e padrões utilizados pela comunidade de desenvolvedores Golang. ↩