LINUX.ORG.RU

dbus-daemon в docker

 ,


1

2

Здравствуйте. Есть приложение, использующее dbus для обмена данными между модулями. Для юнит тестирования создаются два объекта, которы должны общаться по dbus. На хосте работает нормально, но тесты должны запускаться в docker-е. Там есть возможность доставить dbus-daemon. Подскажите, как его правильно запустить, чтобы один модуль мог зарегистрировать сервис, а второй отправлять ему сообщения. Я так понимаю, нужно использовать session bus. Полагаю, самое простое, прямо из приложения запустить dbus-daemon и потом к нему подключиться. На данный момент не получается корректно запустить демона в режиме session. При попытке подключиться к сервису, имею ошибку: error: QDBusError(«org.freedesktop.DBus.Error.NotSupported», «Unable to autolaunch a dbus-daemon without a $DISPLAY for X11»). Как это правильно реализовать?


Ответ на: комментарий от intelfx

Да, нужна session bus, но запускать ее нужно из самого теста. В моем случае используется QTest из QT. Т.е. алгоритм должен быть такой:

  • Запускается бинарник теста.
  • Он запускает dbus.
  • Создаются два объекта, которые должны тестироваться и подключаются к шине dbus.
  • Далее проводятся тесты.
  • По завершении все глушится.

Хотелось бы поднимать dbus из самого теста.

gogoer
() автор топика
Ответ на: комментарий от gogoer

Посмотри, как устроен dbus-run-session, запускай dbus-daemon руками и устанавливай нужные переменные окружения своему же процессу.

Или запускай из своего бинарника exec’ом себя же под dbus-run-session, передавая себе какой-нибудь специальный флаг.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)