#!/bin/bash echo echo " ____ _____ _ ____ _____ " echo "/ ___| |_ _| / \ | _ \ |_ _|" echo "\___ \ | | / _ \ | |_) | | | " echo " ___) | | | / ___ \ | _ < | | " echo "|____/ |_| /_/ \_\ |_| \_\ |_| " echo echo "Build your first network (BYFN) end-to-end test" echo CHANNEL_NAME="$1" DELAY="$2" LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="3"} : ${LANGUAGE:="golang"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} LANGUAGE=`echo "$LANGUAGE" | tr [:upper:] [:lower:]` COUNTER=1 MAX_RETRY=10 PACKAGE_ID="" if [ "$LANGUAGE" = "node" ]; then CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/node/" elif [ "$LANGUAGE" = "java" ]; then CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/java/" else CC_SRC_PATH="github.com/hyperledger/fabric-samples/chaincode/abstore/go/" fi echo "Channel name : "$CHANNEL_NAME # import utils . scripts/utils.sh createChannel() { setGlobals 0 1 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then set -x peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx >&log.txt res=$? set +x else set -x peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt res=$? set +x fi cat log.txt verifyResult $res "Channel creation failed" echo "===================== Channel '$CHANNEL_NAME' created ===================== " echo } joinChannel () { for org in 1 2; do for peer in 0 1; do joinChannelWithRetry $peer $org echo "===================== peer${peer}.org${org} joined channel '$CHANNEL_NAME' ===================== " sleep $DELAY echo done done } ## Create channel echo "Creating channel..." createChannel ## Join all the peers to the channel echo "Having all peers join the channel..." joinChannel ## Set the anchor peers for each org in the channel echo "Updating anchor peers for org1..." updateAnchorPeers 0 1 echo "Updating anchor peers for org2..." updateAnchorPeers 0 2 ## at first we package the chaincode packageChaincode 1 0 1 ## Install chaincode on peer0.org1 and peer0.org2 echo "Installing chaincode on peer0.org1..." installChaincode 0 1 echo "Install chaincode on peer0.org2..." installChaincode 0 2 ## query whether the chaincode is installed queryInstalled 0 1 ## approve the definition for org1 approveForMyOrg 1 0 1 ## query the approval status on both orgs, expect org1 to have approved and org2 not to queryStatus 1 0 1 "\"Org1MSP\": true" "\"Org2MSP\": false" queryStatus 1 0 2 "\"Org1MSP\": true" "\"Org2MSP\": false" ## now approve also for org2 approveForMyOrg 1 0 2 ## query the approval status on both orgs, expect them both to have approved queryStatus 1 0 1 "\"Org1MSP\": true" "\"Org2MSP\": true" queryStatus 1 0 2 "\"Org1MSP\": true" "\"Org2MSP\": true" ## now that we know for sure both orgs have approved, commit the definition commitChaincodeDefinition 1 0 1 0 2 ## query on both orgs to see that the definition committed ok queryCommitted 1 0 1 queryCommitted 1 0 2 # invoke init chaincodeInvoke 1 0 1 0 2 # Query chaincode on peer0.org1 echo "Querying chaincode on peer0.org1..." chaincodeQuery 0 1 100 # Invoke chaincode on peer0.org1 and peer0.org2 echo "Sending invoke transaction on peer0.org1 peer0.org2..." chaincodeInvoke 0 0 1 0 2 # Query chaincode on peer0.org1 echo "Querying chaincode on peer0.org1..." chaincodeQuery 0 1 90 ## Install chaincode on peer1.org2 echo "Installing chaincode on peer1.org2..." installChaincode 1 2 # Query on chaincode on peer1.org2, check if the result is 90 echo "Querying chaincode on peer1.org2..." chaincodeQuery 1 2 90 echo echo "========= All GOOD, BYFN execution completed =========== " echo echo echo " _____ _ _ ____ " echo "| ____| | \ | | | _ \ " echo "| _| | \| | | | | | " echo "| |___ | |\ | | |_| | " echo "|_____| |_| \_| |____/ " echo exit 0