测试要求:
第一步:智能合约添加到caliper-bench中,操作和代码截图
在benchmarks/caliper-benchmarks/src/fisco-bcos/文件下创建AccountManager文件存放智能合约
- mkdir -p /root/benchmarks/caliper-benchmarks/src/fisco-bcos/AccountManager
- cd /root/benchmarks/caliper-benchmarks/src/fisco-bcos/AccountManager
- vim AccountManager.sol
第二步:更改网络配置参数,操作和代码截图
- mkdir -p /root/benchmarks/caliper-benchmarks/networks/fisco-bcos/test
- cd /root/benchmarks/caliper-benchmarks/networks/fisco-bcos/test
- vim fisco-bcos.json
- {
- "caliper": {
- "blockchain": "fisco-bcos",
- "command": {
- "start": "docker-compose -f networks/fisco-bcos/4nodes1group/docker-compose.yaml up -d; sleep 3s",
- "end": "docker-compose -f networks/fisco-bcos/4nodes1group/docker-compose.yaml down"
- }
- },
- "fisco-bcos": {
- "config": {
- "privateKey": "bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd",
- "account": "0x64fa644d2a694681bd6addd6c5e36cccd8dcdde3"
- },
- "network": {
- "nodes": [
- {
- "ip": "127.0.0.1",
- "rpcPort": "8914",
- "channelPort": "20914"
- },
- {
- "ip": "127.0.0.1",
- "rpcPort": "8915",
- "channelPort": "20915"
- },
- {
- "ip": "127.0.0.1",
- "rpcPort": "8916",
- "channelPort": "20916"
- },
- {
- "ip": "127.0.0.1",
- "rpcPort": "8917",
- "channelPort": "20917"
- }
- ],
- "authentication": {
- "key": "/home/myy/Desktop/benchmarks/caliper-benchmarks/networks/fisco-bcos/4nodes1group/sdk/node.key",
- "cert": "/home/myy/Desktop/benchmarks/caliper-benchmarks/networks/fisco-bcos/4nodes1group/sdk/node.crt",
- "ca": "/home/myy/Desktop/benchmarks/caliper-benchmarks/networks/fisco-bcos/4nodes1group/sdk/ca.crt"
- },
- "groupID": 1,
- "timeout": 100000
- },
- "smartContracts": [
- {
- "id": "helloworld",
- "path": "src/fisco-bcos/helloworld/HelloWorld.sol",
- "language": "solidity",
- "version": "v0"
- },
- {
- "id": "parallelok",
- "path": "src/fisco-bcos/transfer/ParallelOk.sol",
- "language": "solidity",
- "version": "v0"
- },
- {
- "id": "dagtransfer",
- "address": "0x0000000000000000000000000000000000005002",
- "language": "precompiled",
- "version": "v0"
- },
- {
- "id": "AccountManager",
- "path": "src/fisco-bcos/AccountManager/AccountManager.sol" ,
- "language": "solidity" ,
- "version": "v1"
- }
- ]
- },
- "info": {
- "Version": "2.0.0",
- "Size": "4 Nodes",
- "Distribution": "Single Host"
- }
- }
第三步:测试配置文件参数,操作和代码截图
- mkdir -p /root/benchmarks/caliper-benchmarks/benchmarks/samples/fiscobcos/AccountManager
-
- cd /root/benchmarks/caliper-benchmarks/benchmarks/samples/fiscobcos/AccountManager
-
- vim config.yaml
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
-
- ---
- test:
- name: AccountManager
- description: This is a AccountManager benchmark of FISCO BCOS for caliper
- clients:
- type: local
- number: 1
- rounds:
- - label: setAccount
- description: Test performance of getting account
- txNumber:
- - 10000
- rateControl:
- - type: fixed-rate
- opts:
- tps: 1000
- callback: /home/myy/Desktop/benchmarks/caliper-benchmarks/benchmarks/samples/fisco-bcos/AccountManager/set.js
-
- monitor:
- type:
- - docker
- - process
- docker:
- name:
- - node0
- - node1
- - node2
- - node3
- process:
- - command: node
- arguments: fiscoBcosClientWorker.js
- multiOutput: avg
- interval: 0.5
-
第四步:测试文件编写,操作和代码截图
- cd /root/benchmarks/caliper-benchmarks/benchmarks/samples/fiscobcos/AccountManager
-
- vim set.js
- /*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- 'use strict';
-
- module.exports.info = ' setting account';
-
- let initMoney = 100000000;
- let bc, contx;
- let txnPerBatch;
-
- module.exports.init = function (blockchain, context, args) {
- txnPerBatch = 1;
- bc = blockchain;
- contx = context;
- return Promise.resolve();
- };
-
- /**
- * Generates simple workload
- * @return {Object} array of json objects
- */
- function generateWorkload() {
- let workload = [];
- for (let i = 0; i < txnPerBatch; i++) {
- let w = {
- 'transaction_type': 'set(string,uint256)',
- 'name': 'hello! - from ' + process.pid.toString(),
- 'num': initMoney
- };
- workload.push(w);
- }
- return workload;
- }
-
- module.exports.run = function () {
- let args = generateWorkload();
- return bc.invokeSmartContract(contx, 'AccountManager', 'v0', args, null);
- };
-
- module.exports.end = function () {
- // Do nothing
- return Promise.resolve();
- };
-
第五步:运行压测结果命令和结果截图
运行benchmark代码:
- cd benchmarks
- npx caliper benchmark run --caliper-workspace /home/myy/Desktop/benchmarks/caliper-benchmarks --caliper-benchconfig /home/myy/Desktop/benchmarks/caliper-benchmarks/benchmarks/samples/fisco-bcos/AccountManager/config.yaml --caliper-networkconfig /home/myy/Desktop/benchmarks/caliper-benchmarks/networks/fisco-bcos/4nodes1group/fisco-bcos.json
第六步:生成报告截图