【发布时间】: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