A API de Votação permite que os usuários criem enquetes e disponibilize a votação de maneira simples e eficiente.
Variáveis de ambiente :
| Variavel | Descrição | Valor Padrão |
|---|---|---|
| PORT | Server port | 8080 |
| MONGODB_URL | Mongo DB Url connection | |
| REDIS_HOST | Redis instance host | |
| REDIS_PORT | Redis instance port |
make envupdocker-compose build: Constrói os containers do projeto usando odocker-compose.docker-compose up -d: Inicia os containers em modo desacoplado (-d), ou seja, em segundo plano.
make setup- Faz uma requisição HTTP POST para
http://localhost:8080/poll. - Envia um payload JSON que cria uma votação com 4 opções (participantes).
- Acesse a enquete no endereço http://localhost:8080
make envdown- Para e remove os containers e redes criados pelo
docker-compose.
make test- Executa todos os testes unitários do projeto escritos em Go.
- O
./...faz com que os testes sejam rodados em todos os pacotes do projeto.
make attack- Executa comando vegeta para simular chamadas simultaneas contra a API.
- O comando simula 1000 chamadas por segundo durante 10s.
Exemplo de saida do comando :
Requests [total, rate, throughput] 10000, 1000.08, 1000.05
Duration [total, attack, wait] 9.999525892s, 9.999190569s, 335.323µs
Latencies [mean, 50, 95, 99, max] 339.88µs, 306.141µs, 554.503µs, 918.879µs, 4.550039ms
Bytes In [total, mean] 3352001, 335.20
Bytes Out [total, mean] 1030000, 103.00
Success [ratio] 100.00%
Status Codes [code:count] 200:10000
Error Set:make mock: check-mock- Depende do comando
check-mock(garante quemockgenesteja instalado). - Gera mocks para facilitar testes unitários:
- Cria um mock para
poll.goe salva emmocks/mock_repo_poll.go. - Cria um mock para
captcha.goe salva emmocks/mock_cli_captcha.go. - Cria um mock para
pubsub.goe salva emmocks/mock_cli_pubsub.go.
- Cria um mock para
A documentação dos endpoint encontrasse no arquivo DOCUMENTATION.md
- Implementar Total de votos por hora
- Autenticação para rota de criação de enquete e dados totais sobre a enquete
- Melhoria nos logs
- Adicionar rate limit
- Utilizar outro tipo de fila de mensagens
- Busca de enquete por ID
- Implementar testes de integração
- Adicionar test coverage
- Adicionar mais tests unitários
