Bootstrap

Fisco Bcos2.x使用Caliper工具进行压力测试

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

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +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/[email protected]

下载预定义测试用例

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 in this.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用户身份执行该命令。你可以尝试使用以下命令来解决这个问题:

sudo chmod +x /usr/local/bin/docker-compose

这个命令将会给docker-compose文件添加可执行权限,这样你就可以在不使用sudo命令或者root用户身份的情况下执行docker-compose命令了。

;