diff --git a/hyperledger/1.0/docker-compose-2orgs-4peers.yaml b/hyperledger/1.0/docker-compose-2orgs-4peers.yaml index 3b7d2214..08bb29a1 100644 --- a/hyperledger/1.0/docker-compose-2orgs-4peers.yaml +++ b/hyperledger/1.0/docker-compose-2orgs-4peers.yaml @@ -58,6 +58,8 @@ services: - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp + - CHANNEL_NAME:="businesschannel" + - ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem volumes: - ./e2e_cli/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples - ./e2e_cli/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ diff --git a/hyperledger/1.0/scripts/func.sh b/hyperledger/1.0/scripts/func.sh new file mode 100644 index 00000000..0d2d0926 --- /dev/null +++ b/hyperledger/1.0/scripts/func.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Some useful functions for cc testing + +# Detecting whether can import the header file to render colorful cli output +if [ -f ./header.sh ]; then + source ./header.sh +elif [ -f scripts/header.sh ]; then + source scripts/header.sh +else + alias echo_r="echo" + alias echo_g="echo" + alias echo_b="echo" +fi + +CHANNEL_NAME="$1" +: ${CHANNEL_NAME:="businesschannel"} +: ${TIMEOUT:="60"} +COUNTER=1 +MAX_RETRY=5 +ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem + +verifyResult () { + if [ $1 -ne 0 ] ; then + echo_b "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" + echo_r "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" + echo + exit 1 + fi +} + +setGlobals () { + + if [ $1 -eq 0 -o $1 -eq 1 ] ; then + CORE_PEER_LOCALMSPID="Org1MSP" + CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp + if [ $1 -eq 0 ]; then + CORE_PEER_ADDRESS=peer0.org1.example.com:7051 + else + CORE_PEER_ADDRESS=peer1.org1.example.com:7051 + fi + else + CORE_PEER_LOCALMSPID="Org2MSP" + CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt + CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp + if [ $1 -eq 2 ]; then + CORE_PEER_ADDRESS=peer0.org2.example.com:7051 + else + CORE_PEER_ADDRESS=peer1.org2.example.com:7051 + fi + fi + + env |grep CORE +} + +chaincodeQuery () { + PEER=$1 + echo_b "===================== 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_b "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_g "===================== Query on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " + else + echo_r "!!!!!!!!!!!!!!! Query result on PEER$PEER is INVALID !!!!!!!!!!!!!!!!" + echo_r "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" + echo + exit 1 + fi +} + +chaincodeInvoke () { + PEER=$1 + setGlobals $PEER + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt + else + 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 + fi + res=$? + cat log.txt + verifyResult $res "Invoke execution on PEER$PEER failed " + echo_g "===================== Invoke transaction on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " + echo +} + diff --git a/hyperledger/1.0/scripts/test_1peer.sh b/hyperledger/1.0/scripts/test_1peer.sh index 79a3e662..f6d315dd 100644 --- a/hyperledger/1.0/scripts/test_1peer.sh +++ b/hyperledger/1.0/scripts/test_1peer.sh @@ -1,130 +1,14 @@ #!/bin/bash -# Detecting whether can import the header file to render colorful cli output -if [ -f ./header.sh ]; then - source ./header.sh -elif [ -f scripts/header.sh ]; then - source scripts/header.sh -else - alias echo_r="echo" - alias echo_g="echo" - alias echo_b="echo" +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh fi -CHANNEL_NAME="$1" -: ${CHANNEL_NAME:="businesschannel"} -: ${TIMEOUT:="60"} -COUNTER=0 -MAX_RETRY=5 -CC_PATH=github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 - echo_b "Channel name : "$CHANNEL_NAME -verifyResult () { - if [ $1 -ne 0 ] ; then - echo_b "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" - echo_r "================== ERROR !!! FAILED to execute MVE ==================" - echo - exit 1 - fi -} - -createChannel() { - peer channel create -o orderer.example.com:7050 -c ${CHANNEL_NAME} -f ./channel-artifacts/channel.tx >&log.txt - res=$? - cat log.txt - - verifyResult $res "Channel creation failed" - echo - - # verify file newchannel.block exist - if [ -s mychannel.block ]; then - res=$? - verifyResult $res "Channel created failed" - fi - echo_g "================channel \"$CHANNEL_NAME\" is created successfully ===============" -} - -## Sometimes Join takes time hence RETRY atleast for 5 times - -joinChannel () { - echo_b "===================== PEER0 joined on the channel \"$CHANNEL_NAME\" ===================== " - peer channel join -b ${CHANNEL_NAME}.block -o orderer.example.com:7050 >&log.txt - res=$? - cat log.txt - if [ $res -ne 0 -a $COUNTER -lt $MAX_RETRY ]; then - COUNTER=` expr $COUNTER + 1` - echo_r "PEER0 failed to join the channel, Retry after 2 seconds" - sleep 2 - joinWithRetry - else - COUNTER=0 - fi - verifyResult $res "After $MAX_RETRY attempts, PEER0 has failed to Join the Channel" -} - -updateAnchorPeers() { - peer channel create -o orderer.example.com:7050 -c ${CHANNEL_NAME} -f ./channel-artifacts/Org1MSPanchors.tx >&log.txt - res=$? - cat log.txt - verifyResult $res "Anchor peer update failed" - echo_g "==== Anchor peers for org1 on mychannel is updated successfully======" - echo -} - -installChaincode () { - peer chaincode install -n mycc -v 1.0 -p ${CC_PATH} -o orderer.example.com:7050 >&log.txt - res=$? - cat log.txt - verifyResult $res "Chaincode installation on remote peer0 has Failed" - echo_g "===================== Chaincode is installed success on remote peer0===================== " - echo -} - -instantiateChaincode () { - local starttime=$(date +%s) - 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 ('Org1MSP.member')" >&log.txt - res=$? - cat log.txt - verifyResult $res "Chaincode instantiation on pee0.org1 on channel '$CHANNEL_NAME' failed" - echo_g "=========== Chaincode Instantiation on peer0.org1 on channel '$CHANNEL_NAME' is successful ========== " - echo_b "Instantiate spent $(($(date +%s)-starttime)) secs" - echo -} - -chaincodeQuery () { - local rc=1 - local starttime=$(date +%s) - - while test "$(($(date +%s)-starttime))" -lt "$TIMEOUT" -a $rc -ne 0 - do - sleep 3 - echo_b "Attempting to Query peer0.org1 ...$(($(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" = "$1" && let rc=0 - done - echo - cat log.txt - if test $rc -eq 0 ; then - echo_g "===================== Query on peer0.org1 on channel '$CHANNEL_NAME' is successful ===================== " - - else - echo_r "!!!!!!!!!!!!!!! Query result on peer0.org1 is INVALID !!!!!!!!!!!!!!!!" - echo_r "================== ERROR !!! FAILED to execute MVE test ==================" - echo - fi -} - -chaincodeInvoke () { - peer chaincode invoke -o orderer.example.com:7050 -C ${CHANNEL_NAME} -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt - res=$? - cat log.txt - verifyResult $res "Invoke execution on peer0.org1 failed " - echo_g "========= Invoke transaction on peer0.org1 on channel '$CHANNEL_NAME' is successful ===== " - echo -} - echo_b "====================1.Create channel(default newchannel) =============================" createChannel diff --git a/hyperledger/1.0/scripts/test_cc_invoke_query.sh b/hyperledger/1.0/scripts/test_cc_invoke_query.sh index 5d5e6da5..9e13635a 100644 --- a/hyperledger/1.0/scripts/test_cc_invoke_query.sh +++ b/hyperledger/1.0/scripts/test_cc_invoke_query.sh @@ -1,115 +1,14 @@ #!/bin/bash -# Detecting whether can import the header file to render colorful cli output -if [ -f ./header.sh ]; then - source ./header.sh -elif [ -f scripts/header.sh ]; then - source scripts/header.sh -else - alias echo_r="echo" - alias echo_g="echo" - alias echo_b="echo" +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh fi -echo -echo " ______ __ __ _ _____ ____ _ ______ ______ ______ _____ " -echo " / _____| | | | | / \ |_ _| | |\ \ | | / _____| / ______ \ | ___\ \ | ____|" -echo "/ / | |---| | / _ \ | | | | \ \ | | / / / / \ \ | | \ \ | _| " -echo "\ \_____ | |---| | / ___ \ _| |_ | | \ \ | | \ \_____ \ \______/ / | |____/ / | |___ " -echo " \______| |__| |__| /_/ \_\ |_____| |_| \_\|_| \______| \ ______ / |_______/ |_____|" -echo - - -CHANNEL_NAME="$1" -: ${CHANNEL_NAME:="businesschannel"} -: ${TIMEOUT:="60"} -COUNTER=1 -MAX_RETRY=5 -ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem - echo_b "Channel name : "$CHANNEL_NAME -verifyResult () { - if [ $1 -ne 0 ] ; then - echo_b "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" - echo_r "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" - echo - exit 1 - fi -} - -setGlobals () { - - if [ $1 -eq 0 -o $1 -eq 1 ] ; then - CORE_PEER_LOCALMSPID="Org1MSP" - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp - if [ $1 -eq 0 ]; then - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - else - CORE_PEER_ADDRESS=peer1.org1.example.com:7051 - fi - else - CORE_PEER_LOCALMSPID="Org2MSP" - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp - if [ $1 -eq 2 ]; then - CORE_PEER_ADDRESS=peer0.org2.example.com:7051 - else - CORE_PEER_ADDRESS=peer1.org2.example.com:7051 - fi - fi - - env |grep CORE -} - -chaincodeQuery () { - PEER=$1 - echo_b "===================== 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_b "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_g "===================== Query on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " - else - echo_r "!!!!!!!!!!!!!!! Query result on PEER$PEER is INVALID !!!!!!!!!!!!!!!!" - echo_r "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" - echo - exit 1 - fi -} - -chaincodeInvoke () { - PEER=$1 - setGlobals $PEER - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' >&log.txt - else - 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 - fi - res=$? - cat log.txt - verifyResult $res "Invoke execution on PEER$PEER failed " - echo_g "===================== Invoke transaction on PEER$PEER on channel '$CHANNEL_NAME' is successful ===================== " - echo -} - - #Query on chaincode on Peer0/Org1 echo_b "Querying chaincode on all 4 peers..." chaincodeQuery 0 100 @@ -143,12 +42,4 @@ echo echo_g "===================== All GOOD, End-2-End execution completed ===================== " echo -echo -echo " _____ _ _ ____ " -echo "| ____| | \ | | | _ \ " -echo "| _| | \| | | | | |" -echo "| |___ | |\ | | |_| |" -echo "|_____| |_| \_| |____/ " -echo - exit 0