区块链学习5-长安链并发测试(3)_发送并发交易请求

上一篇

区块链学习4-长安链并发测试(2)_部署链_fvafuc的博客-CSDN博客

三、准备合约

1. 编译cmc工具

参考官方文档:

https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#cmc

cd chainmaker-go/tools/cmc
go build
# 复制链上认可的证书到cmc客户端:
cp -rf ../../build/crypto-config ../../tools/cmc/testdata/
# 查看帮助:
./cmc -h

2. 配置sdk_config.yml

修改cmc的sdk_config.yml,使其连接到指定的一个或多个节点:

vim ./testdata/sdk_config.yml

----------
nodes:
    - # 节点地址,格式为:IP:端口:连接数
      node_addr: "10.0.51.249:12301"
      # 节点连接数
      conn_cnt: 10
      # RPC连接是否启用双向TLS认证
      enable_tls: true
      # 信任证书池路径
      trust_root_paths:
        - "./testdata/crypto-config/wx-org1.chainmaker.org/ca"
      # TLS hostname
      tls_host_name: "chainmaker.org"

3. 使用cmc部署存证合约到链上

参考官方文档:

https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html#id14


 4. 测试合约能否被调用:

四、并发调用

1. cmc的parallel功能进行并发调用存证合约

 2. 查看帮助:

 3. 一个批量调用合约示例和说明,:
 

./cmc parallel invoke \ #调用合约
--loopNum=1000  \ #循环次数,类似于jmeter的loop count
--printTime=5 \ #日志打印时间间隔(s)
--threadNum=1950 \ #并发用户数,类似于jmeter的Number of thread
--timeout=1800 \ # 超时时间,类似于jmeter的请求超时设置
--sleepTime=100 \ # 每隔多长时间发送一次请求,单位是ms, 类似于jmeter的thread delay
--climbTime=1  \ # 爬坡度,即每隔多久启动线程,直至启动所有线程。类似于jmeter的stepping插件。
--use-tls=true \
--showKey=false \ # 是否打印输入的key值
--contract-name=fact \ #调用的合约名称
--method="save" \ # 调用合约的哪个方法
--pairs="" \
--hosts="10.0.51.249:12301" \ #连接哪台节点,可以是多台,用逗号隔开。
--pairs-file="./testdata/save.json" \ #具体的存证数据键值对,也可以使用上面的pairs参数,文件内容见下文。
--org-IDs="wx-org1.chainmaker.org" \ #以下参考官方的cmc说明。
--user-keys="./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key" \
--user-crts="./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt" \
--output-result=false \ #是否打印返回结果,如果请求失败,可以设置成true定位问题。
--ca-path="./testdata/crypto-config/wx-org1.chainmaker.org/ca" \
--admin-sign-keys="./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.key" \
--admin-sign-crts="./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org4.chainmaker.org/user/admin1/admin1.sign.crt"

下面附上jmeter的界面截图,以便理解

 

4.调用存证合约,参数文件示例

在第三步测试调用合约时,存证数据为:
--params="{\"file_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"6543234\"}" \

在批量调用时,使用以下的方式;

以"file_name\":\"name007\"为例, key=file_name, value=name007,

unique=true在调用时会自动为这个文件名添加值,使其不重复

上面用到的save.json文件内容例如:

[{"value": "6543234", "key": "time", "unique": false}, {"value": "ab3456df5799b87c77e7f88", "key": "file_hash","unique":true}, {"value": "name007", "key": "file_name","unique":true}]

以下是其中一笔交易的内容,unique=true使得cmc会自动为参数加上后缀:

5. 并发测试并监控tps

猜你喜欢

转载自blog.csdn.net/fvafuc/article/details/128925352