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

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

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

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

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

  • 监控Fabric复杂的网络,包括节点地址,节点数量、channel的数量、组织、peer和orderers等。
  • 支持多样的测试用例,例如不同的chaincode、交易数量、测试时间、类型、模式以及部署规模等。

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

  • channel:创建和加入channel
  • chaincode:安装和实例化chaincode
  • transaction:发送交易到目标peer,可以定制化交易的类型、模式和频率
  • Network:可以与本地或者远程的fabric网络进行交互
  • scaling:轻松扩展多网络、orderer、peers、组织、channel和chaincode
  • event:开启event端口,维护和记录event的接收和未接收状态
  • Blockchain高度:可以查询Blockchain的高度和transaction的数量
  • result:支持对发送交易的event接收,以及校验交易完成后的Blockchain状态
  • 多PTEs:轻松构建多个PTEs

准备

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

  • node和npm lts/boron release (v6.10.x and v3.10.x)
    • node V7并没有支持
  • gulp
npm install -g gulp
  • go(v1.7 or later)

如果你想要在测试本地的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
  • 进入fabric-test目录
    cd $GOPATH/src/github.com/hyperledger/fabric-test
  • 第一次启动的时候
    git submodule update --init --recursive
    git submodule foreach git pull origin master
  • 非第一次启动
    git submodule foreach git pull origin master
  1. 获取需要的docker镜像
    如果如果你使用的是自己已经构建成功的fabric网络或者remote网络,则可以跳过该步骤。
  • fabric
    * 从dockerhub'中下载
    cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric/scripts
    如果针对V1.0.0进行测试,则使用脚本 ./bootstrap-1.0.0.sh
    * 构建images(示例为v1.0.0)
cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric/
git checkout v1.0.0
make docker
  • fabric-ca
cd $GOPATH/src/github.com/hyperledger/fabric-test/fabric-ca
git checkout v1.0.0
make docker
  • fabric-sdk-node
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文件。
    这里有几点需要注意:
  • 正确的使用需要测试的chaincode名称、channel名称和组织的名称。
  • 使用自己网络里的配置信息
  • 在测试之前,需要创建好所有的channnel,确保所有需要的peer都join到channel中。以及chaincode被正确的安装在各个peer内,同时在指定的channel中进行了instantiate。确保所有的peer都被正确的建立和运行。

运行PTE

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

使用方法

有两个方法可以执行PTE:

  • pte_mgr.sh :可以执行多个PTE测试
  • pte_driver.sh:只能执行一个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。

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

  • nRequest
  • rundur

交易类型

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。

简单的用例

待续

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容