Skip to content

Commit

Permalink
Merge branch 'zanfranceschi:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
ygorcarmo authored Feb 14, 2024
2 parents 6ec6fa2 + 6a736a5 commit 5b2b7ef
Show file tree
Hide file tree
Showing 748 changed files with 50,870 additions and 174,805 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/resultados/*/
executar-testes-final.sh
executar-testes-final-polling.sh
RESULTADOS.md
RESULTADOS-HEADER.md
RESULTADOS-HEADER.md
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,9 @@ Aqui estão instruções rápidas para você poder executar os testes:
1. Certifique-se de que tenha o JDK instalado
(64bits OpenJDK LTS (Long Term Support) versions: 11, 17 e 21)
https://gatling.io/docs/gatling/tutorials/installation/
1. Certifique-se de configurar a variável de ambiente GATLING_HOME para o diretório da instalação do Gatling.
Para se certificar de que a variável está correta, os seguinte caminhos precisam ser válidos:
`$GATLING_HOME/bin/gatling.sh` no Linux e `%GATLING_HOME%\bin\gatling.bat` no Windows.
1. Configure o script `./executar-teste-local.sh` (ou `./executar-teste-local.ps1` se estiver no Windows)
1. Suba sua API (ou load balancer) na porta 9999
1. Execute `./executar-teste-local.sh` (ou `./executar-teste-local.ps1` se estiver no Windows)
Expand Down
155 changes: 129 additions & 26 deletions STATUS-TESTES.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,132 @@
# Status da Execução dos Testes
Tabela com os status das execuções de testes para cada submissão.
Atualizada em **qui 08 fev 2024 23:33:27 -03**.

Atualizada **ter 13 fev 2024 23:45:35 -03** com **125** submissões.

| participante | status |
| -- | -- |
| [agostinho](./participantes/agostinho) | ok |
| [aysion_nodejs](./participantes/aysion_nodejs) | ok |
| [doceazedo](./participantes/doceazedo) | falha - [logs](./participantes/doceazedo/docker-compose.logs) |
| [elixiremfoco](./participantes/elixiremfoco) | falha - [logs](./participantes/elixiremfoco/docker-compose.logs) |
| [eu_fountai](./participantes/eu_fountai) | ok |
| [exemplo](./participantes/exemplo) | ok |
| [fabiokleis](./participantes/fabiokleis) | falha - [logs](./participantes/fabiokleis/docker-compose.logs) |
| [gasparbarancelli](./participantes/gasparbarancelli) | ok |
| [gmrms](./participantes/gmrms) | ok |
| [itujo](./participantes/itujo) | ok |
| [josebaroni](./participantes/josebaroni) | ok |
| [lazaronixon](./participantes/lazaronixon) | falha - [logs](./participantes/lazaronixon/docker-compose.logs) |
| [leoralph](./participantes/leoralph) | ok |
| [lobomfz](./participantes/lobomfz) | ok |
| [lpicanco](./participantes/lpicanco) | ok |
| [mateuscolvr](./participantes/mateuscolvr) | ok |
| [met4tron-nodejs](./participantes/met4tron-nodejs) | ok |
| [olukkas](./participantes/olukkas) | ok |
| [rodrigocaldeira](./participantes/rodrigocaldeira) | ok |
| [samluiz](./participantes/samluiz) | ok |
| [samueljansem](./participantes/samueljansem) | falha - [logs](./participantes/samueljansem/docker-compose.logs) |
| [thiagosantana](./participantes/thiagosantana) | falha - [logs](./participantes/thiagosantana/docker-compose.logs) |
| [viniciusfcf](./participantes/viniciusfcf) | ok |
| participante | status | p75 geral |
| -- | -- | -- |
| [acerola](./participantes/acerola) | ok | 1642 |
| [agostinho](./participantes/agostinho) | ok | 6 |
| [andrepiske-01](./participantes/andrepiske-01) | falha - [logs](./participantes/andrepiske-01/docker-compose.logs) | -- |
| [arrudaricardo-01](./participantes/arrudaricardo-01) | falha - [logs](./participantes/arrudaricardo-01/docker-compose.logs) | -- |
| [avalonbits](./participantes/avalonbits) | ok | 6283 |
| [aysion_bun](./participantes/aysion_bun) | ok | 2 |
| [aysion_nodejs](./participantes/aysion_nodejs) | ok | 1899 |
| [bbonagura9](./participantes/bbonagura9) | ok | 32 |
| [bcaua](./participantes/bcaua) | ok | 15652 |
| [betamedina](./participantes/betamedina) | falha - [logs](./participantes/betamedina/docker-compose.logs) | -- |
| [bgskurono](./participantes/bgskurono) | ok | 2 |
| [bine-golang](./participantes/bine-golang) | ok | 85 |
| [bine-php-road-runner](./participantes/bine-php-road-runner) | ok | 75 |
| [bine-php-swoole](./participantes/bine-php-swoole) | ok | 63 |
| [bine-reactphp](./participantes/bine-reactphp) | ok | 66 |
| [boaglio](./participantes/boaglio) | ok | 5 |
| [breno5g](./participantes/breno5g) | ok | 6 |
| [buemura](./participantes/buemura) | ok | 5 |
| [bun-saulofelipe](./participantes/bun-saulofelipe) | ok | 2170 |
| [cacambito](./participantes/cacambito) | falha - [logs](./participantes/cacambito/docker-compose.logs) | -- |
| [cadu](./participantes/cadu) | ok | 3 |
| [caravanacloud](./participantes/caravanacloud) | falha - [logs](./participantes/caravanacloud/docker-compose.logs) | -- |
| [carls-rodrigues](./participantes/carls-rodrigues) | ok | 3 |
| [danielwisky](./participantes/danielwisky) | ok | 1507 |
| [danilosilva](./participantes/danilosilva) | falha - [logs](./participantes/danilosilva/docker-compose.logs) | -- |
| [devkemc-node](./participantes/devkemc-node) | ok | 20939 |
| [diego-coronel](./participantes/diego-coronel) | ok | 17 |
| [direisc](./participantes/direisc) | ok | 3398 |
| [doceazedo](./participantes/doceazedo) | falha - [logs](./participantes/doceazedo/docker-compose.logs) | -- |
| [dowingows-phalcon-php](./participantes/dowingows-phalcon-php) | ok | 5 |
| [dscamargo](./participantes/dscamargo) | ok | 4 |
| [Edmar-Sousa](./participantes/Edmar-Sousa) | ok | 6979 |
| [edubarbieri](./participantes/edubarbieri) | ok | 2 |
| [eigr](./participantes/eigr) | ok | 21 |
| [elixiremfoco](./participantes/elixiremfoco) | falha - [logs](./participantes/elixiremfoco/docker-compose.logs) | -- |
| [engylemure](./participantes/engylemure) | ok | 5 |
| [eu_fountai](./participantes/eu_fountai) | ok | 5 |
| [exemplo](./participantes/exemplo) | ok | 5 |
| [fabiokleis](./participantes/fabiokleis) | ok | 7 |
| [felipemarkson](./participantes/felipemarkson) | ok | 7 |
| [fielcapao](./participantes/fielcapao) | ok | 31 |
| [fraidev](./participantes/fraidev) | ok | 1 |
| [gabrielfmagalhaes](./participantes/gabrielfmagalhaes) | falha - [logs](./participantes/gabrielfmagalhaes/docker-compose.logs) | -- |
| [gabrielluciano-vertx](./participantes/gabrielluciano-vertx) | ok | 1 |
| [gasparbarancelli](./participantes/gasparbarancelli) | ok | 7 |
| [gasparbarancelli-h2-database](./participantes/gasparbarancelli-h2-database) | ok | 12 |
| [gavageovanni](./participantes/gavageovanni) | ok | 4 |
| [geffersonFerraz-http2](./participantes/geffersonFerraz-http2) | ok | 3 |
| [geffersonFerraz-http3](./participantes/geffersonFerraz-http3) | ok | 6 |
| [geraldojrcg-elixir](./participantes/geraldojrcg-elixir) | ok | 6 |
| [gilmardealcantara](./participantes/gilmardealcantara) | ok | 332 |
| [giovannibassi](./participantes/giovannibassi) | ok | 4 |
| [giovannibassi-vb](./participantes/giovannibassi-vb) | ok | 4 |
| [gmrms](./participantes/gmrms) | ok | 6 |
| [gustavoramos00](./participantes/gustavoramos00) | ok | 144 |
| [gwoliveira-no-db-lock](./participantes/gwoliveira-no-db-lock) | ok | 7153 |
| [halexv](./participantes/halexv) | ok | 2263 |
| [hiroshimorowaka](./participantes/hiroshimorowaka) | ok | 10 |
| [ilosamart](./participantes/ilosamart) | ok | 1 |
| [impedro29-performance](./participantes/impedro29-performance) | falha - [logs](./participantes/impedro29-performance/docker-compose.logs) | -- |
| [isadora-souza](./participantes/isadora-souza) | ok | 7 |
| [italopussi](./participantes/italopussi) | ok | 2174 |
| [itujo](./participantes/itujo) | ok | 7 |
| [java-cassiogangrel](./participantes/java-cassiogangrel) | ok | 7 |
| [jojodev](./participantes/jojodev) | ok | 11 |
| [jonattas_bunjs](./participantes/jonattas_bunjs) | ok | 59 |
| [josebaroni](./participantes/josebaroni) | ok | 4 |
| [josebaroni-postgrest](./participantes/josebaroni-postgrest) | ok | 5 |
| [jpaf](./participantes/jpaf) | falha - [logs](./participantes/jpaf/docker-compose.logs) | -- |
| [jpcairesf-java](./participantes/jpcairesf-java) | falha - [logs](./participantes/jpcairesf-java/docker-compose.logs) | -- |
| [kaikelfalcao](./participantes/kaikelfalcao) | ok | 9060 |
| [kalelMartinho_fastapi](./participantes/kalelMartinho_fastapi) | ok | 13 |
| [kiro-tagama](./participantes/kiro-tagama) | ok | 60000 |
| [krymancer](./participantes/krymancer) | ok | 60000 |
| [lazaronixon](./participantes/lazaronixon) | ok | 7 |
| [leandro-sousa](./participantes/leandro-sousa) | ok | 9886 |
| [leoralph](./participantes/leoralph) | ok | 5 |
| [lmtani](./participantes/lmtani) | ok | 7 |
| [lobomfz](./participantes/lobomfz) | ok | 94 |
| [lobomfz-rust](./participantes/lobomfz-rust) | ok | 137 |
| [lpicanco](./participantes/lpicanco) | ok | 2 |
| [lpicanco-cpp](./participantes/lpicanco-cpp) | ok | 2 |
| [lsfratel](./participantes/lsfratel) | ok | 6 |
| [lubien-phoenixqlite](./participantes/lubien-phoenixqlite) | ok | 3 |
| [lucas-hsm](./participantes/lucas-hsm) | ok | 5 |
| [lucianovilela](./participantes/lucianovilela) | falha - [logs](./participantes/lucianovilela/docker-compose.logs) | -- |
| [luizfrra](./participantes/luizfrra) | ok | 68 |
| [macgarcia](./participantes/macgarcia) | ok | 2 |
| [marcoagpegoraro](./participantes/marcoagpegoraro) | ok | 10 |
| [marincor](./participantes/marincor) | ok | 14545 |
| [mateus4k](./participantes/mateus4k) | ok | 8 |
| [mateuscolvr](./participantes/mateuscolvr) | ok | 34 |
| [matheusleal](./participantes/matheusleal) | ok | 8 |
| [maxwell](./participantes/maxwell) | ok | 139 |
| [met4tron-nodejs](./participantes/met4tron-nodejs) | ok | 8122 |
| [murilochianfa](./participantes/murilochianfa) | ok | 2 |
| [mvellasco](./participantes/mvellasco) | ok | 2200 |
| [nicolasmmb](./participantes/nicolasmmb) | ok | 5 |
| [nyxawaits](./participantes/nyxawaits) | falha - [logs](./participantes/nyxawaits/docker-compose.logs) | -- |
| [oloko64](./participantes/oloko64) | ok | 1 |
| [olukkas](./participantes/olukkas) | ok | 3 |
| [omurilo](./participantes/omurilo) | ok | 3 |
| [PatrickChagastavares](./participantes/PatrickChagastavares) | ok | 4 |
| [rafaelpadovezi](./participantes/rafaelpadovezi) | ok | 1 |
| [ramondelemos](./participantes/ramondelemos) | falha - [logs](./participantes/ramondelemos/docker-compose.logs) | -- |
| [rdenadai_python](./participantes/rdenadai_python) | ok | 9 |
| [recoba](./participantes/recoba) | ok | 5 |
| [reonardoleis](./participantes/reonardoleis) | ok | 5 |
| [rhsobr-bun](./participantes/rhsobr-bun) | falha - [logs](./participantes/rhsobr-bun/docker-compose.logs) | -- |
| [rodolphovs](./participantes/rodolphovs) | ok | 1 |
| [rodrigocaldeira](./participantes/rodrigocaldeira) | ok | 459 |
| [ronaldo_scardini](./participantes/ronaldo_scardini) | ok | 4 |
| [samluiz](./participantes/samluiz) | ok | 4 |
| [samueljansem](./participantes/samueljansem) | falha - [logs](./participantes/samueljansem/docker-compose.logs) | -- |
| [stefannovasky](./participantes/stefannovasky) | ok | 6 |
| [taciossbr](./participantes/taciossbr) | ok | 137 |
| [thiagosantana](./participantes/thiagosantana) | falha - [logs](./participantes/thiagosantana/docker-compose.logs) | -- |
| [thusspokebieu-activej](./participantes/thusspokebieu-activej) | falha - [logs](./participantes/thusspokebieu-activej/docker-compose.logs) | -- |
| [victor-macedo](./participantes/victor-macedo) | ok | 131 |
| [viniciusfcf](./participantes/viniciusfcf) | ok | 3 |
| [vitorrt-nodejs](./participantes/vitorrt-nodejs) | ok | 7 |
| [vkobinski](./participantes/vkobinski) | falha - [logs](./participantes/vkobinski/docker-compose.logs) | -- |
| [williansugiyama](./participantes/williansugiyama) | ok | 9 |
| [yMarceloMaia](./participantes/yMarceloMaia) | ok | 1117 |
| [zsantana](./participantes/zsantana) | ok | 3 |
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,27 @@ class RinhaBackendCrebitosSimulation
)
)

val validacaConcorrentesNumRequests = 25
val validacaoTransacoesConcorrentes = (tipo: String) =>
scenario(s"validação concorrência transações - ${tipo}")
.exec(
http("validações")
.post(s"/clientes/1/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "${tipo}", "descricao": "validacao"}"""))
.check(status.is(200))
)

val validacaoTransacoesConcorrentesSaldo = (saldoEsperado: Int) =>
scenario(s"validação concorrência saldo - ${saldoEsperado}")
.exec(
http("validações")
.get(s"/clientes/1/extrato")
.check(
jmesPath("saldo.total").ofType[Int].is(saldoEsperado)
)
)

val saldosIniciaisClientes = Array(
Map("id" -> 1, "limite" -> 1000 * 100),
Map("id" -> 2, "limite" -> 800 * 100),
Expand All @@ -119,6 +140,13 @@ class RinhaBackendCrebitosSimulation
Map("id" -> 5, "limite" -> 5000 * 100),
)

val criterioClienteNaoEcontrado = scenario("validação HTTP 404")
.exec(
http("validações")
.get("/clientes/6/extrato")
.check(status.is(404))
)

val criteriosClientes = scenario("validações")
.feed(saldosIniciaisClientes)
.exec(
Expand All @@ -138,12 +166,7 @@ class RinhaBackendCrebitosSimulation
)
.exec(
http("validações")
.get("/clientes/6/extrato")
.check(status.is(404))
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "c", "descricao": "toma"}"""))
.check(
Expand All @@ -154,7 +177,7 @@ class RinhaBackendCrebitosSimulation
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "d", "descricao": "devolve"}"""))
.check(
Expand All @@ -165,7 +188,7 @@ class RinhaBackendCrebitosSimulation
)
.exec(
http("validações")
.get("/clientes/1/extrato")
.get("/clientes/#{id}/extrato")
.check(
jmesPath("ultimas_transacoes[0].descricao").ofType[String].is("devolve"),
jmesPath("ultimas_transacoes[0].tipo").ofType[String].is("d"),
Expand All @@ -177,35 +200,35 @@ class RinhaBackendCrebitosSimulation
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1.2, "tipo": "d", "descricao": "devolve"}"""))
.check(status.in(422))
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "x", "descricao": "devolve"}"""))
.check(status.in(422))
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "c", "descricao": "123456789 e mais um pouco"}"""))
.check(status.in(422))
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "c", "descricao": ""}"""))
.check(status.in(422))
)
.exec(
http("validações")
.post("/clientes/1/transacoes")
.post("/clientes/#{id}/transacoes")
.header("content-type", "application/json")
.body(StringBody(s"""{"valor": 1, "tipo": "c", "descricao": null}"""))
.check(status.in(422))
Expand All @@ -217,20 +240,39 @@ class RinhaBackendCrebitosSimulation
comportam individualmente.
*/
setUp(
criteriosClientes.inject(
atOnceUsers(1)
validacaoTransacoesConcorrentes("d").inject(
atOnceUsers(validacaConcorrentesNumRequests)
).andThen(
debitos.inject(
rampUsersPerSec(1).to(220).during(2.minutes),
constantUsersPerSec(220).during(2.minutes)
),
creditos.inject(
rampUsersPerSec(1).to(110).during(2.minutes),
constantUsersPerSec(110).during(2.minutes)
validacaoTransacoesConcorrentesSaldo(validacaConcorrentesNumRequests * -1).inject(
atOnceUsers(1)
)
).andThen(
validacaoTransacoesConcorrentes("c").inject(
atOnceUsers(validacaConcorrentesNumRequests)
).andThen(
validacaoTransacoesConcorrentesSaldo(0).inject(
atOnceUsers(1)
)
)
).andThen(
criteriosClientes.inject(
atOnceUsers(saldosIniciaisClientes.length)
),
extratos.inject(
rampUsersPerSec(1).to(10).during(2.minutes),
constantUsersPerSec(10).during(2.minutes)
criterioClienteNaoEcontrado.inject(
atOnceUsers(1)
).andThen(
debitos.inject(
rampUsersPerSec(1).to(220).during(2.minutes),
constantUsersPerSec(220).during(2.minutes)
),
creditos.inject(
rampUsersPerSec(1).to(110).during(2.minutes),
constantUsersPerSec(110).during(2.minutes)
),
extratos.inject(
rampUsersPerSec(1).to(10).during(2.minutes),
constantUsersPerSec(10).during(2.minutes)
)
)
)
).protocols(httpProtocol)
Expand Down
28 changes: 28 additions & 0 deletions participantes/Edmar-Sousa/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Submissão para Rinha de Backend, Segunda Edição: 2024/Q1 - Controle de Concorrência

<img src="https://upload.wikimedia.org/wikipedia/commons/c/c5/Nginx_logo.svg" alt="logo nginx" width="300" height="auto">
<br />
<img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" alt="logo do php" width="300" height="auto" />
<br />
<img src="https://upload.wikimedia.org/wikipedia/commons/2/29/Postgresql_elephant.svg" alt="logo postgres" width="200" height="auto">

## 💻 Tecnologias
- `nginx` como load balancer
- `postgres` como banco de dados
- `php` como linguagem de progração
- `hyperf` framework php

## 🚀 Repositório
- [repositório da api](https://github.com/Edmar-Sousa/rinha-backend-2024q1)

![images do relatorio do gatling](https://github.com/Edmar-Sousa/rinha-backend-2024q1/blob/master/images/RinhaBackendCreditos.png)


## Edmar Sousa

[![linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/edmar-sousa-9666b0201/)
[![github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Edmar-Sousa)




Loading

0 comments on commit 5b2b7ef

Please sign in to comment.