假设我的节俭客户只是lose connection without any warning并不疯狂。在这种情况下,我必须检测并重新连接到服务器。
我有一个多线程的C ++程序(客户端和服务器),它使用thrift和无锁对象池等等。这是一个复杂的系统,需要进行良好的测试才能锁定和睡眠,我需要在我的单元中模拟丢失的连接试验。我的测试使用loopback(127.0.0.1)连接到thrift服务器。有没有办法模拟丢失的连接,看看我的软件如何反应和测试?
我在Linux上,Ubuntu 18.04。我不介意使用系统调用来欺骗我的测试。
如果您需要任何其他信息,请询问。我不确定我能提供更多信息。
由于你的问题被标记为单元测试,我将给出一些与单元测试相关的评论。但是,您目前正在做的事情似乎是集成测试。
在单元测试中,您将专注于独立于依赖组件测试代码。也就是说,不是使用thrift库测试代码,而是使用该库的一些模拟。您的代码不能区分它是使用真实库还是使用模拟库。模拟的行为由测试代码控制。这为您的测试代码提供了很大的自由度来练习您感兴趣的各种场景。如果您有兴趣了解它,请搜索“模拟”,“依赖注入”和“控制反转”,您将找到很多信息。
也就是说,与thrift库结合进行集成测试肯定没有错:对某些代码进行彻底测试需要进行单元测试和集成测试。这只是两者的目标和方法不同。