Skip to content

Latest commit

 

History

History
53 lines (44 loc) · 4.65 KB

15_README.md

File metadata and controls

53 lines (44 loc) · 4.65 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) Интеграционное тестирование

Необходимо:

  • создать отдельный пакет для интеграционных тестов.
  • реализовать интеграционные тесты на языке Go; при желании можно использовать godog / ginkgo, но обязательным требованием это не является.
  • создать docker-compose файл, поднимающий все сервисы проекта + контейнер с интеграционными тестами;
  • расширить Makefile командой integration-tests, make integration-tests будет запускать интеграционные тесты; не стоит смешивать это с make test, иначе CI-пайплайн не пройдёт.
  • прикрепить в Merge Request вывод команды make integration-tests.

Преподаватель может запустить интеграционные тесты с помощью команды make integration-tests:

  • команда должна поднять окружение (docker-compose), прогнать тесты и подчистить окружение за собой;
  • в случае успешного выполнения команда должна возвращать 0, иначе 1.

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

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

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