Este projeto é uma API simples criada com Node.js e TypeScript. A API oferece funcionalidades básicas de CRUD com armazenamento em memória e, além disso, implementa testes de estresse controlados separadamente para CPU e memória.
- CRUD de itens em memória.
- Geração de estresse de CPU.
- Geração de estresse de memória.
- Controle individual sobre o nível de estresse de CPU e memória.
- Status do estresse aplicado.
- Node.js (>= 14.x)
- Docker (opcional, caso queira rodar via container)
- Clone o repositório:
git clone https://github.com/pravtz/node-ts-api-stress.git
cd node-ts-api-stress- Instale as dependências:
npm install- Execute em modo de desenvolvimento:
npm run dev- Para compilar e rodar o código em modo de produção:
npm run build
npm startA API roda por padrão na porta 3000. As seguintes rotas estão disponíveis:
- GET
/items: Retorna todos os itens em memória. - GET
/items/:id: Retorna o item específico com base noid. - POST
/items: Adiciona um novo item (corpo da requisição:{ "name": "Nome do item" }). - DELETE
/items/:id: Remove o item com base noid.
-
POST
/stress/start: Inicia o estresse de CPU e/ou memória por um tempo definido.- Corpo da requisição (JSON):
{ "cpuLevel": 5, "memoryLevel": 100, "duration": 5 }cpuLevel: Nível de estresse de CPU (valor numérico).memoryLevel: Quantidade de memória a ser alocada (em MB).duration: Tempo de estresse em minutos (máximo de 10 minutos). Se não for informado, será utilizado o valor padrão de 10 minutos.
- Corpo da requisição (JSON):
-
POST
/stress/stop: Para o estresse de CPU e memória imediatamente. -
GET
/stress/status: Retorna o status atual do estresse, incluindo:- Se o estresse de CPU está ativo.
- Nível de CPU configurado.
- Se o estresse de memória está ativo.
- Nível de memória alocada (em MB).
- Tempo restante de estresse (em segundos).
Se preferir rodar os tests
- Após o processo de instalação mencionado acima, rode os tests
npm run devSe preferir rodar via Docker para construir a imagem:
- Construa a imagem:
docker build -t pravtz/node-ts-api-stress .
# debug
docker build --no-cache --progress=plain -t pravtz/node-ts-api-stress .- Execute o container:
docker run -p 3000:3000 node-ts-api-stressAgora a API estará disponível em http://localhost:3000.
Envie uma requisição POST para http://localhost:3000/stress/start com o seguinte corpo:
{
"cpuLevel": 5,
"memoryLevel": 200,
"duration": 5
}- Isso iniciará estresse de CPU no nível 5 e alocará 200MB de memória por 5 minutos.
- O tempo máximo de estresse permitido é 10 minutos. Se o valor de
durationfor maior que 10, ele será ajustado para 10 minutos.
Envie uma requisição POST para http://localhost:3000/stress/stop:
{}Isso irá parar o estresse de CPU e liberar a memória aloc
ada.
Envie uma requisição GET para http://localhost:3000/stress/status para ver o status atual do estresse:
Resposta esperada:
{
"isCpuStressed": true,
"stressCpuLevel": 5,
"isMemoryStressed": true,
"stressMemoryLevel": 200,
"allocatedMemorySize": 200,
"stressDuration": 300
}Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.