Chaosblade-故障注入工具

场景:一个订单请求,Step1,锁定库存,调用中台A;Step2,下订单,调用中台B;(超时导致失败)
结果:库存扣减成功。下单失败。库存扣多了。
解决方案:下单失败的时候,还原库存。
测试方法A:模拟中台故障(订单中心);结果强依赖系统导致无法触发下单场景。放弃
测试方法B:引入Chaosblade工具,基于JVM方法级构造该场景,覆盖该case;

Step1: 下单后1间房后修改订单为2间。修改成功
image.png
Step2: 注入故障

sudo -u tomcat /home/atour/tools/chaosblade-0.9.0/blade create jvm throwCustomException —process tomcat-pms-api —classname com.atour.pms.module.hotel.service.OrderFromCrsService —methodname addFolioInfo —exception java.lang.Exception

Step3: 修改订单为3间。修改失败报错。
接口现象
image.png
代码
image.png
报错
image.png
Step4: 故障销毁

sudo -u tomcat /home/atour/tools/chaosblade-0.9.0/blade destroy cfe657b89356c443

image.png
Step5: 故障恢复,重新修改房间数
image.png
踩坑:
1、注入故障后不小心关闭了Xshell。UID不见了;执行如下命令找到自己的那个ID

/home/atour/tools/chaosblade-0.9.0/blade status —type create

2、sudo -u tomcat 执行的命令;得由sudo -u tomcat 销毁;直接sudo 销毁;显示成功;但是实际 上未销毁
image.png

参考文档:
https://juejin.cn/post/6844903879814053901
https://github.com/chaosblade-io/chaosblade/
https://my.oschina.net/u/1464083/blog/3049913
https://blog.csdn.net/colorfulyan/article/details/90233068
https://blog.csdn.net/qq_34219959/article/details/97395196
新手指南
https://github.com/chaosblade-io/chaosblade/wiki/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97

中文手册
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create-disk-fill

Chaosblade实践记录:
解决场景问题:测试消息重试、幂等、分布式系统的系统间调用异常回滚方案的测试;

Stress-资源占用注入工具

https://blog.csdn.net/whatday/article/details/104477160/