- Objetivo
- Ferramentas
- Como executar
- Swagger / Open API
- Organização e Arquitetura
- Regras adicionais
- Testes
Construir um projeto Java capa de ler um arquivo de Logs gerado por um FPS (first-person shooter), processar e construir uma análise de jogadores, kills por jogador e kills por partida.
- Java 17
- Documentação seguindo OPEN API 3.0
- Gravar no banco de dados
- Testes unitários
- Docker
- Java 17.x
- Mongodb
- Docker
- Maven
- Spring
- Jacoco
- Lombok
- Visual Studio Code
- mongo-express
- Postman
- Maven
- Docker
- Java 17
- WSL ou distro LINUX
Buildar a imagem da aplicação utilizando os passos listados no Dockerfile.
docker compose build
Inicializar a orquestração da aplicação e do banco de dados.
docker compose up
Chamar a rota localhost:8080/api/v1/file com o arquivo Games.log
As funcionalidades da aplicação podem ser acessadas utilizando chamadas REST via métodos HTTP.
http://localhost:8080/api-docs
http://localhost:8080/swagger-ui/index.html
Foi gerado uma collection para ser importada no POSTMAN, com intuito de facilitar o teste das rotas.
A aplicação foi separada utilizando uma visão inspirada na arquitetura limpa, criando camadas como Presentation ( Entrada/Saída de dados ), Aplicação ( Domínio ( Operações principais que cumprem o objetivo da aplicação ), Aplicação ( funcionalidades e configurações principais ) e Infra ( Ferramentas externas como Gateways/Acesso a banco de dados e disco ). Uma das regras para evitar acoplamento foi a utilização de interfaces, principalmente para que camadas mais perto do "domínio" não dependese das camadas mais "externas".
Foi necessário estabelecer algumas regras, pois não estavam estabelecidas no desafio.
Nesse caso o jogador não ganha um kill, mas o total de kills do jogo é incrementado.
É possível o jogador ficar com KDA negativo caso ela morra pelo mundo e não tenha um saldo que mantenha ele com um número neutro ou positivo.
Foi criado testes unitários para garantir que as pequenas unidades de códigos funcionais estejam funcionando de acordo com previsto.
Executar o comando utilizando maven.
mvn test
mvn jacoco:prepare-agent test install jacoco:report