我想在测试期间创建各种网络错误。我在Linux上直接在C ++中使用Berkely套接字API。我正在Boost.Test内的另一个线程中运行一个模拟服务器,它监听localhost。
例如,我想在连接期间创建超时。到目前为止,我已经尝试不在我的模拟服务器中调用accept并将backlog设置为1,然后建立多个连接,但似乎都成功连接。我认为,如果积压队列中没有空间,如果没有超时,我至少会得到连接拒绝错误。
如果可能的话,我想以编程方式执行此操作,但我会考虑使用像IPchains这样的外部程序在测试期间故意将某些数据包丢弃到某些端口,但我需要自动创建和删除规则以便我可以从我的Boost.Test单元测试中做到。
我想我可以模拟所涉及的各种系统调用,但如果可能的话,我宁愿经历真正的TCP堆栈。
想法?
答案 0 :(得分:1)
最近我做了一些密集的协议测试,我使用了click modular router。它的优点是功能强大且易于访问。如果您在Linux计算机上安装click kernel module,则可以轻松访问网络元素参数以进行设置和读取。因此,您可以将drop元素的丢失率从0更改为100%。虽然开始使用起来有点困难,但您可以用它来模拟非常复杂的事情。我个人用它(例如)来模拟不同的带宽和丢包情况来测试RTP视频流。
答案 1 :(得分:0)
还有一个类似的问题。我的建议是使用像IXIA这样的网络流量生成器。它允许您以可重复的方式执行许多可能的协议测试组合。