我正在尝试为akka群集构建一个大脑分裂解析器。但是很难模拟某些节点无法从原始群集的其余部分到达并形成自己的群集的情况。
无法通过停止和重新启动节点来完成,因为新启动的节点不同,因为这些节点的UID已更改。
测试指挥中的{p>network failure injection
似乎很有希望,但我没有找到任何关于它的文档。那么,我该如何创建网络分区方案呢?
答案 0 :(得分:0)
我最近正在编写裂脑解析器,这些是测试技巧,我发现它们很有用:
在进行全面模拟之前,可能值得用单元测试覆盖部分代码。 Akka项目本身使something similar具有AutoDown功能。您只需模拟事件并将消息发送到DowningProvider并检查它是否相应答复。无需复杂的设置即可帮助测试某些极端情况。
为模拟集群和网络拆分,我使用了multi-jvm testing。查看Akka的SplitBrainSpec或WeeklyUpSpec。它们有时比文档有用得多。为了创建网络拆分testConductor.blackhole
,应使用拆分testConductor.passThrough
。我发现始终设置障碍并不断检查当前集群状态非常重要(在运行实际测试之前,请等待所有成员加入/加入集群/请参阅网络拆分)。