Projeto criado para fazer o gerenciamento de sessões de votação com base nos votos efetuados pelos associados de uma organização em determinada pauta.
- Ambiente com Java 8+
- MySQL
- Maven
git clone https://github.com/alexandreBN/voting-session-manager.git
cd voting-session-manager
-
Docker
cd docker
docker-compose up --build
-
Terminal
mvn clean install -U -Dmaven.test.skip=true
java -jar voting-session/target/voting-session-0.0.1-SNAPSHOT.jar
-
Eclipse
- Importe o projeto
- Configure o JUnit 5 no Build Path
- Execute o
Update Projet
do maven - Execute o comando
mvn clean install -U -Dmaven.test.skip=true
no projeto raiz
Após a execução dos comandos acima a aplicação estará disponível na porta 8010.
Para executar todos os testes automatizados é necessário executar a classe VotingSessionSuite
Para fazer com que uma pauta seja pelos votada pelos associados em uma determinada sessão de votação é necessário:
- Cadastrar uma Pauta
- Abrir uma Sessão de Votação para a Pauta criada
- Efetuar a votação de modo a identificar o associado que está votando
- Os votos dos associados podem ser feitos:
- Utilizando a base de dados interna de associados (onde devem ser cadastrados os associados)
- Utilizando o endpoint referente a API externa integrada ao sistema (no qual deve ser informado o CPF do associado)
- Os votos dos associados podem ser feitos:
- Após a Sessão de Votação ser finalizada não é possível efetuar mais votos e é possível ver os resultados ou acompanhar a votação até a mesma ser finalizada.
A documentação da API está disponível através do path /swagger-ui.html
.
Para auxiliar a execução das requisições foi disponibilizado o arquivo Voting Session.postman_collection.json
para ser utilizado no Postman.
- Tarefa Bônus 1 - Integração com sistemas externos
- Tarefa Bônus 2 - Mensageria e filas
- Tarefa Bônus 3 - Performance
- Para performance foi criado um projeto (
Voting Session.jmx
) no JMeter de modo a 1) Criar uma Pauta, 2) Abrir uma Sessão de Votação para Pauta e 3) Fazer com que uma lista de 10 mil associados efetuassem seus votos nessa pauta. É importante ressaltar que para a emissão das requisições referentes aos associados é necessário importar, na thread referente aos votos o arquivoVoting Session.csv
.
- Para performance foi criado um projeto (
- Tarefa Bônus 4 - Versionamento da API
- Versionamento da API utilizando alguma plataforma de hospedagem de código que utiliza o Git, como GitHub, GitLab, entre outros. A estratégia a ser utilizada seria a baseada no GitFlow, isto é, 1) Dividir o ambiente do projeto em 2 branchs padrões, sendo development e master, 2) Criar tarefas (issues) a serem implementadas, 3) Efetuar um fork do repositório, 4) Criar uma branch para resolver uma tarefa (issue) específica, 5) Enviar um Pull Request para a branch development e 5) Após feito o merge fechar a versão efetuando um Pull Request da branch development para a branch master*