基于locust和boomer核心,使用基于etcd做为压测机服务发现。
使用gRPC推送http请求事务描述信息,让压测机自己构造http接口测试任务。
使用postman类似的界面管理http请求事务描述信息。
目前是核心且基本框架及功能的完成,如有更多的要求比如任务隔离,执行历史管理......这就是你的事了。
拷贝了原版locust的main.py及webUI和前端部分代码进行修改。
在boomer之上增加了gRPC服务,能解析master发来的http接口测试任务描述信息并生成boomer的任务
boomer及grequests源码部分地方做了小改动--主要避免异常退出。
【1】boomer源码的github.com\myzhan\boomer\runner.go(行221)
中close channel某些情况化因为重复关闭会造成异常关闭, 这里最好加上recover处理:
defer func(){
r:=recover();if r!=nil{
fmt.Println("处理Boomer关闭遇到异常:",r)
}}()
etcd下载地址: https://github.com/etcd-io/etcd/releases/download/v3.3.25/etcd-v3.3.25-windows-amd64.zip
etcd.exe --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379
pip install grpcio
pip install grpcio-tools
pip install etcd3
pip install locust==1.2.3
python3 main.py --master-host=192.168.23.222 [--step-load]
压力器上,执行此程序(假定etcd的ip:192.168.23.222)
- boomerHazardServer -EtcdAddr 192.168.23.222:2379 -Host 压力器自己的ip [-Port 3000]
- 1- 需要先安装proto工具,注意对应protoc-gen-go需要v1.3.2): 进入pkg\mod\github.com\golang\protobuf@v1.3.2,执行build命令生成执行文件protoc-gen-go,并替换GOPATH下bin/protoc-gen-go(与protoc同一个目录)
- 2-在proto文件夹下,执行命令生成pb文件:protoc --go_out=plugins=grpc:. *.proto --python_out=.
- 3-在页面上提交事务,worker会遇到报错:error gomq/zmtp: Got error while receiving greeting: Version 3.0 received does match expected version 3.1 解决方法:修改 mod\github.com\zeromq\gomq\zmtp\protocol.go 中的minorVersion uint8 = 1 改成 0
go build boomerHazardServer.go
注:Windows编译linux,先在cmd执行set GOOS=linux 以及 set GOARCH=amd64
go-etcd-grpc :"https://www.cnblogs.com/wujuntian/p/12838041.html"