mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
Update the Balance Transfer to return the fabric error. The sample application was updated to both return the error in the REST response and to post the error to the log. The sample was updated with the 'channel.close()' so that users will note how to shutdown a channel and not hold connections open. Change-Id: I49f20a50340adff52cf57db00a121ffd75eb1827 Signed-off-by: Bret Harrison <beharrison@nc.rr.com>
277 lines
6.7 KiB
Bash
Executable file
277 lines
6.7 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Copyright IBM Corp. All Rights Reserved.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
jq --version > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "Please Install 'jq' https://stedolan.github.io/jq/ to execute this script"
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
starttime=$(date +%s)
|
|
|
|
# Print the usage message
|
|
function printHelp () {
|
|
echo "Usage: "
|
|
echo " ./testAPIs.sh -l golang|node"
|
|
echo " -l <language> - chaincode language (defaults to \"golang\")"
|
|
}
|
|
# Language defaults to "golang"
|
|
LANGUAGE="golang"
|
|
|
|
# Parse commandline args
|
|
while getopts "h?l:" opt; do
|
|
case "$opt" in
|
|
h|\?)
|
|
printHelp
|
|
exit 0
|
|
;;
|
|
l) LANGUAGE=$OPTARG
|
|
;;
|
|
esac
|
|
done
|
|
|
|
##set chaincode path
|
|
function setChaincodePath(){
|
|
LANGUAGE=`echo "$LANGUAGE" | tr '[:upper:]' '[:lower:]'`
|
|
case "$LANGUAGE" in
|
|
"golang")
|
|
CC_SRC_PATH="github.com/example_cc/go"
|
|
;;
|
|
"node")
|
|
CC_SRC_PATH="$PWD/artifacts/src/github.com/example_cc/node"
|
|
;;
|
|
*) printf "\n ------ Language $LANGUAGE is not supported yet ------\n"$
|
|
exit 1
|
|
esac
|
|
}
|
|
|
|
setChaincodePath
|
|
|
|
echo "POST request Enroll on Org1 ..."
|
|
echo
|
|
ORG1_TOKEN=$(curl -s -X POST \
|
|
http://localhost:4000/users \
|
|
-H "content-type: application/x-www-form-urlencoded" \
|
|
-d 'username=Jim&orgName=Org1')
|
|
echo $ORG1_TOKEN
|
|
ORG1_TOKEN=$(echo $ORG1_TOKEN | jq ".token" | sed "s/\"//g")
|
|
echo
|
|
echo "ORG1 token is $ORG1_TOKEN"
|
|
echo
|
|
echo "POST request Enroll on Org2 ..."
|
|
echo
|
|
ORG2_TOKEN=$(curl -s -X POST \
|
|
http://localhost:4000/users \
|
|
-H "content-type: application/x-www-form-urlencoded" \
|
|
-d 'username=Barry&orgName=Org2')
|
|
echo $ORG2_TOKEN
|
|
ORG2_TOKEN=$(echo $ORG2_TOKEN | jq ".token" | sed "s/\"//g")
|
|
echo
|
|
echo "ORG2 token is $ORG2_TOKEN"
|
|
echo
|
|
echo
|
|
echo "POST request Create channel ..."
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d '{
|
|
"channelName":"mychannel",
|
|
"channelConfigPath":"../artifacts/channel/mychannel.tx"
|
|
}'
|
|
echo
|
|
echo
|
|
sleep 5
|
|
echo "POST request Join channel on Org1"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/peers \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d '{
|
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"]
|
|
}'
|
|
echo
|
|
echo
|
|
|
|
echo "POST request Join channel on Org2"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/peers \
|
|
-H "authorization: Bearer $ORG2_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d '{
|
|
"peers": ["peer0.org2.example.com","peer1.org2.example.com"]
|
|
}'
|
|
echo
|
|
echo
|
|
|
|
echo "POST request Update anchor peers on Org1"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/anchorpeers \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d '{
|
|
"configUpdatePath":"../artifacts/channel/Org1MSPanchors.tx"
|
|
}'
|
|
echo
|
|
echo
|
|
|
|
echo "POST request Update anchor peers on Org2"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/anchorpeers \
|
|
-H "authorization: Bearer $ORG2_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d '{
|
|
"configUpdatePath":"../artifacts/channel/Org2MSPanchors.tx"
|
|
}'
|
|
echo
|
|
echo
|
|
|
|
echo "POST Install chaincode on Org1"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/chaincodes \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d "{
|
|
\"peers\": [\"peer0.org1.example.com\",\"peer1.org1.example.com\"],
|
|
\"chaincodeName\":\"mycc\",
|
|
\"chaincodePath\":\"$CC_SRC_PATH\",
|
|
\"chaincodeType\": \"$LANGUAGE\",
|
|
\"chaincodeVersion\":\"v0\"
|
|
}"
|
|
echo
|
|
echo
|
|
|
|
echo "POST Install chaincode on Org2"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/chaincodes \
|
|
-H "authorization: Bearer $ORG2_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d "{
|
|
\"peers\": [\"peer0.org2.example.com\",\"peer1.org2.example.com\"],
|
|
\"chaincodeName\":\"mycc\",
|
|
\"chaincodePath\":\"$CC_SRC_PATH\",
|
|
\"chaincodeType\": \"$LANGUAGE\",
|
|
\"chaincodeVersion\":\"v0\"
|
|
}"
|
|
echo
|
|
echo
|
|
|
|
echo "POST instantiate chaincode on Org1"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/chaincodes \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d "{
|
|
\"chaincodeName\":\"mycc\",
|
|
\"chaincodeVersion\":\"v0\",
|
|
\"chaincodeType\": \"$LANGUAGE\",
|
|
\"args\":[\"a\",\"100\",\"b\",\"200\"]
|
|
}"
|
|
echo
|
|
echo
|
|
|
|
echo "POST invoke chaincode on peers of Org1 and Org2"
|
|
echo
|
|
curl -s -X POST \
|
|
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json" \
|
|
-d "{
|
|
\"peers\": [\"peer0.org1.example.com\",\"peer0.org2.example.com\"],
|
|
\"fcn\":\"move\",
|
|
\"args\":[\"a\",\"b\",\"10\"]
|
|
}"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query chaincode on peer1 of Org1"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/channels/mychannel/chaincodes/mycc?peer=peer0.org1.example.com&fcn=query&args=%5B%22a%22%5D" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query Block by blockNumber"
|
|
echo
|
|
BLOCK_INFO=$(curl -s -X GET \
|
|
"http://localhost:4000/channels/mychannel/blocks/1?peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json")
|
|
echo $BLOCK_INFO
|
|
# Assign previvious block hash to HASH
|
|
HASH=$(echo $BLOCK_INFO | jq -r ".header.previous_hash")
|
|
echo
|
|
|
|
echo "GET query Transaction by TransactionID"
|
|
echo
|
|
curl -s -X GET http://localhost:4000/channels/mychannel/transactions/$TRX_ID?peer=peer0.org1.example.com \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
|
|
echo "GET query Block by Hash - Hash is $HASH"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/channels/mychannel/blocks?hash=$HASH&peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "cache-control: no-cache" \
|
|
-H "content-type: application/json" \
|
|
-H "x-access-token: $ORG1_TOKEN"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query ChainInfo"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/channels/mychannel?peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query Installed chaincodes"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/chaincodes?peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query Instantiated chaincodes"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/channels/mychannel/chaincodes?peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
echo "GET query Channels"
|
|
echo
|
|
curl -s -X GET \
|
|
"http://localhost:4000/channels?peer=peer0.org1.example.com" \
|
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
|
-H "content-type: application/json"
|
|
echo
|
|
echo
|
|
|
|
|
|
echo "Total execution time : $(($(date +%s)-starttime)) secs ..."
|