[发明专利]一种区块链性能测试方法及装置有效
申请号: | 202111389088.7 | 申请日: | 2021-11-23 |
公开(公告)号: | CN113821426B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 石宁;高翔宇;许小明 | 申请(专利权)人: | 南京金宁汇科技有限公司 |
主分类号: | G06F11/34 | 分类号: | G06F11/34;G06F21/64;G06F9/50 |
代理公司: | 北京弘权知识产权代理有限公司 11363 | 代理人: | 郭放;许伟群 |
地址: | 210031 江苏省南京市江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 区块 性能 测试 方法 装置 | ||
1.一种区块链性能测试方法,其特征在于,包括:
接收用户输入的测试参数,如果所述测试参数配置完成,向数据构建模块触发开始指令;所述测试参数包括交易核心参数和压测时的并发数;
接收到所述开始指令后,创建与所述并发数相同数量的线程,以及,每个所述线程构造各自的测试数据;
所述线程对各自的所述测试数据进行哈希和签名,所述哈希和所述签名根据不同的区块链底层预先设定;根据所述测试数据、所述哈希和所述签名构建完整交易体,所述完整交易体是由各个所述线程各自的分交易体构成的;
每个线程将各自的分交易体存放在各自的存储空间中,所有线程的所述分交易体构建完成后,向数据发送模块发出发送指令;
接收所述发送指令,将各个线程的所述分交易体分发到所述线程对应的区块链节点上,以及,向性能分析模块发出性能采集指令;
接收所述性能采集指令后,每隔第一间隔周期记录所述区块链中接收到的第一交易总量和第一当前时间,并将所述第一交易总量和所述第一当前时间压入TPS栈中;所述第一交易总量包括已确认的所述分交易体的数量和未确认的所述分交易体的数量;
每隔第二间隔周期记录所述区块链中接收到的第二交易总量和第二当前时间,并将所述第二交易总量和所述第二当前时间压入CTPS栈中;所述第二交易总量为已确认的所述分交易体的数量;
根据所述TPS栈和所述CTPS栈中的参数以及预设程序计算平均TPS、平均CTPS、实时TPS和实时CTPS。
2.根据权利要求1所述的区块链性能测试方法,其特征在于,还包括:利用线程共享锁来控制各个线程的阻塞。
3.根据权利要求2所述的区块链性能测试方法,其特征在于,所述线程共享锁为CountDownLatch。
4.根据权利要求3所述的区块链性能测试方法,其特征在于,利用线程共享锁CountDownLatch来控制各个线程的阻塞,包括:
检测出某些线程已执行完毕,利用线程共享锁向已完成的线程发出暂停指令;
待未完成的线程执行完毕后,取消所述暂停指令。
5.根据权利要求2所述的区块链性能测试方法,其特征在于,还包括:
控制各个线程释放所述线程共享锁,以使所有线程处于执行状态,以及,根据所述线程的执行状态模拟出所述并发数。
6.根据权利要求1所述的区块链性能测试方法,其特征在于,将各个线程的所述分交易体分发到所述线程对应的区块链节点上,包括:
获取各个线程的线程号,根据每个线程各自的所述线程号,进行取模计算,得到取模结果;
根据所述取模结果将所述分交易体分发到所述线程对应的区块链节点上。
7.根据权利要求1所述的区块链性能测试方法,其特征在于,还包括:当所述第一交易总量与所述TPS栈中第一栈顶值相同时,停止将所述第一交易总量和所述第一当前时间压入所述TPS栈中;
当所述第二交易总量与所述CTPS栈中第二栈顶值相同时,停止将所述第二交易总量和所述第二当前时间压入CTPS栈中。
8.根据权利要求1所述的区块链性能测试方法,其特征在于,所述线程是无序执行的。
9.根据权利要求1所述的区块链性能测试方法,其特征在于,所述存储空间为ThreadLocal,所述ThreadLocal是线程内部的存储类。
10.一种区块链性能测试装置,其特征在于,所述装置用于执行如权利要求1-9任一项所述的一种区块链性能测试方法,所述装置包括输参模块、数据构建模块、数据发送模块以及性能分析模块,其中:
输参模块被配置为执行下述步骤:接收用户输入的测试参数,如果所述测试参数配置完成,向所述数据构建模块触发开始指令;所述测试参数包括交易核心参数和压测时的并发数;
数据构建模块被配置为执行下述步骤:
接收到所述开始指令后,创建与所述并发数相同数量的线程,以及,每个所述线程构造各自的测试数据;
所述线程对各自的所述测试数据进行哈希和签名,所述哈希和所述签名根据不同的区块链底层预先设定;
根据所述测试数据、所述哈希和所述签名构建完整交易体,所述完整交易体是由各个所述线程各自的分交易体构成的;
每个线程将各自的分交易体存放在各自的存储空间中,所有线程的所述分交易体构建完成后,向数据发送模块发出发送指令;
数据发送模块被配置为执行下述步骤:接收所述发送指令,将各个线程的所述分交易体分发到所述线程对应的区块链节点上,以及,向性能分析模块发出性能采集指令;
性能分析模块被配置为执行下述步骤:
接收所述性能采集指令后,每隔第一间隔周期记录所述区块链中接收到的第一交易总量和第一当前时间,并将所述第一交易总量和所述第一当前时间压入TPS栈中;所述第一交易总量包括已确认的所述分交易体的数量和未确认的所述分交易体的数量;
每隔第二间隔周期记录所述区块链中接收到的第二交易总量和第二当前时间,并将所述第二交易总量和所述第二当前时间压入CTPS栈中;所述第二交易总量为已确认的所述分交易体的数量;
根据所述TPS栈和所述CTPS栈中的参数和预设程序计算平均TPS、平均CTPS、实时TPS以及实时CTPS。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京金宁汇科技有限公司,未经南京金宁汇科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111389088.7/1.html,转载请声明来源钻瓜专利网。