加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 仿真网络断开连接以本地测试分布式应用程序分区

发布时间:2020-12-14 19:11:36 所属栏目:Java 来源:网络整理
导读:我有几个在localhost上运行的分布式应用程序实例;每个实例都通过某些端口与其他实例进行通信,所有实例共同构成一个整体. (我实际上是在谈论ZooKeeper,在Linux上运行) 现在我想编写单元测试来模拟整体分区. 例如.我有5个实例,我想将它们分成两组,每组3和2,这

我有几个在localhost上运行的分布式应用程序实例;每个实例都通过某些端口与其他实例进行通信,所有实例共同构成一个整体.
(我实际上是在谈论ZooKeeper,在Linux上运行)

现在我想编写单元测试来模拟整体分区.
例如.我有5个实例,我想将它们分成两组,每组3和2,这样一个组中的实例就无法与另一个组中的实例进行通信.当3台机器在一个数据中心,2台机器在另一台数据中心,数据中心被分区时,它将模拟真实情况.

问题主要是使套接字选择性地工作:与一个套接字说话,但不要与另一个套接字说话.我想到的一个解决方案是抽象通信层并将测试规则注入其中(以“如果我是来自一个组的实例我不允许与另一个组的实例对话 – 关闭套接字”的形式或忽略数据或其他任何“).

但也许存在一些工具,可能是一些测试框架?
一般来说,您如何在分布式应用程序中测试此类案例?

附:虽然问题被标记为“java”(因为ZooKeeper是用Java编写的),但是听到任何其他语言的解决方案或者与语言无关的语言 – 可能是一些Linux大师技巧 – 真是太棒了.

最佳答案
也许这个答案可以节省几个小时的谷歌搜索.

Linux有一个非常好的防火墙实用程序,iptables.它允许您阻止进程之间的通信,如下所示:

iptables -A INPUT -p tcp --sport 

虽然不是一个完整的单元测试框架,但在我的案例中,这有助于手动测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读