区块链安全应用------压力测试

测试要求:

    1. 对以下AccountManager智能合约进行压测(基础要求set函数测试,balanceOf涵为20分加分项)
    1. 在本地链进行测试,需要监控本地进程的资源使用情况。每个进程的multiOutput属性为Avg
    1. 需要将每一个更改的配置文件截图,和执行命令截图放在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

第六步:生成报告截图

相关推荐
汽车仪器仪表相关领域19 小时前
SIRIUS R1DB/R2DB便携式一体化数据采集系统
大数据·人工智能·功能测试·深度学习·压力测试
汽车仪器仪表相关领域2 天前
KRYPTON坚固型IP67 EtherCAT总线数据采集模块:工业级分布式采集方案
分布式·功能测试·汽车·压力测试·可用性测试
Amir_zy2 天前
Redis测试方法全攻略:冒烟、压测与稳定性验证
redis·压力测试
Hy行者勇哥10 天前
Coze 搭建【软件测试助手 Skill】可行分析及操作实践
测试工具·压力测试
软件测试媛12 天前
软件测试面试问题汇总
功能测试·面试·职场和发展·压力测试
汽车仪器仪表相关领域13 天前
NHA-604/605汽车排放气体测试仪:00级国标计量|多动力车型兼容|移动/固定双工况|智能联网尾气检测设备
大数据·人工智能·功能测试·安全·汽车·压力测试·可用性测试
2501_9159184117 天前
抓包鹰 抓包会话重放与压力测试,接口回归验证与性能压测的方法
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
汽车仪器仪表相关领域17 天前
XRC-3363 系列高压混合动力汽车救援充电器
大数据·人工智能·功能测试·深度学习·汽车·压力测试