Общая информация
Этот проект представляет собой заготовку для задачи “Дрон-огнеборец” и предназначен для получения представления об интерфейсе взаимодействия компонентов, возможных способах реализации их минимального функционала, его объеме и т.д.
Оговорка разработчика и условия использования
Пример является отправной точкой работы, но не обязательно является образцом “хорошо” или “правильно” и может быть изменен и расширен участниками в своих реализациях.
Применять только в учебных целях. Данный код может содержать ошибки, авторы не несут никакой ответственности за любые последствия использования этого кода. Условия использования и распространения - MIT лицензия (см. файл LICENSE).
Настройка и запуск
Предполагается, что настройка и подготовка хостовой и гостевой машины были осуществлены в соответствии с инструкциями, приведенными в подготовительном курсе https://stepik.org/course/133991/promo.
Системные требования
Данный пример разработан и проверен на ОС Ubuntu 22.04, авторы предполагают, что без каких-либо изменений этот код может работать на любых Debian-подобных OS, для других Linux систем. Для MAC OS как минимум необходимо использовать другой менеджер пакетов. В Windows необходимо самостоятельно установить необходимое ПО или воспользоваться виртуальной машиной с Ubuntu (также можно использовать WSL версии не ниже 2).
Используемое ПО
Стандартный способ запуска демо-версии предполагает наличие установленного пакета docker, а также docker-compose. Для автоматизации типовых операций используется утилита make и curl.
Для работы с кодом примера рекомендуется использовать Vim.
Настройка окружения и запуск примера
Подразумевается наличие развернутой по предоставленному образцу машины с установленным и настроенным ПО, например, docker и docker-compose, с выбранным интерпретатором (детальные инструкции по настройке среды разработки представлены в подготовительном курсе, ссылка на который приведена выше).
Для запуска примера рекомендуется использовать следующую комбинацию команд в терминалах 1 и 2:
1.1 (пере)сборка docker-образов
make docker
1.2 запуск примера: в контейнерах будут развернуты серверы, готовые к приему команд и начнут генерироваться и поступать необходимые сигналы
make run
Разработка
Все необходимые компоненты для разработки можно подсмотреть в файле Dockerfile (названия пакетов могут различаться).
Для удобства разработки можно собирать всё у себя на хост системе, без контейнеров, достаточно запустить сборку:
-
Для Ubuntu 22.04
make prepare && make
-
Для Ubuntu 20.04
make prepare-20 && make
Если требуется брокер, то можно запустить контейнер с ним (будет доступен с хост системы):
make mosquitto
Для тестирования компонентов посылать сообщения в очередь можно так:
mosquitto_pub -h "127.0.0.1" -t "monitor" -m "navigator,aggretation,coordinates"
Подписаться на очередь так:
mosquitto_sub -h "127.0.0.1" -t "monitor"
Дополнительные материалы для разработчика
- Документ для разработчиков включает архитектуру и подробное описание логики решения.
Тестирование
- Запуск всех автоматических тестов:
make tests
- Запускает сборку docker образа (один для всех компонентов)
- Собирает при сборке все компоненты
- Автоматически запускаются unit tests (включающие policy tests)
- Отдельно запустить policy tests можно при помощи
make policy-tests
- Отдельно запустить policy tests можно при помощи
- docker-compose проверяет не запущены ли уже контейнеры
- docker-compose запускает все необходимые компоненты
- запускаются e2e тесты
- проверяется полётное задание (А) описанное в документе Uchebnyy_primer_-_BLA_Ogneborets_arhitektura.pdf
- проверяется неавторизованное полётное задание (B)
- docker-compose останавливает все контейнеры
- Запуск системы
make run
- Запускает сборку docker образа
- docker-compose запускает все контейнеры
- журнал вывода попадет на экран
- зайти на интерфейс FPS http://localhost:8081
- запустить задание A, подождать окончание (журнал на главной странице выводит статус)
- запустить задание B, подождать окончание
Описание
FireFighter drone prototype using C++ and mosquitto message broker