caliper—使用fabcar作为例子测试错误记录

测试使用命令


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”,后来重新看了官方文档才发现。)

  1. --caliper-workspace 指定了工作路径,因为是在/caliper-benchmarks路径下的命令行,因此用的 ./;

  1. --caliper-benchconfig 指定了测试的配置文件,测试使用的是fabcar这个链码;

  1. --caliper-networkconfig 指定了区块链网络配置文件,包括版本,节点,状态数据库等。

错误1—caliper-engine Error while performing "test" step TypeError: Cannot read property 'length' of undefined


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

然后去fabcar下面的文件中找,发现下图的三个文件中有'length'这个属性。

caliper—使用fabcar作为例子测试错误记录_第1张图片

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

caliper—使用fabcar作为例子测试错误记录_第2张图片

错误2—caliper-engine Error while performing "test" step: TypeError: Cannot read property 'processes' of undefined


重新执行命令,上一个错误已经没有了,但是发现如下错误:

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

caliper—使用fabcar作为例子测试错误记录_第3张图片
caliper—使用fabcar作为例子测试错误记录_第4张图片

错误3—caliper-engine Error while performing "test" step: Error: Round 1 configuration validation error:"txDuration" attribute must be a numer


重新执行命令,上一个错误没有,但出现下面的错误:

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

caliper—使用fabcar作为例子测试错误记录_第5张图片

应该是这种格式不对,将其改成下面这种形式。其他地方的这个格式也相应地修改。

错误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这部分的内容我之前没修改过,这次测试出现的这些问题可能是原来就没解决的。

你可能感兴趣的:(区块链,fabric,区块链)