模拟网络断开连接以在本地测试分布式应用程序分区

2024-04-30

我有几个在本地主机上运行的分布式应用程序实例;每个实例都通过某些端口与其他实例通信,所有实例一起构成一个整体。 (我实际上是在谈论动物园管理员 http://hadoop.apache.org/zookeeper/,在 Linux 上运行)

现在我想编写单元测试来模拟集成分区。
例如。我有 5 个实例,我想将它们分成两组,每组 3 个和 2 个,以便一组中的实例无法与另一组中的实例进行通信。它将模拟现实世界的情况,即一个数据中心有 3 台机器,另一个数据中心有 2 台机器,并且数据中心被分区。

问题本质上是让套接字有选择地工作:与一个套接字通信,但不与另一个套接字通信。我想到的一个解决方案是抽象通信层并向其中注入测试规则(形式为“如果我是一个组中的实例,则不允许与另一组中的实例进行对话 - 关闭套接字”)或忽略数据或其他什么”)。

但也许有一些工具可以实现这一点,也许有一些测试框架? 一般来说,您如何在分布式应用程序中测试此类情况?


附:虽然问题被标记为“java”(因为 ZooKeeper 是用 Java 编写的),但很高兴听到任何其他语言或独立于语言的解决方案——也许是一些 Linux 大师的技巧。


也许这个答案会为某人节省几个小时的谷歌搜索时间。

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

iptables -A INPUT -p tcp --sport <source port> --dport <dest port> -j DROP

虽然从任何角度来看都不是一个成熟的单元测试框架,但这对我的情况下的手动测试有一点帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟网络断开连接以在本地测试分布式应用程序分区 的相关文章

随机推荐

  • 将自行车分配给人员 - 第一优先级(距离最近的人最近的自行车)

    将网格传递给某个位置有自行车和人员的函数 c A a b D d B C Output 像这样的东西 A 1 B 3 C 8 D 1 其中 A 是人 1 是到达自行车所需的步数 标准 距离自行车最近的人 优先获得自行车 单辆自行车不能分配给
  • 如何让 gcc/clang 警告 switch 语句中缺少中断

    有什么办法可以使gcc or clang警告 switch 语句中缺少中断 具体来说 我几乎总是希望 case 语句以中断结束 如果我不这样做的话 如果我能让编译器抱怨 那就太好了 如果它会寻找一个break语句或一个 fall throu
  • 如何在此 API 中声明全局变量?

    我的应用程序有一个production or development我可以切换的设置 设置服务器时 我在中设置了这个标志Applications gt Mamp gt Conf gt Apache gt httpd conf 它的目的是给我
  • 在学说监听器中插入元素

    我已经设置了一个学说监听器 它在不同的数据库操作上触发并创建一个日志实体并将其插入数据库 class FOO public function onFlush OnFlushEventArgs args foreach args gt get
  • 获取月份名称而不是数字

    我正在使用 jQuery 日期选择器插件 我可以通过以下方式获取月份数 datepicker datepicker getDate getMonth 1 如何直接获取月份名称 即不使用switch case 如果您想要一个简单的解决方案 就
  • 在基于 Android Gradle 的项目中设置集成测试

    我正在跟进this http www petrikainulainen net programming gradle getting started with gradle integration testing 将集成测试环境添加到我的
  • 在 Obj C 中使用 Brad Larson GPUImage 创建照片草图效果

    您好 我想尝试使用 Brad Larson 的照片上的素描效果GPUImage sdk in iOS 我正在尝试创建这样的草图效果 但我得到的素描效果是这样的 我正在使用 GPUImageSketchFilter 来创建此效果 以下是我为实
  • 如何让 lodash 与 Angular JS 一起工作?

    我正在尝试使用 lodash 使用它ng repeat指令 以这种方式 div div Hello n div div Being GridController IndexModule controller GridController f
  • 如果 POSIX 系统上不存在目录,是否有办法自动创建该目录?

    POSIX 系统上是否有任何方法可以仅在目录尚不存在时才自动创建该目录 如同 int fd open path to file O CREAT O EXCL O RDWR 0644 这不起作用 int dfd open path to di
  • 计算串行通信的块校验字符 (BCC)

    我通过 NET 的 SerialPort 类通过串行与设备进行通信 并且根据第三方设备规范要求 我需要计算 块检查字符 我被告知的唯一信息是 这是一个异或运算 XOR 并且必须对所有角色执行 那么 如果我有字符串 Bob 001 将如何计算
  • 如何在RecyclerView中实现setOnScrollListener

    当用户到达列表中可见的项目时 如何在底部显示进度栏 我已经编写了一个代码 其中我使用网络服务获取数据 现在我想填充部分记录 因为我有大约630 条记录在我的 JSON 中 这是我用来从 JSON 获取数据并填充到 RecyclerView
  • 如何根据开始和结束条件过滤数据?

    我试图根据依赖于连续日期的两个条件来过滤数据 我在寻找对于 5 个以上的连续日期 值低于 2 with a 缓冲期 of 值 2 到 5 最多连续 3 天 它看起来像这样 很抱歉这里的 Excel 尝试很糟糕 第 1 天到第 10 天将包括
  • Java正则表达式以数字和固定长度开头的字符串

    我制作了一个正则表达式来检查 String 的长度 所有字符都是数字并以数字开头 例如 123 以下是我的表情 REGEX 123 d 9 但它无法检查字符串的长度 它仅验证那些长度为 9 并以 123 开头的字符串 但如果我传递字符串 1
  • 如何在WPF中使用Application.Exit事件?

    我需要删除一些特定文件 然后用户关闭 WPF 中的程序 所以我从这里尝试了 MDSN 代码http msdn microsoft com en us library system windows application exit aspx
  • csharp类可以像java类一样“继承”xml文档吗?

    我正在向一些csharp代码添加注释 并且我正在使用 net 或其他东西 提供的xml语言 我有一个接口和一些实现类 我在界面中有一个方法 它有一个注释 在实现类中没有对实现方法进行注释 当人们在java中这样做时 javadoc在生成文档
  • 如何将 Bootstrap 轮播指示器更改为点?

    我正在使用 Bootstrap 4 Beta 2 版本来做轮播 代码如下所示 ol class carousel indicators li class active li li li li li ol And the
  • pthread_join() 中的阻塞

    根据手册页 pthread join 函数应暂停调用的执行 线程直到目标线程终止 除非目标线程 已经终止了 因此 据我了解 调用进程将阻塞 直到指定的线程退出 现在考虑以下代码 pthread t thrs NUMTHREADS for i
  • Android 中的离屏绘图

    android 中是否可以像 Objective C 中的 imageContext 那样进行离屏绘图 如果有的话 请告诉我链接或某种提示 多谢 我相信您正在寻找Canvas http developer android com refer
  • Mercurial revset 用于在提交后查找下一个标签

    我如何找到next tag在特定变更集修订之后 例如 如果变更集中引入了错误abcdef123456 如何找到包含此错误的第一个版本 标签 我想我可以使用HG 转速 https hg mozilla org mozilla central
  • 模拟网络断开连接以在本地测试分布式应用程序分区

    我有几个在本地主机上运行的分布式应用程序实例 每个实例都通过某些端口与其他实例通信 所有实例一起构成一个整体 我实际上是在谈论动物园管理员 http hadoop apache org zookeeper 在 Linux 上运行 现在我想编