Skip to content

zelflod/technopark-db-forum

Repository files navigation

Курсовой проект "Форум" по курсу СУБД Технопрка Mail.ru

  • собрать контейнер sudo docker build -t nozimdev/tech-db .

  • остановить работу контейнера docker stop nozimdev

  • удалить контейнер docker rm nozimdev

  • запустить контейнер sudo docker run -p 5000:5000 --name nozimdev -t nozimdev/tech-db

  • нагрузочное тестирование ./tech-db-forum perf -u http://localhost:5000/api -i -t=8. Скомпилированные программы для тестирования см. ниже.

Тестирование

Результат тестирования:

  • 2500 rps

Особенности проведения тестов:

  • Размер проверямой ветки репозитория, включая всю историю, не более 5MB (это довольно много: эталонная работа имеет размер ~200KB);
  • На сборку контейнера отводится не более 15-ти минут;
  • На заполнение базы отводится не более 15-ти минут;
  • Нагрузка идёт 10 раз в течение 1-ой минуты в 8 потоков. Учитывается лучший результат.

Технические характеристики стенда:

  • SSD: Samsung 850 Evo 250GB
  • CPU: Intel® Core™ i5-7400

Лимиты на тестовое окружение:

  • Docker host на виртуальная машина QEMU/KVM;
  • OS: Ubuntu 18.04;
  • CPU: 2 core;
  • RAM: 1.5GB у Docker host, 1.0GB у контейнера;
  • SSD: 300 IOPS total;

Задание:

Тестовое задание для реализации проекта "Форумы" на курсе по базам данных в Технопарке Mail.ru (https://park.mail.ru).

Суть задания заключается в реализации API к базе данных проекта «Форумы» по документации к этому API.

Таким образом, на входе:

  • документация к API;

На выходе:

  • репозиторий, содержащий все необходимое для разворачивания сервиса в Docker-контейнере.

Документация к API

Документация к API предоставлена в виде спецификации OpenAPI: swagger.yml

Документацию можно читать как собственно в файле swagger.yml, так и через Swagger UI (там же есть возможность поиграться с запросами): https://tech-db-forum.bozaro.ru/

Требования к проекту

Проект должен включать в себя все необходимое для разворачивания сервиса в Docker-контейнере.

При этом:

  • файл для сборки Docker-контейнера должен называться Dockerfile и располагаться в корне репозитория;
  • реализуемое API должно быть доступно на 5000-ом порту по протоколу http;
  • допускается использовать любой язык программирования;
  • крайне не рекомендуется использовать ORM.

Контейнер будет собираться из запускаться командами вида:

docker build -t a.navrotskiy https://github.com/bozaro/tech-db-forum-server.git
docker run -p 5000:5000 --name a.navrotskiy -t a.navrotskiy

В качестве отправной точки можно посмотреть на примеры реализации более простого API на различных языках программирования: https://github.com/bozaro/tech-db-hello/

Функциональное тестирование

Корректность API будет проверяться при помощи автоматического функционального тестирования.

Методика тестирования:

  • собирается Docker-контейнер из репозитория;
  • запускается Docker-контейнер;
  • запускается скрипт на Go, который будет проводить тестирование;
  • останавливается Docker-контейнер.

Скомпилированные программы для тестирования можно скачать по ссылкам:

Для локальной сборки Go-скрипта достаточно выполнить команду:

go get -u -v github.com/bozaro/tech-db-forum
go build github.com/bozaro/tech-db-forum

После этого в текущем каталоге будет создан исполняемый файл tech-db-forum.

Запуск функционального тестирования

Для запуска функционального тестирования нужно выполнить команду вида:

./tech-db-forum func -u http://localhost:5000/api -r report.html

Поддерживаются следующие параметры:

Параметр Описание
-h, --help Вывод списка поддерживаемых параметров
-u, --url[=http://localhost:5000/api] Указание базовой URL тестируемого приложения
-k, --keep Продолжить тестирование после первого упавшего теста
-t, --tests[=.*] Маска запускаемых тестов (регулярное выражение)
-r, --report[=report.html] Имя файла для детального отчета о функциональном тестировании

About

API for "Forum" DB

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published