Создание сетевых ошибок TCP для модульного тестирования - PullRequest
2 голосов
/ 18 июня 2010

Я хотел бы создать различные сетевые ошибки во время тестирования.Я использую API сокетов Berkely непосредственно в C ++ в Linux.Я запускаю фиктивный сервер в другом потоке из Boost.Test, который прослушивает localhost.

Например, я хотел бы создать тайм-аут во время соединения.До сих пор я пытался не вызывать accept на моём фиктивном сервере и устанавливать значение backlog равным 1, а затем устанавливать несколько соединений, но все, кажется, успешно соединяются.Я бы подумал, что если бы не было места в очереди невыполненных работ, я бы, по крайней мере, получил бы ошибку отказа в соединении, если бы не тайм-аут.рассмотрите возможность использования чего-то внешнего, такого как IPchains, чтобы преднамеренно отбрасывать определенные пакеты на определенные порты во время тестирования, но мне нужно было бы автоматизировать создание и удаление правил, чтобы я мог делать это в рамках своих тестов модуля Boost.Test.Я мог бы посмеяться над различными системными вызовами, но я бы предпочел пройти через настоящий стек TCP, если это возможно.

Идеи?

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Когда я недавно проводил интенсивное тестирование протокола, я использовал click модульный маршрутизатор . Преимущество в том, что он достаточно мощный и относительно легко доступен. Если вы устанавливаете click как модуль ядра на компьютере с Linux, вы можете легко получить доступ к параметрам сетевых элементов как для установки, так и для чтения. Так, например, вы можете изменить коэффициент потерь элемента выпадения с 0 до 100%. Хотя это немного сложнее, но вы можете имитировать довольно сложные вещи. Я лично использовал его (например) таким образом, чтобы имитировать изменяющуюся полосу пропускания и обстоятельства потери пакетов для тестирования видеопотока RTP.

0 голосов
/ 18 июня 2010

Был еще один вопрос, похожий на этот. Я рекомендую использовать генератор сетевого трафика, такой как IXIA . Это позволит вам повторять множество возможных комбинаций тестирования протокола.

...