测试使用命令
npx caliper launch master --caliper-workspace . \
--caliper-benchconfig benchmarks/samples/fabric/fabcar/config.yaml \
--caliper-networkconfig networks/fabric/v1/v1.4.1/2org1peergoleveldb_raft/fabric-go-tls.yaml从命令来分析一下测试的内容:
(过了很久没用了,最开始执行的时候前面没加“npx”,然后就报了“caliper:commond not found”,在这里卡了半天。因为之前记录的博客里面这条命令也忘了加“npx”,后来重新看了官方文档才发现。)
--caliper-workspace 指定了工作路径,因为是在/caliper-benchmarks路径下的命令行,因此用的 ./;
--caliper-benchconfig 指定了测试的配置文件,测试使用的是fabcar这个链码;
--caliper-networkconfig 指定了区块链网络配置文件,包括版本,节点,状态数据库等。
错误1—caliper-engine Error while performing "test" step TypeError: Cannot read property 'length' of undefined

根据错误信息,应该是测试文件中出现了一个'length'属性,但是这个属性没有被定义,所以不能解析之类的。根据执行流程猜测,这个问题是从config.yaml文件中执行报错的,在这个文件中指定了fabcar测试的几个.js文件。
然后去fabcar下面的文件中找,发现下图的三个文件中有'length'这个属性。

下面这个截图是changeCarOwner.js的,owners是一个数组,为了读取它的长度,但是报错说没有这个属性,因此将这个owners.length 直接改成了长度的数值10。其他两个文件类似的修改。

错误2—caliper-engine Error while performing "test" step: TypeError: Cannot read property 'processes' of undefined
重新执行命令,上一个错误已经没有了,但是发现如下错误:

又是一个'processes'属性没有定义,这次在fabcar文件夹下面搜了发现没有这个属性。再次回到config.yaml文件,对比了一下之前测试成功的config.yaml文件,发现区别,左边是fabcar里面的测试配置文件,右边是simple里面的测试配置文件,多了'process'相关的项,因此尝试将这些注释掉。


错误3—caliper-engine Error while performing "test" step: Error: Round 1 configuration validation error:"txDuration" attribute must be a numer
重新执行命令,上一个错误没有,但出现下面的错误:

错误信息很好理解,回到config.yaml文件,


应该是这种格式不对,将其改成下面这种形式。其他地方的这个格式也相应地修改。
错误4—caliper-engine Error while performing "test" step: Error: Round 1 configuration validation error:"rateControl" attribute must be an array
重新执行命令,发现新的错误:

这个错误和错误3类似,是格式错误,因为rateControl下面type前面多了一个横线'-':

在错误3的截图中,就是去掉横线的情况。
然后重新执行命令,正常运行。
文件拉取下来之后,fabcar这部分的内容我之前没修改过,这次测试出现的这些问题可能是原来就没解决的。
文章描述了在使用npxcaliper测试Fabric网络时遇到的一系列问题及解决方案。首先,由于命令行缺少“npx”,导致找不到caliper命令。接着,指定了工作路径、测试配置文件和网络配置文件后,出现了TypeError,问题出在config.yaml中引用的length属性未定义,作者在fabcar的.js文件中找到并修正了该问题。随后,错误提示processes未定义,作者通过比较不同config.yaml文件并注释掉相关项解决了问题。最后,修复了txDuration和rateControl的格式错误,使测试能正常运行。
7901

被折叠的 条评论
为什么被折叠?



