diff --git a/high-throughput/README.md b/high-throughput/README.md index 7eea4f07e3..0badf67325 100644 --- a/high-throughput/README.md +++ b/high-throughput/README.md @@ -94,75 +94,56 @@ and assumed to be correct and at minimal risk to either company simply due to Am must be verified before approval and admittance to the chain. ## How -This sample provides the chaincode and scripts required to run a high-throughput application. For ease of use, it runs on the same network which is brought -up by `byfn.sh` in the `first-network` folder within `fabric-samples`, albeit with a few small modifications. The instructions to build the network -and run some invocations are provided below. +This sample provides the chaincode and scripts required to run a high-throughput application on the Fabric test network. -### Build your network -1. `cd` into the `first-network` folder within `fabric-samples`, e.g. `cd ~/fabric-samples/first-network` -2. Open `docker-compose-cli.yaml` in your favorite editor, and edit the following lines: - * In the `volumes` section of the `cli` container, edit the second line which refers to the chaincode folder to point to the chaincode folder - within the `high-throughput` folder, e.g. - - `./../chaincode/:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode` --> - `./../high-throughput/chaincode/:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode` - * Again in the `volumes` section, edit the fourth line which refers to the scripts folder so it points to the scripts folder within the - `high-throughput` folder, e.g. - - `./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/` --> - `./../high-throughput/scripts/:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/` +### Vendor the chaincode dependencies +1. Change into the chaincode directory, e.g. `cd ~/fabric-samples/high-throughput/chaincode` +2. Vendor the Go dependencies by running the following command: `GO111MODULE=on go mod vendor` +3. The chaincode directory will now contain a `vendor` directory. - * Finally, comment out the `docker exec cli scripts/script.sh` command from the `byfn.sh` script by placing a `#` before it so that the standard BYFN end to end script doesn't run, e.g. +### Start the network - `# docker exec cli scripts/script.sh $CHANNEL_NAME $CLI_DELAY $CC_SRC_LANGUAGE $CLI_TIMEOUT $VERBOSE` +You can use the `startFabric.sh` script to create an instance of the Fabric test network with a single channel named `mychannel`. The script then deploys the `high-throughput` chaincode to the channel by installing it on the test network peers and committing the chaincode definition to the channel. -3. We can now bring our network up by typing in `./byfn.sh up -c mychannel` -4. Open a new terminal window and enter the CLI container using `docker exec -it cli bash`, all operations on the network will happen within - this container from now on. +Change back into the `high-throughput` directory in `fabic-samples`. Start the network and deploy the chaincode by issuing the following command: +``` +./startFabric.sh +``` -### Vendor the chaincode dependencies -1. Outside of the CLI container, change into the chaincode directory, e.g. `cd ~/fabric-samples/high-throughput/chaincode` -2. Vendor the Go dependencies by running the following command: `GO111MODULE=on go mod vendor` -3. The chaincode directory will now contain a `vendor` directory. +If successful, you will see messages of the Fabric test network being created and the chaincode being deployed, followed by the execution time of the script: +``` +Total setup execution time : 141 secs ... +``` -### Install and define the chaincode -1. Once you're in the CLI container run `cd scripts` to enter the `scripts` folder -2. Set-up the environment variables by running `source setclienv.sh` -3. Set-up your channels and anchor peers by running `./channel-setup.sh` -4. Package and install your chaincode by running `./install-chaincode.sh 1`. The only argument is a number representing the chaincode version, every time - you want to install and upgrade to a new chaincode version simply increment this value by 1 when running the command, e.g. `./install-chaincode.sh 2` -5. Define your chaincode on the channel by running `./approve-commit-chaincode.sh 1`. The version argument serves the same purpose as in `./install-chaincode.sh 1` - and should match the version of the chaincode you just installed. This script also invokes the chaincode `Init` function to start the chaincode container. - You can also upgrade the chaincode to a newer version by running `./approve-commit-chaincode.sh 2`. -6. Your chaincode is now installed and ready to receive invocations +The `high-throughput` chaincode is now ready to receive invocations. ### Invoke the chaincode -All invocations are provided as scripts in `scripts` folder; these are detailed below. +All invocations are provided as scripts in `scripts` folder. You can use these scripts to create and remove assets that you put on the ledger. #### Update -The format for update is: `./update-invoke.sh name value operation` where `name` is the name of the variable to update, `value` is the value to +The format for update is: `./scripts/update-invoke.sh name value operation` where `name` is the name of the variable to update, `value` is the value to add to the variable, and `operation` is either `+` or `-` depending on what type of operation you'd like to add to the variable. In the future, multiply/divide operations will be supported (or add them yourself to the chaincode as an exercise!) -Example: `./update-invoke.sh myvar 100 +` +Example: `./scripts/update-invoke.sh myvar 100 +` #### Get The format for get is: `./get-invoke.sh name` where `name` is the name of the variable to get. -Example: `./get-invoke.sh myvar` - -#### Delete -The format for delete is: `./delete-invoke.sh name` where `name` is the name of the variable to delete. - -Example: `./delete-invoke.sh myvar` +Example: `./scripts/get-invoke.sh myvar` #### Prune Pruning takes all the deltas generated for a variable and combines them all into a single row, deleting all previous rows. This helps cleanup the ledger when many updates have been performed. -The format for pruning is: `./prune-invoke.sh name` where `name` is the name of the variable to prune. +The format for pruning is: `./scripts/prune-invoke.sh name` where `name` is the name of the variable to prune. + +Example: `./scripts/prune-invoke.sh myvar` -Example: `./prune-invoke.sh myvar` +#### Delete +The format for delete is: `./delete-invoke.sh name` where `name` is the name of the variable to delete. + +Example: `./scripts/delete-invoke.sh myvar` ### Test the Network Two scripts are provided to show the advantage of using this system when running many parallel transactions at once: `many-updates.sh` and @@ -178,6 +159,14 @@ errors in the peer and orderer logs. There are two other scripts, `get-traditional.sh`, which simply gets the value of a row in the traditional way, with no deltas, and `del-traditional.sh` will delete an asset in the traditional way. Examples: -`./many-updates.sh testvar 100 +` --> final value from `./get-invoke.sh testvar` should be 100000 +`./scripts/many-updates.sh testvar 100 +` --> final value from `./scripts/get-invoke.sh testvar` should be 100000 + +`./scripts/many-updates-traditional.sh testvar` --> final value from `./scripts/get-traditional.sh testvar` is undefined + +### Clean up + +When you are finished using the `high-throughput` chaincode, you can bring down the network and remove any accompanying artifacts using the `networkDown.sh` script. -`./many-updates-traditional.sh testvar` --> final value from `./get-traditional.sh testvar` is undefined +``` +./networkDown.sh +``` diff --git a/high-throughput/networkDown.sh b/high-throughput/networkDown.sh new file mode 100755 index 0000000000..5798f01160 --- /dev/null +++ b/high-throughput/networkDown.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Copyright IBM Corp All Rights Reserved +# +# SPDX-License-Identifier: Apache-2.0 +# +# Exit on first error +set -ex + +rm -rf bigdatacc.tar.gz log.txt + +# Bring the test network down +pushd ../test-network +./network.sh down +popd diff --git a/high-throughput/scripts/approve-commit-chaincode.sh b/high-throughput/scripts/approve-commit-chaincode.sh index 081235826f..a314e190ac 100755 --- a/high-throughput/scripts/approve-commit-chaincode.sh +++ b/high-throughput/scripts/approve-commit-chaincode.sh @@ -4,40 +4,41 @@ # SPDX-License-Identifier: Apache-2.0 # +export CORE_PEER_TLS_ENABLED=true echo "========== Query chaincode package ID ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 export CORE_PEER_LOCALMSPID="Org1MSP" -export 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 +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt peer lifecycle chaincode queryinstalled >&log.txt export PACKAGE_ID=`sed -n '/Package/{s/^Package ID: //; s/, Label:.*$//; p;}' log.txt` echo "========== Approve definition for Org1 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 export CORE_PEER_LOCALMSPID="Org1MSP" -export 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 -peer lifecycle chaincode install ${CC_NAME}.tar.gz +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +peer lifecycle chaincode install bigdatacc.tar.gz -peer lifecycle chaincode approveformyorg -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID $CHANNEL_NAME --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name $CC_NAME --version $1 --init-required --package-id ${PACKAGE_ID} --sequence $1 +peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name bigdatacc --version 0 --init-required --package-id ${PACKAGE_ID} --sequence 1 echo "========== Approve definition for Org2 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp -export CORE_PEER_ADDRESS=peer0.org2.example.com:9051 +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp +export CORE_PEER_ADDRESS=localhost:9051 export CORE_PEER_LOCALMSPID="Org2MSP" -export 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 -peer lifecycle chaincode approveformyorg -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID $CHANNEL_NAME --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name $CC_NAME --version $1 --init-required --package-id ${PACKAGE_ID} --sequence $1 +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name bigdatacc --version 0 --init-required --package-id ${PACKAGE_ID} --sequence 1 -. query-status.sh +. scripts/check-commit-readiness.sh -queryStatus $1 0 1 "\"Org1MSP\": true" "\"Org2MSP\": true" -queryStatus $1 0 2 "\"Org1MSP\": true" "\"Org2MSP\": true" +checkCommitReadiness 1 "\"Org1MSP\": true" "\"Org2MSP\": true" +checkCommitReadiness 2 "\"Org1MSP\": true" "\"Org2MSP\": true" -echo "========== Commit the definition the $CHANNEL_NAME ==========" -peer lifecycle chaincode commit -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID $CHANNEL_NAME --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name $CC_NAME --version $1 --init-required --sequence $1 --waitForEvent --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +echo "========== Commit the definition the mychannel ==========" +peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --name bigdatacc --version 0 --init-required --sequence 1 --waitForEvent --peerAddresses localhost:7051 --tlsRootCertFiles ../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ../test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt echo "========== Invoke the Init function ==========" -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME --isInit -c '{"Args":["Init"]}' +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc --isInit -c '{"Args":["Init"]}' diff --git a/high-throughput/scripts/channel-setup.sh b/high-throughput/scripts/channel-setup.sh deleted file mode 100755 index 376f468501..0000000000 --- a/high-throughput/scripts/channel-setup.sh +++ /dev/null @@ -1,45 +0,0 @@ -# -# Copyright IBM Corp All Rights Reserved -# -# SPDX-License-Identifier: Apache-2.0 -# - -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 - -# Channel creation -echo "========== Creating channel: "$CHANNEL_NAME" ==========" -peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ../channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem - -# peer0.org1 channel join -echo "========== Joining peer0.org1.example.com to channel mychannel ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 -export CORE_PEER_LOCALMSPID="Org1MSP" -export 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 -peer channel join -b ${CHANNEL_NAME}.block -peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ../channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA - -# peer1.org1 channel join -echo "========== Joining peer1.org1.example.com to channel mychannel ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer1.org1.example.com:8051 -export CORE_PEER_LOCALMSPID="Org1MSP" -export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt -peer channel join -b ${CHANNEL_NAME}.block - -# peer0.org2 channel join -echo "========== Joining peer0.org2.example.com to channel mychannel ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp -export CORE_PEER_ADDRESS=peer0.org2.example.com:9051 -export CORE_PEER_LOCALMSPID="Org2MSP" -export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt -peer channel join -b ${CHANNEL_NAME}.block -peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ../channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA - -# peer1.org2 channel join -echo "========== Joining peer1.org2.example.com to channel mychannel ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp -export CORE_PEER_ADDRESS=peer1.org2.example.com:10051 -export CORE_PEER_LOCALMSPID="Org2MSP" -export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt -peer channel join -b ${CHANNEL_NAME}.block diff --git a/high-throughput/scripts/check-commit-readiness.sh b/high-throughput/scripts/check-commit-readiness.sh index d65f57095f..bf18092078 100755 --- a/high-throughput/scripts/check-commit-readiness.sh +++ b/high-throughput/scripts/check-commit-readiness.sh @@ -5,27 +5,17 @@ # setGlobals() { - PEER=$1 - ORG=$2 + ORG=$1 if [ $ORG -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 [ $PEER -eq 0 ]; then - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - else - CORE_PEER_ADDRESS=peer1.org1.example.com:8051 - fi + CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp + CORE_PEER_ADDRESS=localhost:7051 elif [ $ORG -eq 2 ]; then 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 [ $PEER -eq 0 ]; then - CORE_PEER_ADDRESS=peer0.org2.example.com:9051 - else - CORE_PEER_ADDRESS=peer1.org2.example.com:10051 - fi - + CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt + CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp + CORE_PEER_ADDRESS=localhost:9051 else echo "================== ERROR !!! ORG Unknown ==================" fi @@ -36,11 +26,9 @@ setGlobals() { } checkCommitReadiness() { - VERSION=$1 - PEER=$2 - ORG=$3 + ORG=$1 shift 3 - setGlobals $PEER $ORG + setGlobals $ORG echo "===================== Simulating the commit of the chaincode definition on peer${PEER}.org${ORG} ===================== " local rc=1 local starttime=$(date +%s) @@ -51,9 +39,9 @@ checkCommitReadiness() { test "$(($(date +%s) - starttime))" -lt "$TIMEOUT" -a $rc -ne 0 do sleep $DELAY - echo "Attempting to check the commit readiness of the chaincode definition on peer${PEER}.org${ORG} ...$(($(date +%s) - starttime)) secs" + echo "Attempting to check the commit readiness of the chaincode definition on peer0.org${ORG} ...$(($(date +%s) - starttime)) secs" set -x - peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name $CC_NAME --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --version ${VERSION} --init-required --sequence ${VERSION} >&log.txt + peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name bigdatacc --signature-policy "OR('Org1MSP.peer', 'Org2MSP.peer')" --version 0 --init-required --sequence 1 >&log.txt res=$? set +x test $res -eq 0 || continue @@ -66,9 +54,9 @@ checkCommitReadiness() { echo cat log.txt if test $rc -eq 0; then - echo "===================== Checking the commit readiness of the chaincode definition successful on peer${PEER}.org${ORG} ===================== " + echo "===================== Checking the commit readiness of the chaincode definition successful on peer0.org${ORG} ===================== " else - echo "!!!!!!!!!!!!!!! Check commit readiness result on peer${PEER}.org${ORG} is INVALID !!!!!!!!!!!!!!!!" + echo "!!!!!!!!!!!!!!! Check commit readiness result on peer0.org${ORG} is INVALID !!!!!!!!!!!!!!!!" echo "================== ERROR !!! FAILED to execute End-2-End Scenario ==================" echo exit 1 diff --git a/high-throughput/scripts/del-traditional.sh b/high-throughput/scripts/del-traditional.sh index 954fab8ac8..65d9449503 100644 --- a/high-throughput/scripts/del-traditional.sh +++ b/high-throughput/scripts/del-traditional.sh @@ -4,4 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["delstandard","'$1'"]}' \ No newline at end of file +source scripts/setenv.sh + +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["delstandard","'$1'"]}' diff --git a/high-throughput/scripts/delete-invoke.sh b/high-throughput/scripts/delete-invoke.sh index ec08035e9d..34483a522c 100755 --- a/high-throughput/scripts/delete-invoke.sh +++ b/high-throughput/scripts/delete-invoke.sh @@ -4,5 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["delete","'$1'"]}' +source scripts/setenv.sh +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["delete","'$1'"]}' diff --git a/high-throughput/scripts/get-invoke.sh b/high-throughput/scripts/get-invoke.sh index f89bbb2da3..7629baed1e 100755 --- a/high-throughput/scripts/get-invoke.sh +++ b/high-throughput/scripts/get-invoke.sh @@ -4,5 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["get","'$1'"]}' +source scripts/setenv.sh +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["get","'$1'"]}' diff --git a/high-throughput/scripts/get-traditional.sh b/high-throughput/scripts/get-traditional.sh index bb0fe52291..cea663d44d 100755 --- a/high-throughput/scripts/get-traditional.sh +++ b/high-throughput/scripts/get-traditional.sh @@ -4,4 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["getstandard","'$1'"]}' +source scripts/setenv.sh + +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["getstandard","'$1'"]}' diff --git a/high-throughput/scripts/install-chaincode.sh b/high-throughput/scripts/install-chaincode.sh index 15f344d008..cac7f4ac2b 100755 --- a/high-throughput/scripts/install-chaincode.sh +++ b/high-throughput/scripts/install-chaincode.sh @@ -3,38 +3,26 @@ # # SPDX-License-Identifier: Apache-2.0 # +export CORE_PEER_TLS_ENABLED=true -echo "========== Package a chaincode on peer0.org1 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 +echo "========== Package a chaincode ==========" +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 export CORE_PEER_LOCALMSPID="Org1MSP" -export 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 -peer lifecycle chaincode package ${CC_NAME}.tar.gz --path github.com/hyperledger/fabric-samples/chaincode/ --lang golang --label ${CC_NAME}_$1 +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +peer lifecycle chaincode package bigdatacc.tar.gz --path chaincode/ --lang golang --label bigdatacc_0 echo "========== Installing chaincode on peer0.org1 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 export CORE_PEER_LOCALMSPID="Org1MSP" -export 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 -peer lifecycle chaincode install ${CC_NAME}.tar.gz +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +peer lifecycle chaincode install bigdatacc.tar.gz -echo "========== Installing chaincode on peer1.org1 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp -export CORE_PEER_ADDRESS=peer1.org1.example.com:8051 -export CORE_PEER_LOCALMSPID="Org1MSP" -export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt -peer lifecycle chaincode install ${CC_NAME}.tar.gz echo "========== Installing chaincode on peer0.org2 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp -export CORE_PEER_ADDRESS=peer0.org2.example.com:9051 -export CORE_PEER_LOCALMSPID="Org2MSP" -export 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 -peer lifecycle chaincode install ${CC_NAME}.tar.gz - -echo "========== Installing chaincode on peer1.org2 ==========" -export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp -export CORE_PEER_ADDRESS=peer1.org2.example.com:10051 +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp +export CORE_PEER_ADDRESS=localhost:9051 export CORE_PEER_LOCALMSPID="Org2MSP" -export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt -peer lifecycle chaincode install ${CC_NAME}.tar.gz +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +peer lifecycle chaincode install bigdatacc.tar.gz diff --git a/high-throughput/scripts/many-updates-traditional.sh b/high-throughput/scripts/many-updates-traditional.sh index 921edc622f..c761e41f6c 100755 --- a/high-throughput/scripts/many-updates-traditional.sh +++ b/high-throughput/scripts/many-updates-traditional.sh @@ -4,7 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # +source scripts/setenv.sh + for (( i = 0; i < 1000; ++i )) do - peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["putstandard","'$1'","'$i'"]}' + peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["putstandard","'$1'","'$i'"]}' done diff --git a/high-throughput/scripts/many-updates.sh b/high-throughput/scripts/many-updates.sh index 13aaf0267f..ad522da515 100755 --- a/high-throughput/scripts/many-updates.sh +++ b/high-throughput/scripts/many-updates.sh @@ -4,7 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # +source scripts/setenv.sh + for (( i = 0; i < 1000; ++i )) do - peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["update","'$1'","'$2'","'$3'"]}' & + peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["update","'$1'","'$2'","'$3'"]}' done diff --git a/high-throughput/scripts/prune-invoke.sh b/high-throughput/scripts/prune-invoke.sh index 388f43649f..a02def684e 100755 --- a/high-throughput/scripts/prune-invoke.sh +++ b/high-throughput/scripts/prune-invoke.sh @@ -4,5 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["prune","'$1'"]}' +source scripts/setenv.sh +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["prune","'$1'"]}' diff --git a/high-throughput/scripts/setclienv.sh b/high-throughput/scripts/setclienv.sh deleted file mode 100644 index 6193f753f1..0000000000 --- a/high-throughput/scripts/setclienv.sh +++ /dev/null @@ -1,10 +0,0 @@ -# -# Copyright IBM Corp All Rights Reserved -# -# SPDX-License-Identifier: Apache-2.0 -# - -export CHANNEL_NAME=mychannel -export CC_NAME=bigdatacc -export TIMEOUT=10 -export DELAY=3 diff --git a/high-throughput/scripts/setenv.sh b/high-throughput/scripts/setenv.sh new file mode 100644 index 0000000000..c924f4fa63 --- /dev/null +++ b/high-throughput/scripts/setenv.sh @@ -0,0 +1,8 @@ + +export PATH=${PWD}/../bin:${PWD}:$PATH +export FABRIC_CFG_PATH=$PWD/../config/ +export CORE_PEER_TLS_ENABLED=true +export CORE_PEER_MSPCONFIGPATH=../test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +export CORE_PEER_ADDRESS=localhost:7051 +export CORE_PEER_LOCALMSPID="Org1MSP" +export CORE_PEER_TLS_ROOTCERT_FILE=../test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt diff --git a/high-throughput/scripts/update-invoke.sh b/high-throughput/scripts/update-invoke.sh index 14ec2dbe83..c49827dd19 100755 --- a/high-throughput/scripts/update-invoke.sh +++ b/high-throughput/scripts/update-invoke.sh @@ -3,4 +3,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n $CC_NAME -c '{"Args":["update","'$1'","'$2'","'$3'"]}' + +source scripts/setenv.sh + +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls $CORE_PEER_TLS_ENABLED --cafile ../test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n bigdatacc -c '{"Args":["update","'$1'","'$2'","'$3'"]}' diff --git a/high-throughput/startFabric.sh b/high-throughput/startFabric.sh new file mode 100755 index 0000000000..eb4dd8ef79 --- /dev/null +++ b/high-throughput/startFabric.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# Copyright IBM Corp All Rights Reserved +# +# SPDX-License-Identifier: Apache-2.0 +# +# Exit on first error +set -e + +# don't rewrite paths for Windows Git Bash users +export MSYS_NO_PATHCONV=1 +starttime=$(date +%s) +export TIMEOUT=10 +export DELAY=3 + +# launch network; create channel and join peer to channel +pushd ../test-network +./network.sh down + +echo "Bring up test network" +./network.sh up createChannel +popd + +#set enviroment varialbes +export PATH=${PWD}/../bin:${PWD}:$PATH +export FABRIC_CFG_PATH=$PWD/../config/ + +echo "Install high throughput chaincode on test network peers" +./scripts/install-chaincode.sh + +echo "Deploy high throughput chaincode to the channel" +./scripts/approve-commit-chaincode.sh + + +cat <