Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 3.27 KB

README.md

File metadata and controls

80 lines (60 loc) · 3.27 KB

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

Назначение

Утилита для измерения производительности и оценки отказоустойчивости 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