2010-01-17 2 views
2

Я бы хотел написать тесты для простого байт-ориентированного протокола, используя что-то вроде Expect. Тестовые сценарии будет выглядеть как обычный поток:Ожидающий инструмент для тестирования бинарных протоколов

send "data" 
expect "data" 

(Где отправить запись в стандартный вывод и ожидать, что читает достаточно просто из стандартного ввода, выхода, если он не соответствует.)

Я не могу использовать ожидать себя потому, что он предназначен для буферизованных, ориентированных на линию взаимодействий. Соответствие шаблону с помощью grep или awk отсутствует по той же причине.

Есть ли инструмент или библиотека UNIX, которую я могу использовать? Еще лучше, если он стандартный и портативный, так как он должен интегрироваться с существующей программой.

ответ

1

Несколько уродливым решением было бы написать небольшой скрипт perl или python, который преобразует двоичный поток в текстовые шестнадцатеричные числа, а затем использует Expect для работы с этим.

+0

Похоже, что я проанализирую протокол с помощью perc getc(). Не мой любимый язык, чтобы учиться, но он * вездесущ. – Tobu

+0

pack/unpack был бы лучшим для «анализа» протокола и getc впечатляюще плохим выбором для нестрочного ориентированного двоичного протокола. используйте чтение и печать (или sysread и syswrite, чтобы избежать буферизации), чтобы говорить с другой стороны. – MkV

0

pexpect должен позволить вам использовать двоичные (байтовые строки) без каких-либо проблем, если вы в порядке с Python для логики - и это чистый-Python и переносимый на все достаточно платформы unix-y (в основном один с pty; -). Аналогично, регулярные выражения Python и другие манипуляции с строками байтов не имеют проблем с какой-либо двоичной строкой; и стандартные библиотечные модули Python, такие как struct и array, облегчают манипуляции с такими двоичными байтовыми строками и их преобразование назад и вперед в другие типы значимых представлений для данных.

Смежные вопросы