Skip to content

6jodeci/saina-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание

Назначение

Утилита для измерения производительности и оценки отказоустойчивости API.

Функциональные требования

  • Запуск чеков каждые t секунд (задается флагом)

  • Чеки представляют собой распараллеленные n запросов к тестируемому API

  • Сохранение результатов каждого чека в файл

Вывод и аналитическая интерпретация результатов:

  • Процент успешных/неуспешных запросов

  • Среднее время ответа

  • Диаграммы распределения кодов ответа

Технические требования

  • Используемый язык: Go

  • Использование горутин для распараллеливания запросов

  • Остановка чека по таймауту или отмене контекста

  • Docker контейнер для запуска утилиты

  • Хранение результатов тестов в файле внутри контейнера

  • Возможность получить результаты теста из контейнера

Интерфейс командной строки

Пример вызова без Docker:

go run main.go -u "https://jsonplaceholder.typicode.com/posts" -n 10 -i 5s -t 30s

Где:

  • -u URL тестируемого API

  • -n Количество параллельных запросов в чеке

  • -i Интервал между чеками в секундах

  • -t Таймаут одного чека в секундах

Результат вызова:

2023/07/29 13:57:43 Тестируемый URL: https://jsonplaceholder.typicode.com/posts
2023/07/29 13:57:43 Количество параллельных запросов в чеке: 1
2023/07/29 13:57:43 Интервал между чеками: 10.00 s
2023/07/29 13:57:43 Таймаут одного чека: 10.00 s
2023/07/29 13:57:43 ------------------------------------------
2023/07/29 13:57:43 Запуск чека...
2023/07/29 13:57:43 Успешных запросов: 100.00%
2023/07/29 13:57:43 Средняя задержка: 179 мс
2023/07/29 13:57:43 Коды ответов от сервера: [200]
2023/07/29 13:57:43 Чек завершен.
2023/07/29 13:57:43 ------------------------------------------
2023/07/29 13:57:45 Получен сигнал SIGINT. Завершение чека...

Запуск приложения используя Makefile:

  1. Сборка Docker-образа приложения:
make dockerBuild
  1. Создание внешнего Docker volume. Используется для сохранения результатов тестов между различными запусками контейнера:
make createVolume
  1. Запуск контейнера с использованием созданного Docker-образа:
make docker
  1. Копирование результатов тестов из контейнера:
make extractFiles

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published