区块链技术研究

使用PTE对目标Fabric网络进行测试

2018-03-14  本文已影响0人  kamiSDY

使用PTE对目标Fabric网络进行测试

PTE的官方git:
https://github.com/dongmingh/v1performance#performance-traffic-engine---pte

The Performance Traffic Engine(PTE) 使用SDKs与Hyperledger Fabric网络进行交互,其向一个或者多个网络发送请求并接受响应。目前只支持Node SDK。

PTE的设计主要为了满足两个需求:

PTE在设计时着重考虑灵活性和模块哈。其提供了针对各种测试用例的操作选择。其设计图如下:
PTE的基本功能有:

准备

在测试之前需要准备一些运行的环境:

npm install -g gulp

如果你想要在测试本地的fabric网络。则需要docker环境并且构建fabric网络,参考:Hyperledger Fabric Doc

开始测试

  1. 下载fabric-test源码
go get -d github.com/hyperledger/fabric-test
  1. 下载或者更新Fabric、fabric-ca和fabric-sdk-node,可参考fabric-test
  1. 获取需要的docker镜像
    如果如果你使用的是自己已经构建成功的fabric网络或者remote网络,则可以跳过该步骤。
cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric/
git checkout v1.0.0
make docker
cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric-ca
git checkout v1.0.0
make docker
cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric-sdk-node
npm install
//这里可以忽略所有的warning
gulp ca
  1. 安装PTE
cd $GOPATH/src/github.com/hyperledger/fabric-test/tool
cp -r PTE $GOPATH/src/github.com/hyperledger/fabric-test/fabric-sdk-node/test
  1. 创建Service Credentials 文件
    SCFiles中有很多示例可以参考。将需要测试的Fabric网络中的节点地址和证书等信息进行替换即可。
  2. 按照需求构建运行脚本
    根据测试需求,创建自己的PTEMgr.txt文件(使用pte_mgr.sh来测试运行),runCase.txt文件和用户输入用的json文件。
    这里有几点需要注意:

运行PTE

这里确保在运行PTE之前,需要测试的fabric网络已经启动。

使用方法

有两个方法可以执行PTE:

pte_mgr.sh

运行脚本:

./pte_mgr.sh <PTE mgr input file>

示例:

./pte_mgr.sh sampleccInputs/PTEMgr.txt

该测试包含了一个用户测试用例列表。每一行都是一个用户的run case,其包含了两个参数:drive type和用例文件(run case files)。
例如,下面这个就包含了两个run case,driver type都是pte。现阶段只支持pte。

 driver=pte sampleccInputs/runCases-constant-i-TLS.txt
 driver=pte sampleccInputs/runCases-constant-q-TLS.txt
pte_driver.sh

运行脚本:

./pte_driver.sh <run cases file>

示例:

./pte_driver.sh sampleccInputs/runCases.txt

该示例包含了一个测试用例的列表。每一行都是一个测试用例,包含两个参数:SDK type和用户输入文件(User input files),
例如,下面这个就包含了三个测试用例。同时SDK type可以是:node、go、python和java。不过现在只支持node。关于用户输入的相关信息,下文会进行介绍。

    sdk=node sampleccInputs/samplecc-chan1-i-TLS.json
    sdk=node sampleccInputs/samplecc-chan2-i-TLS.json
    sdk=node sampleccInputs/samplecc-chan3-i-TLS.json

交易执行

PTE用一个用户输入文件(执行参数)视为一个测试用例。User input files定义了执行一个测试所需的所有参数,包括

在同一个测试中,所有的线程都会并发执行指定的交易。不同的交易会使用不同的测试用例来执行,PTE支持将他们统一到同一个run case file中,使其成为一个更加复杂的脚本。例如,一个PTE执行时,用户可以向所有的peers发送指定数量的invoke交易,以及可以对每一个peer进行分离式的query。

交易控制:
交易本身可以根据数量或者持续时间来进行控制。其可以通过两个参数进行控制

交易类型

Invoke(move)

执行invoke(move)的交易,设置transType为Invoke和invokeType为move。

  "invokeCheck": "TRUE",
  "transMode": "Constant",
  "transType": "Invoke",
  "invokeType": "Move",
  "targetPeers": "OrgAnchor",
  "nProcPerOrg": "4",
  "nRequest": "1000",
  "runDur": "600",
  "TLS": "Enabled",

同时,需要设置channel的名称和相关信息:

  "channelOpt": {
      "name": "testchannel1",
      "channelTX": "/root/gopath/src/github.com/hyperledger/fabric-test/fabric/common/tools/cryptogen/crypto-config/ordererOrganizations/testorgschannel1.tx",
      "action":  "create",
      "orgName": [
          "testOrg1"
      ]
  },
Invoke(query)

执行Invoke(query)交易,设置transType为Invoke,InvokeType为Query。

  "invokeCheck": "TRUE",
  "transMode": "Constant",
  "transType": "Invoke",
  "invokeType": "Query",
  "targetPeers": "OrgAnchor",
  "nProcPerOrg": "4",
  "nRequest": "1000",
  "runDur": "600",
  "TLS": "Enabled",

同时设置channel的信息,同move。

简单的用例

待续

上一篇下一篇

猜你喜欢

热点阅读