hyperledger-fabricbenchmarkingcaliper

Validation Error in running Hyperledger Caliper V0.4.2 with Fabric 2.1


When I have been running the Caliper V0.4.2 for measuring the benchmarks of Fabric 2.1.0 1.4.7, I got the below error

ValidationError: child "version" fails because ["version" must be one of [1.0]]. child "clients" fails because ["clients" is required]. child "channels" fails because ["channels" must be an object]. child "organizations" fails because ["organizations" must be an object]. child "orderers" fails because ["orderers" is required]. child "peers" fails because ["peers" is required]

    at Object.exports.process (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hapi/joi/lib/errors.js:202:19)
    at internals.Object._validateWithOptions (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hapi/joi/lib/types/any/index.js:763:31)
    at module.exports.internals.Any.root.validate (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hapi/joi/lib/index.js:145:23)
    at Function._validateTopLevel (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-fabric/lib/configValidator.js:208:26)
    at Function.validateNetwork (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-fabric/lib/configValidator.js:58:25)
    at new FabricConnector (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-fabric/lib/fabric-connector.js:107:25)
    at CaliperEngine.connectorFactory [as adapterFactory] (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-fabric/lib/connectorFactory.js:26:23)
    at CaliperEngine.run (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-core/lib/manager/caliper-engine.js:93:36)
    at Function.handler (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-cli/lib/launch/lib/launchManager.js:62:43)
    at Object.module.exports.handler (/home/gow/fabric-benchmarks/caliper-benchmarks/node_modules/@hyperledger/caliper-cli/lib/launch/launchManagerCommand.js:46:44)
  isJoi: true,
  name: 'ValidationError',
  details:
   [ { message: '"version" must be one of [1.0]',
       path: [Array],
       type: 'any.allowOnly',
       context: [Object] },
     { message: '"clients" is required',
       path: [Array],
       type: 'any.required',
       context: [Object] },
     { message: '"channels" must be an object',
       path: [Array],
       type: 'object.base',
       context: [Object] },
     { message: '"organizations" must be an object',
       path: [Array],
       type: 'object.base',
       context: [Object] },
     { message: '"orderers" is required',
       path: [Array],
       type: 'any.required',
       context: [Object] },
     { message: '"peers" is required',
       path: [Array],
       type: 'any.required',
       context: [Object] } ],
  _object:
   { name: 'Caliper Benchmarks',
     version: '2.1.0',
     caliper: { blockchain: 'fabric' },
     channels: [ [Object] ],
     organizations: [ [Object] ] },
  annotate: [Function] }

Command that I run are,

npm init -y

npm install --only=prod @hyperledger/caliper-cli@0.4.0

npx caliper bind --caliper-bind-sut fabric:2.1

./network.sh deployCC -ccn simple -ccp ../../caliper-benchmarks/src/fabric/scenario/simple/node -ccl javascript

npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/fabric/test-network.yaml --caliper-benchconfig benchmarks/scenario/simple/config.yaml --caliper-flow-only-test --caliper-fabric-gateway-enabled

Hyperledger network creation, channel creation and Chaincode deployment all were successful.

How to solve this error?


Solution

  • Looks like you are using the main branch of caliper-benchmarks. I would suggest you https://github.com/hyperledger/caliper-benchmarks/blob/main/networks/fabric/README.md

    From what you have posted, you should use the latest available version of caliper which is 0.4.2, not 0.4.0. To do so the command you should issue is

    npm install --only=prod @hyperledger/caliper-cli
    

    You should bind to the latest 2.2 sdk (don't bind to 2.1 as fabric doesn't support 2.1). Note this is selecting the version of the sdk used to interact with a fabric network, not the version of the fabric network you are using. 2.2 will work with a fabric 2.2 and later 2.x versions

    npx caliper bind --caliper-bind-sut fabric:2.2
    

    Finally it looks like you tried to change the version number in the network configuration file. Don't change the version (it must be 2.0.0) as it refers to the version of the network configuration file and not the version of fabric you want to test

    As you look to be using test-network, depending on which branch of fabric-samples you are using defines the version of fabric. The main branch tests the latest version of fabric which should have no problems.