2015-06-06 2 views
-1

Я часто обнаружил, что хочу протестировать различные неблокирующие коды сокетов, но я не уверен, как имитировать (или иным образом преднамеренно вызывать) событие для проверки неблокирующих чтений/записи и различные буферы в игре - другими словами, вызывать «блокирующее событие» в данном сокете.Как имитировать событие блокировки для тестирования неблокирующего сокета

Как это сделать? Я предполагаю, что для этого потребуется низкий уровень контроля над сеансом TCP, чтобы преднамеренно вызвать ошибку EWOULDBLOCK на принимающем сокете

+0

Взгляните на [TestSocket] (http://sockettest.sourceforge.net/) или [это] (http://stackoverflow.com/questions/515328/good-tool-for-testing-socket- соединения), в котором перечислены различные тестовые рамки. – Jens

+0

Ваши предложения, похоже, просто отправляют команды для имитации обычного сервера или клиента. В моем случае тестовый клиент должен приостановить сеанс TCP, чтобы имитировать чрезмерную задержку передачи. Другими словами, ему пришлось бы отложить отправку конца пакета или кадра или задержать ACK (без повторной передачи), не позволяя удаленной конечной точке получать то, что она видит в целом, и возвращать без ошибок. – JSON

ответ

0

Если у вас есть набор точных сценариев, с которыми вы хотите проверить программу, вы можете использовать ScaPy для отправлять произвольные пакеты с требуемыми задержками. Можно начать с захваченного сеанса в формате *.pcap, так что вам не придется вручную обрабатывать все пакеты, просто изменять/добавлять/задерживать некоторые, возможно генерировать сценарий тестирования и т. Д. См. Sending packets from pcap with changed src/dst in scapy. TCPReplay также может воспроизводить файл *.pcap с желаемой скоростью (пакеты/сек).

Если вы хотите протестировать свою программу в жесткой сетевой среде (например, имитировать потерю пакетов и повторную передачу), для этого есть доступные инструменты. г. для Linux взгляните на Simulate delayed and dropped packets on Linux (и ссылки на инструменты Windows оттуда).

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