上一篇
区块链学习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
文章来源:https://www.toymoban.com/news/detail-787825.html
文章来源地址https://www.toymoban.com/news/detail-787825.html
到了这里,关于区块链学习5-长安链并发测试(3)_发送并发交易请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!