123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #!/bin/bash
- CHANNEL_NAME="$1"
- : ${CHANNEL_NAME:="mychannel"}
- : ${TIMEOUT:="60"}
- COUNTER=0
- MAX_RETRY=5
- ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/ordererOrg1/orderers/orderer.ordererOrg1/cacerts/ordererOrg1-cert.pem
- echo "Channel name : "$CHANNEL_NAME
- verifyResult () {
- if [ $1 -ne 0 ] ; then
- echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!"
- echo "================== ERROR !!! FAILED to execute End-2-End Scenario =================="
- echo
- exit 1
- fi
- }
- setGlobals () {
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/peerOrganizations/peerOrg1/peers/peer"$1".peerOrg1
- #CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer$1/localMspConfig
- CORE_PEER_ADDRESS=peer$1:7051
- CORE_PEER_LOCALMSPID="Org1MSP"
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/peerOrganizations/peerOrg1/peers/peer"$1".peerOrg1/cacerts/peerOrg1-cert.pem
- env |grep CORE
- }
- createChannel() {
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/ordererOrg1/orderers/orderer.ordererOrg1
- #CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig
- CORE_PEER_LOCALMSPID="OrdererMSP"
- peer channel create -o orderer0:7050 -c $CHANNEL_NAME -f crypto-config/ordererOrganizations/ordererOrg1/orderers/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
- res=$?
- cat log.txt
- verifyResult $res "Channel creation failed"
- echo "===================== Channel \"$CHANNEL_NAME\" is created successfully ===================== "
- echo
- }
- ## Sometimes Join takes time hence RETRY atleast for 5 times
- joinWithRetry () {
- peer channel join -b $CHANNEL_NAME.block >&log.txt
- res=$?
- cat log.txt
- if [ $res -ne 0 -a $COUNTER -lt $MAX_RETRY ]; then
- COUNTER=` expr $COUNTER + 1`
- echo "PEER$1 failed to join the channel, Retry after 2 seconds"
- sleep 2
- joinWithRetry $1
- else
- COUNTER=0
- fi
- verifyResult $res "After $MAX_RETRY attempts, PEER$ch has failed to Join the Channel"
- }
- joinChannel () {
- for ch in 0 1 2 3; do
- setGlobals $ch
- joinWithRetry $ch
- echo "===================== PEER$ch joined on the channel \"$CHANNEL_NAME\" ===================== "
- sleep 2
- echo
- done
- }
- installChaincode () {
- PEER=$1
- setGlobals $PEER
- peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 >&log.txt
- res=$?
- cat log.txt
- verifyResult $res "Chaincode installation on remote peer PEER$PEER has Failed"
- echo "===================== Chaincode is installed on remote peer PEER$PEER ===================== "
- echo
- }
- instantiateChaincode () {
- PEER=$1
- setGlobals $PEER
- peer chaincode instantiate -o orderer0:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member')" >&log.txt
- res=$?
- cat log.txt
- verifyResult $res "Chaincode instantiation on PEER$PEER on channel '$CHANNEL_NAME' failed"
- echo "===================== Chaincode Instantiation on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== "
- echo
- }
- chaincodeQuery () {
- PEER=$1
- echo "===================== Querying on PEER$PEER on channel '$CHANNEL_NAME'... ===================== "
- setGlobals $PEER
- local rc=1
- local starttime=$(date +%s)
- # continue to poll
- # we either get a successful response, or reach TIMEOUT
- while test "$(($(date +%s)-starttime))" -lt "$TIMEOUT" -a $rc -ne 0
- do
- sleep 3
- echo "Attempting to Query PEER$PEER ...$(($(date +%s)-starttime)) secs"
- peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt
- test $? -eq 0 && VALUE=$(cat log.txt | awk '/Query Result/ {print $NF}')
- test "$VALUE" = "$2" && let rc=0
- done
- echo
- cat log.txt
- if test $rc -eq 0 ; then
- echo "===================== Query on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== "
- else
- echo "!!!!!!!!!!!!!!! Query result on PEER$PEER is INVALID !!!!!!!!!!!!!!!!"
- echo "================== ERROR !!! FAILED to execute End-2-End Scenario =================="
- echo
- fi
- }
- chaincodeInvoke () {
- PEER=$1
- peer chaincode invoke -o orderer0:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt
- res=$?
- cat log.txt
- verifyResult $res "Invoke execution on PEER$PEER failed "
- echo "===================== Invoke transaction on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== "
- echo
- }
- ## Create channel
- createChannel
- ## Join all the peers to the channel
- joinChannel
- ## Install chaincode on Peer0/Org0 and Peer2/Org1
- installChaincode 0
- installChaincode 2
- #Instantiate chaincode on Peer2/Org1
- echo "Instantiating chaincode on Peer2/Org1 ..."
- instantiateChaincode 2
- #Query on chaincode on Peer0/Org0
- chaincodeQuery 0 100
- #Invoke on chaincode on Peer0/Org0
- echo "send Invoke transaction on Peer0/Org0 ..."
- chaincodeInvoke 0
- ## Install chaincode on Peer3/Org1
- installChaincode 3
- #Query on chaincode on Peer3/Org1, check if the result is 90
- chaincodeQuery 3 90
- installChaincode 1
- chaincodeQuery 1 90
- echo
- echo "===================== All GOOD, End-2-End execution completed ===================== "
- echo
- exit 0
|