Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aleroxac/goexpert-stresstest
goexpert-stresstest
https://github.com/aleroxac/goexpert-stresstest
channels cobra-cli concurrency docker fullcycle go goexpert golang mutex paralelism stress-testing waitgroups
Last synced: about 2 months ago
JSON representation
goexpert-stresstest
- Host: GitHub
- URL: https://github.com/aleroxac/goexpert-stresstest
- Owner: aleroxac
- Created: 2024-06-01T19:50:25.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-01T23:30:51.000Z (7 months ago)
- Last Synced: 2024-07-12T05:03:12.186Z (6 months ago)
- Topics: channels, cobra-cli, concurrency, docker, fullcycle, go, goexpert, golang, mutex, paralelism, stress-testing, waitgroups
- Language: Go
- Homepage: https://github.com/aleroxac/goexpert-stresstest
- Size: 5.86 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# goexpert-stresstest
Projeto do Desafio Técnico "Sistema de Stress test" do treinamento GoExpert(FullCycle).## O desafio
Criar um sistema CLI em Go para realizar testes de carga em um serviço web.
O usuário deverá fornecer a URL do serviço, o número total de requests e a quantidade de chamadas simultâneas.
O sistema deverá gerar um relatório com informações específicas após a execução dos testes.## Como rodar o projeto: manual
``` shell
docker build -t aleroxac/goexpert-stresstest:v1 .
docker run aleroxac/goexpert-stresstest:v1 -—url=http://google.com -—requests=10 —-concurrency=2
```## Como rodar o projeto: make
``` shell
make build
make runc
```## Funcionalidades da Linguagem Utilizadas
- cli: cobra
- net/http
- contexts
- waitgroups
- channels
- mutex## Requisitos: parâmetros
Entrada de Parâmetros via CLI:
- `--url`: URL do serviço a ser testado.
- `--requests`: Número total de requests.
- `--concurrency`: Número de chamadas simultâneas.## Requisitos: execução do teste
- Realizar requests HTTP para a URL especificada.
- Distribuir os requests de acordo com o nível de concorrência definido.
- Garantir que o número total de requests seja cumprido.## Requisitos: relatório
Apresentar um relatório ao final dos testes contendo:
- Tempo total gasto na execução
- Quantidade total de requests realizados.
- Quantidade de requests com status HTTP 200.
- Distribuição de outros códigos de status HTTP (como 404, 500, etc.).## Requisitos: execução do app
Poderemos utilizar essa aplicação fazendo uma chamada via docker. Ex:
``` shell
docker run --url=http://google.com -—requests=1000 —-concurrency=10
```