代码之家  ›  专栏  ›  技术社区  ›  Robert S. Barnes Antoni

为单元测试创建TCP网络错误

  •  2
  • Robert S. Barnes Antoni  · 技术社区  · 14 年前

    我想在测试期间创建各种网络错误。我在Linux上直接使用C++中的BelkLeLocket API。我在Boost.test中的另一个线程中运行一个模拟服务器,它在本地主机上监听。

    例如,我想在连接期间创建一个超时。到目前为止,我尝试在模拟服务器中不调用accept并将backlog设置为1,然后进行多个连接,但似乎都成功地连接了。我会认为,如果积压工作队列中没有空间,那么如果不是超时,我至少会得到一个连接拒绝错误。

    如果可能的话,我想通过编程来实现这一切,但是我会考虑在测试过程中使用外部的东西,比如ipchains,有意地将某些数据包放到某些端口,但是我需要自动创建和删除规则,这样我就可以在我的boost.test单元测试中做到这一点。

    我想我可以模拟所涉及的各种系统调用,但如果可能的话,我宁愿经历一个真正的TCP堆栈。

    思想?

    2 回复  |  直到 14 年前
        1
  •  1
  •   KillianDS    14 年前

    当我最近做了一些密集的协议测试时,我使用了 click modular router . 它的优点是功能强大,相对容易接近。如果安装,请单击作为 kernel module 在Linux机器上,您可以轻松地访问网络元素参数,以便设置和读取它们。例如,您可以将drop元素的损失率从0更改为100%。虽然开始有点困难,但是可以用它来模拟相当复杂的事情。我个人用它(例如)来模拟不同的带宽和数据包丢失情况来测试RTP视频流。

        2
  •  0
  •   jcsf    14 年前

    还有一个类似的问题。我的建议是使用像 IXIA . 它将允许您以可重复的方式进行许多可能的协议测试组合。