Centos7 安装Caliper 测试 Fabric2.3
文章目录
目录
文章目录
前言
一、安装npm
二、创建Fabric测试网
三、Caliper创建工作区
四、构建网络配置文件
五、构建测试工作负载模块
六、构建基准测试配置文件
七、运行Caliper基准测试
总结
参考博客
前言
Caliper 是一个区块链性能基准框架,它允许用户使用自定义用例测试不同的区块链解决方案,并获得一组性能测试结果。
本人记录自己使用Caliper来测试Fabric2.3的性能。
本机环境:Centos7.9,Fabric2.3.3
一、安装npm
我用的是nvm来安装npm,因为nvm是node.js不同版本的管理器,允许通过命令来快速安装和使用不同版本的node。
1.查看git是否安装
# 查看git版本
git --version
# 如果没有安装git 执行 yum install git
2.安装Node.js版本管理工具nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
运行上述任何一个命令都会下载一个脚本并且运行这个脚本,这个脚本是将nvm存储库克隆到~/.nvm,并且会将以下代码段中的源代码添加到配置文件(~/.bashrc)
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
可以查看~/.bashrc中写了什么
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
3.设置nvm自动运行
echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
# 更新配置
source ~/.bashrc
4.检验是否安装
command -v nvm
5.使用nvm
# 查看node.js版本
nvm ls-remote
# 安装最新node.js版本
nvm install node
# 切换版本
nvm use x.x
# 查看更多指令
nvm --help
6.查看node版本
node -v
npm -v
二、创建Fabric测试网
# 进入自己的本地的test-network
cd /opt/fabric/fabric-samples/test-network
# 启动网络、创建通道、安装链码
./network.sh up createChannel
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
三、Caliper创建工作区
在fabric-samples同级的目录下创建一个名为caliper-workspace的文件夹,然后在caliper-workspace文件夹内创建三个文件夹,分别命名为networks、benchmarks和workload。
# 进入自己的fabric-samples同级目录下
cd /opt/fabric
# 创建工作区
mkdir caliper-workspace
cd caliper-workspace
mkdir networks && mkdir benchmarks && mkdir workload
# 或者这个指令 mkdir -p caliper-workspace/{networks,benchmarks,workload}
Caliper的安装和使用是基于本地npm来安装。在caliper-workspace目录中,使用以下终端命令初始化项目,可以发现文件夹内多了一个package.json。
npm init -y
使用以下终端命令安装Caliper CLI,执行完后,会将依赖下载到当前目录下的node_modules文件下。
# 版本要匹配,0.4对应fabric2.x,0.3对应fabric1.4
npm install --only=prod @hyperledger/caliper-cli@0.4.2
使用以下终端命令绑定 SDK:
npx caliper bind --caliper-bind-sut fabric:2.2
四、构建网络配置文件
网络配置文件是 Caliper 使用者可以在 Hyperledger Fabric 网络上提交和评估交易所需的文件。该文件可以是 YAML 或 JSON 格式,这里显示的是 YAML 格式。
在networks文件夹下创建一个名为networkConfig.yaml的模板文件
cd networks
touch networkConfig.yaml
其模板内容如下:
name: Caliper test
version: "2.0.0"caliper:blockchain: fabricchannels:organizations:
name:配置的名称,本文中为“Caliper test”
version:正在使用的配置文件的版本,“2.0.0”确保使用新的结构连接器
caliper:向 Caliper 指示目标 SUT,以fabric
网络为目标。
channels:描述 Hyperledger Fabric 通道和部署在这些通道上的智能合约以进行基准测试。需要提供通道名称和智能合约名称,因为fabric可以存在多个通道。
organizations:Hyperledger Fabric 组织的列表,其中包含与每个组织关联的身份和连接配置文件。在这里,我们需要添加mspid的信息如Org1MSP,我们还需要提供一个名称、关联的连接配置文件和至少1个身份,并且仔细查看并确保证书、私钥和连接配置文件路径是否正确。
填充模板,完整内容如下:
name: Calier test
version: "2.0.0"caliper:blockchain: fabricchannels:- channelName: mychannelcontracts:- id: basicorganizations:- mspid: Org1MSPidentities:certificates:- name: 'User1@org1.example.com'clientPrivateKey:path: '/opt/fabric/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk'clientSignedCert:path: '/opt/fabric/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem'connectionProfile:path: '/opt/fabric/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.yaml'discover: true
五、构建测试工作负载模块
在workload文件夹中,创建一个名为readAsset.js的模板文件
cd workload
touch readAsset.js
其内容如下:
'use strict';const { WorkloadModuleBase } = require('@hyperledger/caliper-core');class MyWorkload extends WorkloadModuleBase {constructor() {super();}async initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext) {await super.initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext);}async submitTransaction() {// NOOP}async cleanupWorkloadModule() {// NOOP}
}function createWorkloadModule() {return new MyWorkload();
}module.exports.createWorkloadModule = createWorkloadModule;
工作负载模块在基准测试期间与部署的智能合约进行交互。主要有三个内容:
① initializeWorkloadModule - 用于初始化基本测试所需要的任何项目
② submitTransaction - 用于在基准的监控阶段与智能合约进行交互
③ createWorkloadModule - 用于在基准测试完成后进行清理
完整内容如下:
'use strict';const { WorkloadModuleBase } = require('@hyperledger/caliper-core');class MyWorkload extends WorkloadModuleBase {constructor() {super();}async initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext) {await super.initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext);for (let i=0; i<this.roundArguments.assets; i++) {const assetID = `${this.workerIndex}_${i}`;console.log(`Worker ${this.workerIndex}: Creating asset ${assetID}`);const request = {contractId: this.roundArguments.contractId,contractFunction: 'CreateAsset',invokerIdentity: 'User1@org1.example.com',contractArguments: [assetID,'blue','20','penguin','500'],readOnly: false};await this.sutAdapter.sendRequests(request);}}async submitTransaction() {const randomId = Math.floor(Math.random()*this.roundArguments.assets);const myArgs = {contractId: this.roundArguments.contractId,contractFunction: 'ReadAsset',invokerIdentity: 'User1@org1.example.com',contractArguments: [`${this.workerIndex}_${randomId}`],readOnly: true};await this.sutAdapter.sendRequests(myArgs);}async cleanupWorkloadModule() {for (let i=0; i<this.roundArguments.assets; i++) {const assetID = `${this.workerIndex}_${i}`;console.log(`Worker ${this.workerIndex}: Deleting asset ${assetID}`);const request = {contractId: this.roundArguments.contractId,contractFunction: 'DeleteAsset',invokerIdentity: 'User1@org1.example.com',contractArguments: [assetID],readOnly: false};await this.sutAdapter.sendRequests(request);}}
}function createWorkloadModule() {return new MyWorkload();
}module.exports.createWorkloadModule = createWorkloadModule;
六、构建基准测试配置文件
在benchmarks文件夹下创建一个名为myAssetBenchmark.yaml
cd benchmarks
touch myAssetBenchmark.yaml
基准配置文件定义基准轮次并引用定义的工作负载模块。它将指定生成负载时使用的测试工作人员的数量、测试轮次的数量、每轮的持续时间、每轮期间应用于事务负载的速率控制以及与监视器相关的选项。
完整内容如下:
test:name: basic-contract-benchmarkdescription: test benchmarkworkers:type: localnumber: 2rounds:- label: readAssetdescription: Read asset benchmarktxDuration: 60rateControl: type: fixed-loadopts:transactionLoad: 50startingTps: 100workload:module: workload/readAsset.jsarguments:assets: 10contractId: basic
monitors:resource:- module: dockeroptions:interval: 5 containers:- all
七、运行Caliper基准测试
npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/networkConfig.yaml --caliper-benchconfig benchmarks/myAssetBenchmark.yaml --caliper-flow-only-test --caliper-fabric-gateway-enabled
总结
Caliper还有很多详细内容我没有叙述,可以查看官方文档。
官方配置详解:https://hyperledger.github.io/caliper/vNext/fabric-tutorial/tutorials-fabric-existing/
参考博客
CentOS7下安装nvm_李胜步的博客-CSDN博客_centos7 安装nvm
Fabric 2.2.0上搭建Hyperledger caliper进行性能测试_Famidlistimo的博客-CSDN博客
Centos7 安装Caliper 测试 Fabric2.3相关推荐
- Centos7安装RocketMQ及配置测试
环境 Centos7 RocketMQ 3.2.6 安装位置 /usr/local/alibaba-rockermq 外网ip 182.254.145.66 内网ip 10.105.23.114 安装 ...
- Centos7安装ab(Apache Benchmark)测试工具及使用
Centos7安装ab(Apache Benchmark)测试工具及使用 Apache Benchmark简称AB 一.安装 yum install -y httpd-tools 二.创建Post请求 ...
- centos7 nginx配置php7,centos7安装并配置nginx+php,centos7nginx
centos7安装并配置nginx+php,centos7nginx centos7安装并配置nginx+php 安装nginx yum install nginx 设置nginx开启起动 syste ...
- centos7 安装mysql php_Centos7安装mysql与php的方法
本文主要和大家分享Centos7安装mysql与php的方法,希望能帮助到大家. 相关mysql视频教程推荐:<mysql教程> 官网下载安装mysql-server 依次使用下面三个命令 ...
- Centos7安装Apache和PHP,包含配置过程
本文主要讲的是本人在迁移php网站相关软件的安装和配置过程,以及一下问题的解决步骤.通过阅读本文能够知道如何迁移php网站,如何配置httpd服务使得它能够解析php文件以及如何解决迁移过程中的异常问 ...
- linux tomcat7怎么安装,centos7安装Tomcat7,
centos7安装Tomcat7, 一.环境 centos7 linux apache-tomcat-7.0.92.tar.gz:链接:https://pan.baidu.com/s/1-clhIjD ...
- python3.6.5安装教程-Centos7 安装Python3.6.5
一.centos7 安装 Python3.6.5教程 1.在安装Python之前,需要先安装一些后面遇到的依赖问题(如果有依赖问题,按照提示安装): yum -y install zlib-devel ...
- python3.6.5安装教程-Centos7 安装Python3.6.
一.centos7 安装 Python3.6.5教程 1.在安装Python之前,需要先安装一些后面遇到的依赖问题(如果有依赖问题,按照提示安装): yum -y install zlib-devel ...
- centos安装mysql5.7.19_Linux下Centos7安装Mysql5.7.19的详细教程
1.下载mysql 2.选择源码包,通用版点击下载 直接下载就可以了,不用登录 3.解压编译 tar -zxvf mysql-5.7.19.tar.gz cd mysql-5.7.19.tar.gz ...
最新文章
- 凡夫怎么可能揣度圣者的境界
- 找出现实中符合这三种模式的互联网产品
- python中backward_pytorch的梯度计算以及backward方法详解
- 余承东:华为6G研发还需10年;库克“iPhone 11势头强劲”;TensorFlow 2.0正式版发布​ | 极客头条...
- Android测试总结
- 菜鸟教程php在线编程器,菜鸟教程在线工具
- Windows系统常用设置
- 基于SpringBoot+Vue前后端分离的在线教育平台项目
- 名帖155 王献之 行书《行书帖选》
- 52道常见Python面试题,你都能答对吗?
- java经纬度工具类
- Bugzilla 使用教程
- 类模板中的友元,友元类
- Debian之安装完成后找不到命令解决办法
- 今天的码农女孩做了关于svg画图和canvas画图 2022/1/18
- 浅谈数据清洗的一些要素
- 美国2020年攻破艾滋病_2020年美国和欧洲的游戏状况
- 微信小程序input框输入值校验
- iOS 面试题--转自唐巧
- 校园英语调频台在江西陶瓷工艺美术职业技术学院的应用
热门文章
- 【Python】抓取基金数据,这简直太爱了
- 2021年应届生的就业形势怎么样呢?
- 基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)
- springmvc如何拦截html页面,springmvc登录拦截jsp页面
- Motoman机器人离线编程——Visio Studio环境配置
- 【AD封装】三极管,MOS管,部分LDO(TO,SOT系列)(带3D)
- Python写图片格式批量处理工具!你还一张一张转格式吗?
- 【三维重建】相机标定:张正友标定法
- [See How]全栈Node TS框架TSRPC实践教程(一)
- 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案