使用pubma对网络进行 Chaos-testing
使用pubma对网络进行 Chaos-testing
在联盟区块链的开发过程当中,需要模拟区块链网络的抖动,并对其进行测试。本文将针对hyperchain平台,使用
pubma
进行chaos-testing
。Author: 陈权@hyperchain
0x01 问题明确
当前我们需要模拟如下场景:
- 节点在高网络延迟下的表现
- 节点在高网络丢包率下的表现
有些bug我们是在比较苛刻的网络条件下测试得到的,而按照传统的经验,我们会想办法将环境部署到互联网上进行测试,但是这种方式非常原始,而且得到的结果也具备大量的偶然性,我们想要复现相同的结果也是十分困难的,因此我们使用容器技术对不同的网络情况进行模拟,以期得到可控的网络抖动测试环境。
0x02 pumba 工具介绍
先对容器网络Chaos-testing 工具pubma
进行简单介绍,以及相关使用的说明。
What is Pubma(a)?
相信出生于90年代的小伙伴们都知道一个电影叫 The Lion King(狮子王),里面有一个角色的名字就叫Pumbaa,在Swahili语中,Pumbaa的意识是”保持愚蠢,无知,以及懒惰”。当然这个工具起这个名字的内涵大概就是想模拟一个“愚蠢的,不可预知的环境”的意思。
Pumba 能做什么?
简单地说,Pubma 能够完成包括对Docker容器的 kill
,stop
, remove
,pause
。
当然, Pubma 也能够完成网络模拟,模拟包括一系列的网络问题(延迟,丢包,使用不同的丢包模型,带宽限制等等)。针对网络模拟,Pumba使用的是Linux内核tc
netem
实现的。 如果目标container不支持tc的话,Pumba将会使用sidekick 附着到目标容器进行控制。