Skip to content

Latest commit

 

History

History
52 lines (43 loc) · 4.6 KB

15_README.md

File metadata and controls

52 lines (43 loc) · 4.6 KB

Домашнее задание №15 «Докеризация и интеграционное тестирование Календаря»

Данное задание состоит из двух частей.

Не забываем про https://github.com/golang-standards/project-layout.

1) Докеризация сервиса

Необходимо:

  • создать Dockerfile для каждого из процессов (Календарь, Рассыльщик, Планировщик);
  • собрать образы и проверить их локальный запуск;
  • создать docker-compose файл, который запускает PostgreSQL, RabbitMQ и все микросервисы вместе (для "неродных" сервисов использовать официальные образы из Docker Hub);
  • при желании доработать конфигурацию так, чтобы она поддерживала переменные окружения (если вы используете библиотеку, то скорее всего она уже это умеет); в противном случае придется "подкладывать" конфиг сервису с помощью Dockerfile / docker-compose - при этом можно "заполнять" конфигурационный файл из переменных окружения, например
$ envsubst < config_template.json > config.json
  • если миграции выполняются руками, а не на старте сервиса, то также в docker-compose должен запускаться one-shot скрипт, который делает это (применяет SQL миграции, создавая структуру БД).
  • порты серверов, предоставляющих API, пробросить на host.

У преподавателя должна быть возможность запустить весь проект с помощью команды make up (внутри docker-compose up) и погасить с помощью make down.

HTTP API, например, после запуска должно быть доступно по URL http://localhost:8888/.

2) Интеграционное тестирование

Необходимо:

  • создать отдельный пакет для интеграционных тестов;
  • описать бизнес-сценарии на языке Gherkin в *.feature файлах;
  • реализовать все шаги сценариев с использованием библиотеки https://github.com/cucumber/godog: при этом шаги могут рассчитывать на то, что запущены в docker-compose и знают endpoint'ы всех сервисов; сценарии работают с HTTP/GRPC API календаря, при необходимости с БД и очередью сообщений;
  • создать docker-compose файл, поднимающий все сервисы проекта + контейнер с интеграционными тестами;
  • расширить Makefile командой bdd, make bdd будет запускать интеграционные тесты; не стоит смешивать это с make test, иначе CI-пайплайн не пройдёт.

Преподаватель может запустить интеграционные тесты в docker-compose с помощью команды make bdd. В случае успешного выполнения команда должна возвращать 0, иначе 1.

Критерии оценки

  • Проект полностью запускается и останавливается с помощью make up / make down - 3 балла
  • Интеграционные тесты запускаются с помощью make bdd. Команда возвращает верный код ответа - 1 балл
  • Интеграционные тесты покрывают бизнес сценарии:
    • добавление события и обработка бизнес ошибок - 2 балла
    • получение листинга событий на день/неделю/месяц - 2 балла
    • отправка уведомлений (необходимо доработать sender так, чтобы он информировал куда-то о статусе уведомления (БД/кролик)) - 2 балла

Зачёт от 7 баллов