> 文章列表 > Caliper环境搭建及使用

Caliper环境搭建及使用

Caliper环境搭建及使用

文章目录

  • 准备工作
  • 一、安装Caliper
  • 二、使用Caliper进行测试
  • 总结

准备工作

Hyperledger Caliper是Fabric的一个性能测试框架,本质上是通过Node SDK,不断向Fabric网络发送请求,获得相应,从而计算Fabric网络的性能。性能测试实验是基于已经存在并运行的Fabric网络的,因此在使用caliper模块做测试之前,需要搭建好网络,在前期的文章中已经介绍了如何快速搭建一个fabric的网络环境,在此不仅行赘述。

一、安装Caliper

caliper-benchmarks中包含区块链性能基准框架 Caliper 所能够使用的测试案例,因此用过caliper-benchmarks库中所提供的案例进行caliper测试

cd $GOPATH/src/github.com/hyperledger/fabric/scripts/
git clone https://github.com/hyperledger/caliper-benchmarks
cd caliper-benchmarks

caliper-benchmarks/benchmarks/samples下面存放了fabric和fisco两种区块链的测试用例,目录结构如下

.
├── README.md
├── fabric
│   ├── README.md
│   ├── fabcar
│   └── marbles
└── fisco-bcos├── helloworld└── transfer

以fabric中的fabcar为例,在caliper-benchmarks/benchmarks/samples/fabric/fabcar目录下面存放了各种与合约fabcar交互的代码,caliper则是通过调用这些代码来完成压力测试。

.
├── changeCarOwner.js
├── config.yaml
├── createCar.js
├── queryAllCars.js
└── queryCar.js

再介绍完caliper-benchmark仓库的作用之后,我们通过npm来安装caliper

#进入到caliper-benchmarks目录下
cd caliper-benchmarks
# 生成packge.json文件
npm init -y
#安装caliper-cli@0.4.2
npm install --only=prod @hyperledger/caliper-cli@0.4.2
#将caliper与区块链平台绑定
npx caliper bind --caliper-bind-sut fabric:2.2

二、使用Caliper进行测试

前提:已经启动test-network网络,并且部署了fabcar合约

cd $GOPATH/src/github.com/hyperledger/fabric/scripts/caliper-benchmarks
npx caliper launch manager \\
--caliper-workspace ./ \\
--caliper-networkconfig networks/fabric/test-network.yaml \\
--caliper-benchconfig benchmarks/samples/fabric/fabcar/config.yaml \\
--caliper-flow-only-test \\
--caliper-fabric-gateway-enabled

得到的响应为:

2023.04.20-14:16:30.160 info  [caliper] [round-orchestrator] 	Finished round 4 (Query a car.) in 30.116 seconds
2023.04.20-14:16:30.160 info  [caliper] [monitor.js] 	Stopping all monitors
2023.04.20-14:16:30.160 info  [caliper] [report-builder] 	 All test results 
2023.04.20-14:16:30.162 info  [caliper] [report-builder]
+-------------------+-------+------+-----------------+-----------------+------------------+-----------------+------------------+
| Name              | Succ  | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s)  | Avg Latency (s) | Throughput (TPS) |
|-------------------|-------|------|-----------------|-----------------|------------------|-----------------|------------------|
| Create a car.     | 0     | 5000 | 228.8           | 0.00            | 9007199254740.99 | -               | 228.6            |
|-------------------|-------|------|-----------------|-----------------|------------------|-----------------|------------------|
| Change car owner. | 1412  | 0    | 48.3            | 2.03            | 0.03             | 0.12            | 45.4             |
|-------------------|-------|------|-----------------|-----------------|------------------|-----------------|------------------|
| Query all cars.   | 13242 | 0    | 456.5           | 0.12            | 0.01             | 0.01            | 456.4            |
|-------------------|-------|------|-----------------|-----------------|------------------|-----------------|------------------|
| Query a car.      | 15356 | 0    | 529.4           | 0.05            | 0.01             | 0.01            | 529.3            |
+-------------------+-------+------+-----------------+-----------------+------------------+-----------------+------------------+2023.04.20-14:16:30.180 info  [caliper] [report-builder] 	Generated report with path /Users/hanallen/go/src/github.com/hyperledger/fabric/scripts/caliper-benchmarks/report.html
2023.04.20-14:16:30.180 info  [caliper] [monitor.js] 	Stopping all monitors
2023.04.20-14:16:30.180 info  [caliper] [worker-orchestrator] 	Sending exit message to connected workers
2023.04.20-14:16:30.181 info  [caliper] [round-orchestrator] 	Benchmark finished in 155.287 seconds. Total rounds: 4. Successful rounds: 4. Failed rounds: 0.
2023.04.20-14:16:30.181 info  [caliper] [worker-message-handler] 	Worker#0 is exiting
2023.04.20-14:16:30.181 info  [caliper] [caliper-engine] 	Skipping end command due to benchmark flow conditioning
2023.04.20-14:16:30.181 info  [caliper] [worker-message-handler] 	Worker#2 is exiting
2023.04.20-14:16:30.181 info  [caliper] [cli-launch-manager] 	Benchmark successfully finished
2023.04.20-14:16:30.181 info  [caliper] [worker-message-handler] 	Worker#3 is exiting
2023.04.20-14:16:30.181 info  [caliper] [worker-message-handler] 	Worker#4 is exiting
2023.04.20-14:16:30.181 info  [caliper] [worker-message-handler] 	Worker#1 is exiting

总结

当我们在进行使用caliper进行区块链性能测试的时候,我们需要做如下几方面工作:
1、首先需要在区块链网络中部署相应的业务合约,后续测试以该合约为基础
2、在caliper中定义相应的合约调用函数,然后通过caliper去执行
后面将通过caliper完成更加复杂的测试工作,比如对提出共识算法的性能测试等。