github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/examples/dchackfest/samples/e2e/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/ordererOrganizations/example.com/orderers/orderer.example.com/cacerts/example.com-cert.pem 9 10 echo "Channel name : "$CHANNEL_NAME 11 12 13 verifyResult () { 14 if [ $1 -ne 0 ] ; then 15 echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" 16 echo "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" 17 echo 18 exit 1 19 fi 20 } 21 22 setGlobals () { 23 24 if [ $1 -eq 0 -o $1 -eq 1 ] ; then 25 CORE_PEER_LOCALMSPID="Org0MSP" 26 if [ $1 -eq 0 ]; then 27 CORE_PEER_ADDRESS=peer0.org1.example.com:7051 28 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/cacerts/org1.example.com-cert.pem 29 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com 30 else 31 CORE_PEER_ADDRESS=peer1.org1.example.com:7051 32 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/cacerts/org1.example.com-cert.pem 33 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com 34 fi 35 else 36 CORE_PEER_LOCALMSPID="Org1MSP" 37 if [ $1 -eq 2 ]; then 38 CORE_PEER_ADDRESS=peer0.org2.example.com:7051 39 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/cacerts/org2.example.com-cert.pem 40 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com 41 else 42 CORE_PEER_ADDRESS=peer1.org2.example.com:7051 43 CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/cacerts/org2.example.com-cert.pem 44 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com 45 fi 46 47 fi 48 env |grep CORE 49 } 50 51 createChannel() { 52 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com 53 CORE_PEER_LOCALMSPID="OrdererMSP" 54 env |grep CORE 55 56 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 57 peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f channel.tx >&log.txt 58 else 59 peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt 60 fi 61 res=$? 62 cat log.txt 63 verifyResult $res "Channel creation failed" 64 echo "===================== Channel \"$CHANNEL_NAME\" is created 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 orderer.example.com: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 orderer.example.com: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 exit 1 146 fi 147 } 148 149 chaincodeInvoke () { 150 PEER=$1 151 setGlobals $PEER 152 if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then 153 peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt 154 else 155 peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt 156 fi 157 res=$? 158 cat log.txt 159 verifyResult $res "Invoke execution on PEER$PEER failed " 160 echo "===================== Invoke transaction on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " 161 echo 162 } 163 164 #downloadChaincodes () { 165 # CURRENT_DIR=$PWD 166 # mkdir -p /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/ 167 # cd /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/ 168 # wget https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go 169 170 # mkdir -p /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/marbles02/ 171 # cd /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/marbles02/ 172 # wget https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/marbles02/marbles_chaincode.go 173 # cd $CURRENT_DIR 174 #} 175 176 #downloadChaincodes 177 178 ## Create channel 179 createChannel 180 181 ## Join all the peers to the channel 182 joinChannel 183 184 185 ## Install chaincode on Peer0/Org0 and Peer2/Org1 186 installChaincode 0 187 installChaincode 2 188 189 #Instantiate chaincode on Peer2/Org1 190 echo "Instantiating chaincode on Peer2/Org1 ..." 191 instantiateChaincode 2 192 193 #Query on chaincode on Peer0/Org0 194 chaincodeQuery 0 100 195 196 #Invoke on chaincode on Peer0/Org0 197 echo "send Invoke transaction on Peer0/Org0 ..." 198 chaincodeInvoke 0 199 200 ## Install chaincode on Peer3/Org1 201 installChaincode 3 202 203 #Query on chaincode on Peer3/Org1, check if the result is 90 204 chaincodeQuery 3 90 205 206 echo 207 echo "===================== All GOOD, End-2-End execution completed ===================== " 208 echo 209 exit 0