{"id":18572095,"url":"https://github.com/gabrielspassos/assembly-poc","last_synced_at":"2026-04-09T22:54:42.268Z","repository":{"id":42986969,"uuid":"343480609","full_name":"gabrielSpassos/assembly-poc","owner":"gabrielSpassos","description":"Projeto de exemplo com containers, kafka, spring, karate e gatling","archived":false,"fork":false,"pushed_at":"2022-03-24T16:36:14.000Z","size":318,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-15T22:40:00.579Z","etag":null,"topics":["docker","docker-compose","gatling","kafdrop","kafka","springboot","webflux"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabrielSpassos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-01T16:22:44.000Z","updated_at":"2022-06-22T22:12:18.000Z","dependencies_parsed_at":"2022-09-06T12:12:20.313Z","dependency_job_id":null,"html_url":"https://github.com/gabrielSpassos/assembly-poc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gabrielSpassos/assembly-poc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielSpassos%2Fassembly-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielSpassos%2Fassembly-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielSpassos%2Fassembly-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielSpassos%2Fassembly-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrielSpassos","download_url":"https://codeload.github.com/gabrielSpassos/assembly-poc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielSpassos%2Fassembly-poc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260063573,"owners_count":22953554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","gatling","kafdrop","kafka","springboot","webflux"],"created_at":"2024-11-06T23:04:59.573Z","updated_at":"2026-04-09T22:54:37.246Z","avatar_url":"https://github.com/gabrielSpassos.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Assembly POC\n\n* [Design da Solução](https://drive.google.com/file/d/1D89YICl0G12tjsUN1oOEWA4xbFs4ibZ7/view?usp=sharing) \n* [Kafdrop](http://localhost:19000/)\n* [Assembly-Service](http://localhost:8080/swagger-ui.html)\n\n## Como usar\n\n#### Forma mais simples:\n\n - ``` chmod +x start.sh ```\n - ``` sh start.sh ```\n\n#### Forma detalhada:\n\n- Executar testes unitários\n- ``` cd assembly-service ```\n- ``` ./gradlew clean test ```\n- Reporte em ./build/reports/tests/test/index.html\n\u003cbr\u003e\n\n- Executar testes de mutação\n- ``` cd assembly-service ```\n- ``` ./gradlew pitest ```\n- Reporte em ./build/reports/pitest/index.html\n\u003cbr\u003e\n\n- Buildar o projeto\n- ``` cd assembly-service ```\n- ``` ./gradlew clean build ```\n\u003cbr\u003e\n\n- Executar projeto \n- ``` docker-compose build ```\n- ``` docker-compose up ```\n\u003cbr\u003e\n\n- Executar projeto de testes de integração\n- ``` cd assembly-integration-test ```\n- ``` ./gradlew clean test ``` \n- Reporte em ./build/reports/tests/test/index.html\n- Obs: alguns testes podem falhar devido ao serviço 'user-service' ser randômico\n\u003cbr\u003e\n\n- Executar os testes de stress\n- Faça o Download do [Gatling](https://gatling.io/open-source/start-testing/)\n- Faça o unzip dos arquivos do Gatling\n- Coloque toda a pasta [assembly](https://github.com/gabrielSpassos/assembly-poc/tree/main/simulations/assembly) no caminho `${your_gatling_folder}/user_files/simulations/`\n- Ajustar a variavel `assemblyId` para o id de um assembleia aberta\n- ``` ./bin/gatling.sh ```\n- Selecionar no console o número da opção `assembly.AssemblySimulation`\n- Reporte em `${your_gatling_folder}/results/assemblysimulation-*/index.html`\n- Obs: nesses testes o cenário onde o usuário não está apto para votar (HttpStatus 404) está sendo considerado como sucesso.\n\u003cbr\u003e\n\n- Acessar swagger da aplicação: [Swagger-UI](http://localhost:8080/swagger-ui.html)\n- Acessar kafdrop para visualização do tópico: [Kafdrop](http://localhost:19000/)\n\n\n## Tecnologias\n* **Java 11**: Linguagem OO, com estrutura e ecosistema robusto, uma das versões mais atualizadas. \n* **SpringBoot Webflux**: framework reativo do SpringBoot que auxilia na performance de I/O da aplicação. \n* **MongoDB**: banco de dados `schemaless` facilitando no desenvolvimento, com driver reativo já adequado para o uso do **SpringBoot Webflux**\n* **Shedlock**: dependência que realiza o lock a nível de instâncias para apenas uma instância realizar um determinado job. Nesse caso a tarefa expirar a entity `assembly`\n* **Apache Kafka**: plaforma de streaming de eventos amplamente utilizada em soluções corporativas, com capacidade de suportar alto throughput\n* **JUnit 5**: versão atualizada do framework, com novas features facilitando a criação de testes unitários\n* **Karate**: abstração do framework Cucumber, faciliando a construção dos testes de integração. [Karate Docs](https://intuit.github.io/karate/) \n* **Wiremock**: depencia de testes capaz de criar um server de mock para executar os testes de clients. [Wiremock Docs](http://wiremock.org/)\n* **Pitest**: capaz de executar testes de mutação no código para avaliar qualidade do mesmo\n* **Gatling**: ferramenta capaz de realizar os testes de stress na aplicação com apenas um arquivo de código para configurar as requisições HTTP, além de disponibilizar reporte gráfico. [Gatling Docs](https://gatling.io/)\n* **Lombok**: plugin para auxiliar na limpeza de código dos POJO's\n* **Swagger**: auxilio na documentação dos endpoints\n* **Docker**: ferramenta para criar o ambiente com os containers necessários para solução proposta\n* **Docker Compose**: orquestração dos containers\n* **Pull Request Size**: create tag of pull request size [Docs](https://github.com/noqcks/pull-request-size)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielspassos%2Fassembly-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrielspassos%2Fassembly-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielspassos%2Fassembly-poc/lists"}