测试要求:
-
- 对以下AccountManager智能合约进行压测(基础要求set函数测试,balanceOf涵为20分加分项)
-
- 在本地链进行测试,需要监控本地进程的资源使用情况。每个进程的multiOutput属性为Avg
-
- 需要将每一个更改的配置文件截图,和执行命令截图放在word中。提交word代码。
第一步:智能合约添加到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
第二步:更改网络配置参数,操作和代码截图
-
a) 在/root/benchmarks/caliper-benchmarks/networks/fisco-bcos目录下创建test目录
-
b) 在该目录下添加网络配置文件fisco-bcos.json
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"
}
}
第三步:测试配置文件参数,操作和代码截图
-
a)在/root/benchmarks/caliper-benchmarks/benchmarks/samples/fisco-bcos目录下创建AccountManager文件
-
b)编辑配置测试文件配置
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
第四步:测试文件编写,操作和代码截图
-
a)在/root/benchmarks/caliper-benchmarks/benchmarks/samples/fiscobcos/AccountManager目录下编辑测试文件配置
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
第六步:生成报告截图