github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/examples/e2e_cli/scripts/script.sh (about) 1 #!/bin/bash 2 3 CHANNEL_NAME="$1" 4 : ${CHANNEL_NAME:="mychannel"} 5 : ${TIMEOUT:="60"} 6 COUNTER=0 7 MAX_RETRY=5 8 ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig/cacerts/ordererOrg0.pem 9 10 echo "Channel name : "$CHANNEL_NAME 11 12 verifyResult () { 13 if [ $1 -ne 0 ] ; then 14 echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" 15 echo "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" 16 echo 17 exit 1 18 fi 19 } 20 21 setGlobals () { 22 23 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer$1/localMspConfig 24 CORE_PEER_ADDRESS=peer$1:7051 25 26 if [ $1 -eq 0 -o $1 -eq 1 ] ; then 27 CORE_PEER_LOCALMSPID="Org0MSP" 28 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer$1/localMspConfig/cacerts/peerOrg0.pem 29 else 30 CORE_PEER_LOCALMSPID="Org1MSP" 31 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer$1/localMspConfig/cacerts/peerOrg1.pem 32 fi 33 env |grep CORE 34 } 35 36 createChannel() { 37 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer0/localMspConfig 38 CORE_PEER_LOCALMSPID="Org0MSP" 39 40 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 41 peer channel create -o orderer0:7050 -c $CHANNEL_NAME -f crypto/orderer/channel.tx >&log.txt 42 else 43 peer channel create -o orderer0:7050 -c $CHANNEL_NAME -f crypto/orderer/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt 44 fi 45 res=$? 46 cat log.txt 47 verifyResult $res "Channel creation failed" 48 echo "===================== Channel \"$CHANNEL_NAME\" is created successfully ===================== " 49 echo 50 } 51 52 updateAnchorPeers() { 53 PEER=$1 54 setGlobals $PEER 55 56 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 57 peer channel create -o orderer0:7050 -c $CHANNEL_NAME -f crypto/orderer/${CORE_PEER_LOCALMSPID}anchors.tx >&log.txt 58 else 59 peer channel create -o orderer0:7050 -c $CHANNEL_NAME -f crypto/orderer/${CORE_PEER_LOCALMSPID}anchors.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt 60 fi 61 res=$? 62 cat log.txt 63 verifyResult $res "Anchor peer update failed" 64 echo "===================== Anchor peers for org \"$CORE_PEER_LOCALMSPID}\" on \"$CHANNEL_NAME\" is updated successfully ===================== " 65 echo 66 } 67 68 ## Sometimes Join takes time hence RETRY atleast for 5 times 69 joinWithRetry () { 70 peer channel join -b $CHANNEL_NAME.block >&log.txt 71 res=$? 72 cat log.txt 73 if [ $res -ne 0 -a $COUNTER -lt $MAX_RETRY ]; then 74 COUNTER=` expr $COUNTER + 1` 75 echo "PEER$1 failed to join the channel, Retry after 2 seconds" 76 sleep 2 77 joinWithRetry $1 78 else 79 COUNTER=0 80 fi 81 verifyResult $res "After $MAX_RETRY attempts, PEER$ch has failed to Join the Channel" 82 } 83 84 joinChannel () { 85 for ch in 0 1 2 3; do 86 setGlobals $ch 87 joinWithRetry $ch 88 echo "===================== PEER$ch joined on the channel \"$CHANNEL_NAME\" ===================== " 89 sleep 2 90 echo 91 done 92 } 93 94 installChaincode () { 95 PEER=$1 96 setGlobals $PEER 97 peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 >&log.txt 98 res=$? 99 cat log.txt 100 verifyResult $res "Chaincode installation on remote peer PEER$PEER has Failed" 101 echo "===================== Chaincode is installed on remote peer PEER$PEER ===================== " 102 echo 103 } 104 105 instantiateChaincode () { 106 PEER=$1 107 setGlobals $PEER 108 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 109 peer chaincode instantiate -o orderer0:7050 -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org0MSP.member','Org1MSP.member')" >&log.txt 110 else 111 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 ('Org0MSP.member','Org1MSP.member')" >&log.txt 112 fi 113 res=$? 114 cat log.txt 115 verifyResult $res "Chaincode instantiation on PEER$PEER on channel '$CHANNEL_NAME' failed" 116 echo "===================== Chaincode Instantiation on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " 117 echo 118 } 119 120 chaincodeQuery () { 121 PEER=$1 122 echo "===================== Querying on PEER$PEER on channel '$CHANNEL_NAME'... ===================== " 123 setGlobals $PEER 124 local rc=1 125 local starttime=$(date +%s) 126 127 # continue to poll 128 # we either get a successful response, or reach TIMEOUT 129 while test "$(($(date +%s)-starttime))" -lt "$TIMEOUT" -a $rc -ne 0 130 do 131 sleep 3 132 echo "Attempting to Query PEER$PEER ...$(($(date +%s)-starttime)) secs" 133 peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt 134 test $? -eq 0 && VALUE=$(cat log.txt | awk '/Query Result/ {print $NF}') 135 test "$VALUE" = "$2" && let rc=0 136 done 137 echo 138 cat log.txt 139 if test $rc -eq 0 ; then 140 echo "===================== Query on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " 141 else 142 echo "!!!!!!!!!!!!!!! Query result on PEER$PEER is INVALID !!!!!!!!!!!!!!!!" 143 echo "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" 144 echo 145 fi 146 } 147 148 chaincodeInvoke () { 149 PEER=$1 150 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 151 peer chaincode invoke -o orderer0:7050 -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt 152 else 153 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 154 fi 155 res=$? 156 cat log.txt 157 verifyResult $res "Invoke execution on PEER$PEER failed " 158 echo "===================== Invoke transaction on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " 159 echo 160 } 161 162 ## Create channel 163 createChannel 164 165 ## Join all the peers to the channel 166 joinChannel 167 168 ## Set the anchor peers for each org in the channel 169 updateAnchorPeers 0 170 updateAnchorPeers 2 171 172 ## Install chaincode on Peer0/Org0 and Peer2/Org1 173 installChaincode 0 174 installChaincode 2 175 176 #Instantiate chaincode on Peer2/Org1 177 echo "Instantiating chaincode on Peer2/Org1 ..." 178 instantiateChaincode 2 179 180 #Query on chaincode on Peer0/Org0 181 chaincodeQuery 0 100 182 183 #Invoke on chaincode on Peer0/Org0 184 echo "send Invoke transaction on Peer0/Org0 ..." 185 chaincodeInvoke 0 186 187 ## Install chaincode on Peer3/Org1 188 installChaincode 3 189 190 #Query on chaincode on Peer3/Org1, check if the result is 90 191 chaincodeQuery 3 90 192 193 echo 194 echo "===================== All GOOD, End-2-End execution completed ===================== " 195 echo 196 exit 0