README.md

    Общая информация

    Этот проект представляет собой заготовку для задачи “Дрон-огнеборец” и предназначен для получения представления об интерфейсе взаимодействия компонентов, возможных способах реализации их минимального функционала, его объеме и т.д.

    Оговорка разработчика и условия использования

    Пример является отправной точкой работы, но не обязательно является образцом “хорошо” или “правильно” и может быть изменен и расширен участниками в своих реализациях.

    Применять только в учебных целях. Данный код может содержать ошибки, авторы не несут никакой ответственности за любые последствия использования этого кода. Условия использования и распространения - 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"

    Дополнительные материалы для разработчика

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

    1. Запуск всех автоматических тестов:

    make tests

    • Запускает сборку docker образа (один для всех компонентов)
    • Собирает при сборке все компоненты
    • Автоматически запускаются unit tests (включающие policy tests)
      • Отдельно запустить policy tests можно при помощи make policy-tests
    • docker-compose проверяет не запущены ли уже контейнеры
    • docker-compose запускает все необходимые компоненты
    • запускаются e2e тесты
      • проверяется полётное задание (А) описанное в документе Uchebnyy_primer_-_BLA_Ogneborets_arhitektura.pdf
      • проверяется неавторизованное полётное задание (B)
    • docker-compose останавливает все контейнеры

    Работа make tests в SVG видео

    1. Запуск системы

    make run

    • Запускает сборку docker образа
    • docker-compose запускает все контейнеры
    • журнал вывода попадет на экран
    • зайти на интерфейс FPS http://localhost:8081
    • запустить задание A, подождать окончание (журнал на главной странице выводит статус)
    • запустить задание B, подождать окончание

    Работа make run в SVG видео

    Описание

    FireFighter drone prototype using C++ and mosquitto message broker

    Конвейеры
    0 успешных
    0 с ошибкой