Fisco Bcos2.x使用Caliper工具进行压力测试
Fisco Bcos Caliper测试工具虽然可以和Fisco-Bcos进行绑定执行压力测试,目前通过Caliper进行压测FISCO BCOS的方式已较为陈旧。所以目前FISCO BCOS2适配的Caliper版本为0.2.0,请在部署Caliper运行环境时确保Caliper的版本正确。
配置基本环境
- 部署Caliper的计算机需要有外网权限;
- 操作系统版本需要满足以下要求: Ubuntu >= 16.04 CentOS >= 7 MacOS >= 10.14
- 部署Caliper的计算机需要安装有以下软件: python 2.7 make g++ gcc git
安装docker-compose
sudocurl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudochmod +x /usr/local/bin/docker-compose
配置Docker Daemon
在执行此步骤前先停止docker服务
创建/etc/docker/daemon.json文件(如果已经存在则修改)
{
"hosts" : ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
使用sudo systemctl edit docker新建或修改/etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
重新加载daemon并重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker.service
下载caliper
npm install --only=prod @hyperledger/caliper-cli@0.2.0
下载预定义测试用例
git clone https://gitee.com/vita-dounai/caliper-benchmarks.git
修改源代码处理
fisco bcos当前版本和caliper之间有一些兼容问题,所以请按照下面所述步骤进行修改。
修改三个文件,一个依赖包版本
fiscoBcos.js:
./node_modules/@hyperledger/caliper-fisco-bcos/lib/fiscoBcos.js
channelPromise.js:
./node_modules/@hyperledger/caliper-fisco-bcos/lib/channelPromise.js
web3sync.js:
./node_modules/@hyperledger/caliper-fisco-bcos/lib/web3lib/web3sync.js
secp256k1依赖包版本:
./node_modules/@hyperledger/caliper-fisco-bcos/package.json
fiscoBcos.js
修改一
最上面常量
//const Color = require('./common');const Color =require('./common').Color;
修改二
在constructor(config_path,workspace_root){}最后加入
if(this.fiscoBcosSettings.network &&this.fiscoBcosSettings.network.authentication){for(let k inthis.fiscoBcosSettings.network.authentication){this.fiscoBcosSettings.network.authentication[k]=CaliperUtils.resolvePath(this.fiscoBcosSettings.network.authentication[k],workspace_root)}}
修改三
在 async installSmartContract{}最前面修改
//const fiscoBcosSettings = CaliperUtils.parseYaml(this.configPath)['fisco-bcos'];const fiscoBcosSettings =this.fiscoBcosSettings;
channelPromise.js
修改一
在function parseResponse(response){}处修改
//let emitter = emitters.get(seq).emitter;let emitter = emitters.get(seq);if(!emitter){return;}
emitter = emitter.emitter;
web3sync.js
修改一
在function genRandomID(){}处修改
//uuid = uuid.replace(/-/g,'');
uuid ='0x'+uuid.replace(/-/g,'');
修改二
在function getSignTx(){ let postdata = {} }处修改
//extraData:''
extraData:'0x0'
修改三
在function getSignDeployTx(){ let postdata = {} }处修改
//extraData:''
extraData:'0x0'
secp256k1依赖包
node_modules/@hyperledger/caliper-fisco-bcos目录,package.json文件
在dependencies中添加
"secp256k1":"^3.8.0"
在该目录执行npm i
绑定 fisco-bcos
npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest
执行HelloWorld合约测试
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json
测试本地搭好的链
monitor:type:- process
process:-command: node0
multiOutput: avg
-command: node1
multiOutput: avg
-command: node2
multiOutput: avg
-command: node3
multiOutput: avg
interval:0.1
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json
错误及问题解决
-bash: /usr/local/bin/docker-compose: permission denied
这个错误提示意味着你没有执行docker-compose命令的权限。你需要使用sudo命令或者以root用户身份执行该命令。你可以尝试使用以下命令来解决这个问题:
sudochmod +x /usr/local/bin/docker-compose
这个命令将会给docker-compose文件添加可执行权限,这样你就可以在不使用sudo命令或者root用户身份的情况下执行docker-compose命令了。
版权归原作者 nomi-糯米 所有, 如有侵权,请联系我们删除。