【问题标题】:Creating TCP network errors for unit testing为单元测试创​​建 TCP 网络错误
【发布时间】:2011-03-05 07:10:20
【问题描述】:

我想在测试期间创建各种网络错误。我在 Linux 上的 C++ 中直接使用 Berkely 套接字 API。我正在 Boost.Test 中的另一个线程中运行一个模拟服务器,该线程在 localhost 上侦听。

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

如果可能的话,我希望以编程方式完成这一切,但我会考虑在测试期间使用 IPchains 之类的外部工具来故意将某些数据包丢弃到某些端口,但我需要自动创建和删除规则,以便我可以在我的 Boost.Test 单元测试中进行。

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

想法?

【问题讨论】:

    标签: c++ unit-testing sockets tcp mocking


    【解决方案1】:

    当我最近进行一些密集的协议测试时,我使用了click modular router。优点是它非常强大且相对容易访问。如果您在 linux 机器上将 click 安装为 kernel module,您可以轻松访问网络元素参数以进行设置和读取。例如,您可以将丢弃元素的丢失率从 0 更改为 100%。虽然入门有点困难,但您可以用它模拟相当复杂的事情。我个人用它(例如)这种方式来模拟不同的带宽和丢包情况来测试 RTP 视频流。

    【讨论】:

      【解决方案2】:

      还有一个类似的问题。我的建议是使用像IXIA 这样的网络流量生成器。它将允许您以可重复的方式进行许多可能的协议测试组合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多