Я пишу тест JUnit для тестирования своего приложения. Приложение написано на Java и использует библиотеку purejavacomm. Чтобы проверить серийный парсер, я хочу настроить виртуальный последовательный порт, чтобы тест мог связываться с парсером. В дополнение к простому анализу он также динамически подключается к последовательному порту, когда он становится доступным, поэтому я не хочу использовать, скажем, PipedInputStream
.
Эта библиотека ищет файлы устройств, начинающиеся с ttyS
, ttyUSB
или ttyACM
. Из-за этого я не могу выполнить регулярный (который будет создавать последовательные порты в /dev/pts/x
):
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Я пробовал делать:
socat /dev/ttyS20 /dev/ttyS21
но это не сработает. Он не выходит или не печатает ошибку. Я попытался подключиться к /dev/ttyS20
с экраном, но он просто говорит, [screen is terminating]
.
Я просмотрел разрешения пользователя для ttyS20
(и 21), и у них обоих есть группа, dialout
(user: root), с которой мой пользователь находится (chris).
Я не хочу ничего использовать с sudo
, потому что я хочу, чтобы тест создавал последовательные привязки. Поэтому я не хочу запускать тест как root.
Я что-то пропускаю с разрешениями? Есть ли лучший способ сделать это все вместе?