chore(release): v1.6.2 #784
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright IBM Corp. All Rights Reserved. | |
# | |
# SPDX-License-Identifier: CC-BY-4.0 | |
# This is a basic workflow to help you get started with Actions | |
name: Test Asset Transfer | |
# Controls when the workflow will run | |
on: | |
# Triggers the workflow on push or pull request events but only for the main branch | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
fabric-asset-transfer: | |
# if: ${{ false }} | |
# The type of runner that the job will run on | |
runs-on: ubuntu-latest | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/[email protected] | |
# - name: Set up JDK 8 | |
# uses: actions/setup-java@v2 | |
# with: | |
# java-version: '8' | |
# distribution: 'adopt' | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20.2' | |
- name: Use Node.js 14.x | |
uses: actions/setup-node@v2 | |
with: | |
node-version: 14.x | |
# CORDA NETWORK | |
# - name: Generate github.properties | |
# run: | | |
# echo "Using ${GITHUB_ACTOR} user." | |
# echo "username=${GITHUB_ACTOR}" >> github.properties | |
# echo "password=${{ secrets.GITHUB_TOKEN }}" >> github.properties | |
# echo "url=https://maven.pkg.github.com/${GITHUB_ACTOR}/weaver-dlt-interoperability" >> github.properties | |
# | |
# echo "Using ${GITHUB_ACTOR} user." | |
# echo "username=${GITHUB_ACTOR}" >> github.main.properties | |
# echo "password=${{ secrets.GITHUB_TOKEN }}" >> github.main.properties | |
# echo "url=https://maven.pkg.github.com/hyperledger-labs/weaver-dlt-interoperability" >> github.main.properties | |
# | |
# ./scripts/get-cordapps.sh || mv github.main.properties github.properties | |
# | |
# cat github.properties | |
# working-directory: tests/network-setups/corda | |
# | |
# - name: Start Corda Network | |
# run: | | |
# sed -i "/docker logs corda_partya_1 -f/"' s/^/#/' "scripts/start-nodes.sh" | |
# make start &> corda-net.out & | |
# working-directory: tests/network-setups/corda | |
# FABRIC NETWORK | |
- name: Start Fabric Network | |
run: make start-interop CHAINCODE_NAME=simpleassettransfer PROFILE='2-nodes' | |
working-directory: tests/network-setups/fabric/dev | |
# - name: Corda Network logs | |
# run: | | |
# cat tests/network-setups/corda/corda-net.out | |
# docker logs corda_partya_1 | |
# RELAY | |
- name: Edit Relay docker compose | |
run: make convert-compose-method2 | |
working-directory: core/relay | |
- name: Start Relay for network1 | |
run: make start-server COMPOSE_ARG='--env-file docker/testnet-envs/.env.n1' | |
working-directory: core/relay | |
- name: Start Relay for network2 | |
run: make start-server COMPOSE_ARG='--env-file docker/testnet-envs/.env.n2' | |
working-directory: core/relay | |
# - name: Start Relay for Corda_Network | |
# run: make start-server COMPOSE_ARG='--env-file docker/testnet-envs/.env.corda' | |
# working-directory: core/relay | |
# | |
# - name: Start Relay for Corda_Network2 | |
# run: make start-server COMPOSE_ARG='--env-file docker/testnet-envs/.env.corda2' | |
# working-directory: core/relay | |
# FABRIC DRIVER | |
- name: Setup Fabric Driver .env | |
run: | | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet-envs/.env.n1 | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet-envs/.env.n2 | |
working-directory: core/drivers/fabric-driver | |
- name: Start Fabric Driver for network1 | |
run: make deploy COMPOSE_ARG='--env-file docker-testnet-envs/.env.n1' NETWORK_NAME=$(grep NETWORK_NAME docker-testnet-envs/.env.n1 | cut -d '=' -f 2) | |
working-directory: core/drivers/fabric-driver | |
- name: Start Fabric Driver for network2 | |
run: make deploy COMPOSE_ARG='--env-file docker-testnet-envs/.env.n2' NETWORK_NAME=$(grep NETWORK_NAME docker-testnet-envs/.env.n2 | cut -d '=' -f 2) | |
working-directory: core/drivers/fabric-driver | |
# IIN AGENT | |
- name: Setup Fabric IIN Env | |
run: | | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet/envs/.env.n1.org1 | |
sed -i "s#^AUTO_SYNC=true#AUTO_SYNC=false#g" docker-testnet/envs/.env.n1.org1 | |
sed -i "s#^DNS_CONFIG_PATH=.*#DNS_CONFIG_PATH=./docker-testnet/configs/dnsconfig-2-nodes.json#g" docker-testnet/envs/.env.n1.org1 | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet/envs/.env.n1.org2 | |
sed -i "s#^AUTO_SYNC=true#AUTO_SYNC=false#g" docker-testnet/envs/.env.n1.org2 | |
sed -i "s#^DNS_CONFIG_PATH=.*#DNS_CONFIG_PATH=./docker-testnet/configs/dnsconfig-2-nodes.json#g" docker-testnet/envs/.env.n1.org2 | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet/envs/.env.n2.org1 | |
sed -i "s#^AUTO_SYNC=true#AUTO_SYNC=false#g" docker-testnet/envs/.env.n2.org1 | |
sed -i "s#^DNS_CONFIG_PATH=.*#DNS_CONFIG_PATH=./docker-testnet/configs/dnsconfig-2-nodes.json#g" docker-testnet/envs/.env.n2.org1 | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" docker-testnet/envs/.env.n2.org2 | |
sed -i "s#^AUTO_SYNC=true#AUTO_SYNC=false#g" docker-testnet/envs/.env.n2.org2 | |
sed -i "s#^DNS_CONFIG_PATH=.*#DNS_CONFIG_PATH=./docker-testnet/configs/dnsconfig-2-nodes.json#g" docker-testnet/envs/.env.n2.org2 | |
working-directory: core/identity-management/iin-agent | |
- name: Start Fabric IIN Agent for network1 | |
run: | | |
make deploy COMPOSE_ARG='--env-file docker-testnet/envs/.env.n1.org1' DLT_SPECIFIC_DIR=$(grep DLT_SPECIFIC_DIR docker-testnet/envs/.env.n1.org1 | cut -d '=' -f 2) | |
make deploy COMPOSE_ARG='--env-file docker-testnet/envs/.env.n1.org2' DLT_SPECIFIC_DIR=$(grep DLT_SPECIFIC_DIR docker-testnet/envs/.env.n1.org2 | cut -d '=' -f 2) | |
working-directory: core/identity-management/iin-agent | |
- name: Start Fabric IIN Agent for network2 | |
run: | | |
make deploy COMPOSE_ARG='--env-file docker-testnet/envs/.env.n2.org1' DLT_SPECIFIC_DIR=$(grep DLT_SPECIFIC_DIR docker-testnet/envs/.env.n2.org1 | cut -d '=' -f 2) | |
make deploy COMPOSE_ARG='--env-file docker-testnet/envs/.env.n2.org2' DLT_SPECIFIC_DIR=$(grep DLT_SPECIFIC_DIR docker-testnet/envs/.env.n2.org2 | cut -d '=' -f 2) | |
working-directory: core/identity-management/iin-agent | |
# CORDA DRIVER | |
# - name: Start Corda Driver | |
# run: make deploy COMPOSE_ARG='--env-file docker-testnet-envs/.env.corda' | |
# working-directory: core/drivers/corda-driver | |
# | |
# - name: Start Corda_Network2 Driver | |
# run: make deploy COMPOSE_ARG='--env-file docker-testnet-envs/.env.corda2' | |
# working-directory: core/drivers/corda-driver | |
# FABRIC CLI | |
- name: Setup Fabric CLI .npmrc | |
run: | | |
cp .npmrc.template .npmrc | |
sed -i "s/<personal-access-token>/${{ secrets.GITHUB_TOKEN }}/g" .npmrc | |
cat .npmrc | |
working-directory: samples/fabric/fabric-cli | |
- name: Build Fabric CLI | |
run: | | |
npm install --global yarn | |
make build | |
working-directory: samples/fabric/fabric-cli | |
# FABRIC CLI | |
- name: Setup Fabric CLI ENV | |
run: | | |
echo ${GITHUB_WORKSPACE} | |
cp .env.template .env | |
./bin/fabric-cli env set-file ./.env | |
./bin/fabric-cli env set MEMBER_CREDENTIAL_FOLDER ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/src/data/credentials_docker | |
./bin/fabric-cli env set CONFIG_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/config.json | |
./bin/fabric-cli env set DEFAULT_APPLICATION_CHAINCODE simpleassettransfer | |
./bin/fabric-cli env set REMOTE_CONFIG_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/remote-network-config.json | |
./bin/fabric-cli env set CHAINCODE_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/chaincode.json | |
cat .env | |
working-directory: samples/fabric/fabric-cli | |
- name: Setup Fabric CLI Config | |
run: | | |
echo ${GITHUB_WORKSPACE} | |
cp config.template.json config.json | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" config.json | |
./bin/fabric-cli config set network2 aclPolicyPrincipalType ca | |
./bin/fabric-cli config set network1 chaincode simpleassettransfer | |
./bin/fabric-cli config set network2 chaincode simpleassettransfer | |
cp chaincode.json.template chaincode.json | |
cp remote-network-config.json.template remote-network-config.json | |
sed -i "s#localhost:9080#relay-network1:9080#g" remote-network-config.json | |
sed -i "s#localhost:9081#relay-corda:9081#g" remote-network-config.json | |
sed -i "s#localhost:9082#relay-corda2:9082#g" remote-network-config.json | |
sed -i "s#localhost:9083#relay-network2:9083#g" remote-network-config.json | |
sed -i "s#localhost:10006#corda_partya_1:10003#g" remote-network-config.json | |
sed -i "s#localhost:30006#corda_network2_partya_1:10003#g" remote-network-config.json | |
working-directory: samples/fabric/fabric-cli | |
- name: Fabric CLI Init | |
run: | | |
./bin/fabric-cli configure create all --local-network=network1 | |
./bin/fabric-cli configure create all --local-network=network2 | |
./bin/fabric-cli configure network --local-network=network1 --num-orgs=2 | |
./bin/fabric-cli configure network --local-network=network2 --num-orgs=2 | |
./scripts/initAssetsForTransfer.sh | |
working-directory: samples/fabric/fabric-cli | |
- name: Fabric Sync Membership using IIN Agent | |
run: | | |
./bin/fabric-cli configure membership --local-network=network1 --target-network=network2 --iin-agent-endpoint=localhost:9500 | |
sleep 30 | |
docker logs iin-agent-Org1MSP-network1 | |
docker logs iin-agent-Org1MSP-network2 | |
./bin/fabric-cli configure membership --local-network=network2 --target-network=network1 --iin-agent-endpoint=localhost:9501 | |
sleep 30 | |
docker logs iin-agent-Org1MSP-network1 | |
docker logs iin-agent-Org1MSP-network2 | |
working-directory: samples/fabric/fabric-cli | |
# CORDA CLIENT | |
# - name: Corda CLI Setup | |
# run: | | |
# cp remote-network-config.json.template remote-network-config.json | |
# sed -i "s#localhost:9080#relay-network1:9080#g" remote-network-config.json | |
# sed -i "s#localhost:9081#relay-corda:9081#g" remote-network-config.json | |
# sed -i "s#localhost:9082#relay-corda2:9082#g" remote-network-config.json | |
# sed -i "s#localhost:9083#relay-network2:9083#g" remote-network-config.json | |
# sed -i "s#localhost:10006#corda_partya_1:10003#g" remote-network-config.json | |
# sed -i "s#localhost:30006#corda_network2_partya_1:10003#g" remote-network-config.json | |
# working-directory: samples/corda/corda-simple-application/clients/src/main/resources/config | |
# | |
# - name: Corda CLI Initialize Vault | |
# run: make initialise-vault-asset-transfer-docker | |
# working-directory: samples/corda/corda-simple-application | |
# - name: Data Transfer Corda Client Tests | |
# run: | | |
# COUNT=0 | |
# TOTAL=8 | |
# | |
# # CORDA-CORDA2 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 relay-corda2:9082/Corda_Network2/corda_network2_partya_1:10003#com.cordaSimpleApplication.flow.GetStateByKey:H 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=H, value=\[SimpleState(key=H, value=1" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state H 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=H, value=\[SimpleState(key=H, value=1" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA2-CORDA | |
# | |
# NETWORK_NAME=Corda_Network2 CORDA_PORT=30006 ./clients/build/install/clients/bin/clients request-state localhost:9082 relay-corda:9081/Corda_Network/corda_partya_1:10003#com.cordaSimpleApplication.flow.GetStateByKey:C 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=C, value=\[SimpleState(key=C, value=20" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# NETWORK_NAME=Corda_Network2 CORDA_PORT=30006 ./clients/build/install/clients/bin/clients get-state C 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=C, value=\[SimpleState(key=C, value=20" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA - FABRIC1 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 relay-network1:9080/network1/mychannel:simplestate:Read:a 1> tmp.out | |
# tail -n 1 tmp.out | grep "SimpleState(key=a, value=Arcturus" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state a 1> tmp.out | |
# tail -n 1 tmp.out | grep "SimpleState(key=a, value=Arcturus" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA - FABRIC2 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 relay-network2:9083/network2/mychannel:simplestate:Read:Arcturus 1> tmp.out | |
# tail -n 1 tmp.out | grep "SimpleState(key=Arcturus, value=17.671" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state Arcturus 1> tmp.out | |
# tail -n 1 tmp.out | grep "SimpleState(key=Arcturus, value=17.671" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # RESULT | |
# echo "Passed $COUNT/$TOTAL Tests." | |
# | |
# if [ $COUNT == $TOTAL ]; then | |
# exit 0 | |
# else | |
# exit 1 | |
# fi | |
# working-directory: samples/corda/corda-simple-application | |
# FABRIC CLI | |
- name: Asset Transfer Fabric CLI Non-Fungible Tests | |
run: | | |
COUNT=0 | |
TOTAL=8 | |
# FABRIC2 - FABRIC1 | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=3600 --type=bond --ref=a03 --data-file=src/data/assetsForTransfer.json &> tmp.out | |
tail -n 1 tmp.out | grep "Asset pledged with ID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
# FABRIC1 - FABRIC2 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a03 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ClaimRemoteAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer ReadAsset '["bond01","a03"]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Error: the asset a03 does not exist" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer ReadAsset '["bond01","a03"]' --local-network=network2 &> tmp.out | |
#tail -n 1 tmp.out | grep "Result from network query: {\"type\":\"bond01\",\"id\":\"a03\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | tr '\n' ' ' | grep "Result from network query: { \"type\": \"bond01\", \"id\": \"a03\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=20 --type=bond --ref=a04 --data-file=src/data/assetsForTransfer.json &> tmp.out | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
sleep 20 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a04 &> tmp.out | |
tail -n 1 tmp.out | grep "cannot claim asset with pledgeId $CID as the expiry time has elapsed" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer reclaim --source-network=network1 --user=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a04 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ReclaimAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer ReadAsset '["bond01","a04"]' --local-network=network1 &> tmp.out | |
#tail -n 1 tmp.out | grep "Result from network query: {\"type\":\"bond01\",\"id\":\"a04\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | tr '\n' ' ' | grep "Result from network query: { \"type\": \"bond01\", \"id\": \"a04\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer ReadAsset '["bond01","a04"]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Error: the asset a04 does not exist" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
# RESULT | |
echo "Passed $COUNT/$TOTAL Tests." | |
if [ $COUNT == $TOTAL ]; then | |
exit 0 | |
else | |
exit 1 | |
fi | |
working-directory: samples/fabric/fabric-cli | |
# FABRIC CLI | |
- name: Asset Transfer Fabric CLI Fungible Tests | |
run: | | |
COUNT=0 | |
TOTAL=8 | |
# FABRIC2 - FABRIC1 | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=3600 --type=token --units=50 --owner=alice --data-file=src/data/tokensForTransfer.json &> tmp.out | |
tail -n 1 tmp.out | grep "Asset pledged with ID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
# FABRIC1 - FABRIC2 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=token.fabric --pledge-id=$CID --param=token1:50 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ClaimRemoteTokenAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer GetMyWallet '[]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"9950\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer GetMyWallet '[]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"50\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=20 --type=token --units=100 --owner=alice --data-file=src/data/tokensForTransfer.json &> tmp.out | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
sleep 20 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=token.fabric --pledge-id=$CID --param=token1:100 &> tmp.out | |
tail -n 1 tmp.out | grep "cannot claim asset with pledgeId $CID as the expiry time has elapsed" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer reclaim --source-network=network1 --user=alice --type=token.fabric --pledge-id=$CID --param=token1:100 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ReclaimTokenAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer GetMyWallet '[]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"9950\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer GetMyWallet '[]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"50\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
# RESULT | |
echo "Passed $COUNT/$TOTAL Tests." | |
if [ $COUNT == $TOTAL ]; then | |
exit 0 | |
else | |
exit 1 | |
fi | |
working-directory: samples/fabric/fabric-cli | |
fabric-asset-transfer-local: | |
# if: ${{ false }} | |
# The type of runner that the job will run on | |
runs-on: ubuntu-latest | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/[email protected] | |
# - name: Set up JDK 8 | |
# uses: actions/setup-java@v2 | |
# with: | |
# java-version: '8' | |
# distribution: 'adopt' | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20.2' | |
- name: Use Node.js 16.x | |
uses: actions/setup-node@v2 | |
with: | |
node-version: 16.x | |
- name: Install RUST Toolchain minimal stable with clippy and rustfmt | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
components: rustfmt, clippy | |
- name: Get Latest Relay Dependencies | |
run: | | |
make protos-local | |
cargo update -p nom | |
cargo update -p lexical-core | |
working-directory: core/relay | |
- name: Use Protoc 3.15 | |
run: | | |
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.6/protoc-3.15.6-linux-x86_64.zip | |
unzip protoc-3.15.6-linux-x86_64.zip -d protoc | |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest | |
go install google.golang.org/grpc/cmd/[email protected] | |
# PROTOS | |
- name: Build GO Protos | |
run: | | |
export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" | |
make build | |
working-directory: common/protos-go | |
# PROTOS | |
- name: Build JS Protos | |
run: | | |
export PATH="$PATH:${GITHUB_WORKSPACE}/protoc/bin" | |
make build | |
working-directory: common/protos-js | |
# - name: Build Java Protos | |
# run: make build | |
# working-directory: common/protos-java-kt | |
# Build Dependencies | |
# - name: Build Corda Interop App | |
# run: make build-local | |
# working-directory: core/network/corda-interop-app | |
# | |
# - name: Build Corda Interop SDK | |
# run: make build | |
# working-directory: sdks/corda | |
# | |
# - name: Build Corda SimpleApplication | |
# run: make build-local | |
# working-directory: samples/corda/corda-simple-application | |
- name: Build Fabric Interop SDK | |
run: make build-local | |
working-directory: sdks/fabric/interoperation-node-sdk | |
- name: Build Fabric CLI | |
run: make build-local | |
working-directory: samples/fabric/fabric-cli | |
- name: Build Relay | |
run: make | |
working-directory: core/relay | |
- name: Build Fabric Driver | |
run: make build-local | |
working-directory: core/drivers/fabric-driver | |
- name: Build IIN Agent | |
run: make build-local | |
working-directory: core/identity-management/iin-agent | |
# - name: Build Corda Driver | |
# run: make build-local | |
# working-directory: core/drivers/corda-driver | |
# | |
# # CORDA NETWORK | |
# - name: Start Corda Network | |
# run: | | |
# sed -i "/docker logs corda_partya_1 -f/"' s/^/#/' "scripts/start-nodes.sh" | |
# make start-local &> corda-net.out & | |
# working-directory: tests/network-setups/corda | |
# FABRIC NETWORK | |
- name: Start Fabric Network | |
run: make start-interop-local CHAINCODE_NAME=simpleassettransfer | |
working-directory: tests/network-setups/fabric/dev | |
# - name: Corda Network logs | |
# run: | | |
# cat tests/network-setups/corda/corda-net.out | |
# docker logs corda_partya_1 | |
# RELAY | |
- name: Start Relay for network1 | |
run: RELAY_CONFIG=config/Fabric_Relay.toml cargo run --bin server &> relay-n1.out & | |
working-directory: core/relay | |
- name: Start Relay for network2 | |
run: RELAY_CONFIG=config/Fabric_Relay2.toml cargo run --bin server &> relay-n2.out & | |
working-directory: core/relay | |
# - name: Start Relay for Corda_Network | |
# run: RELAY_CONFIG=config/Corda_Relay.toml cargo run --bin server &> relay-corda.out & | |
# working-directory: core/relay | |
# | |
# - name: Start Relay for Corda_Network2 | |
# run: RELAY_CONFIG=config/Corda_Relay2.toml cargo run --bin server &> relay-corda2.out & | |
# working-directory: core/relay | |
# FABRIC DRIVER | |
- name: Setup Fabric Driver .env | |
run: | | |
cp .env.template .env | |
CCP_PATH=${GITHUB_WORKSPACE}/tests/network-setups/fabric/shared/network1/peerOrganizations/org1.network1.com/connection-org1.json | |
sed -i "s#path_to_connection_profile#${CCP_PATH}#g" .env | |
working-directory: core/drivers/fabric-driver | |
- name: Start Fabric Driver for network1 | |
run: npm run dev &> fdriver-n1.out & | |
working-directory: core/drivers/fabric-driver | |
- name: Start Fabric Driver for network2 | |
run: CONNECTION_PROFILE=${GITHUB_WORKSPACE}/tests/network-setups/fabric/shared/network2/peerOrganizations/org1.network2.com/connection-org1.json NETWORK_NAME=network2 RELAY_ENDPOINT=localhost:9083 DRIVER_ENDPOINT=localhost:9095 npm run dev &> fdriver-n2.out & | |
working-directory: core/drivers/fabric-driver | |
# IIN AGENT | |
- name: Setup Fabric IIN Config | |
run: | | |
# FABRIC CONFIG | |
cp src/fabric-ledger/config.json.template src/fabric-ledger/config-n1.json | |
CCP_PATH=${GITHUB_WORKSPACE}/tests/network-setups/fabric/shared/network1/peerOrganizations/org1.network1.com/connection-org1.json | |
sed -i "s#<path-to-connection-profile>#${CCP_PATH}#g" src/fabric-ledger/config-n1.json | |
cat src/fabric-ledger/config-n1.json | |
cp src/fabric-ledger/config.json.template src/fabric-ledger/config-n2.json | |
CCP_PATH=${GITHUB_WORKSPACE}/tests/network-setups/fabric/shared/network2/peerOrganizations/org1.network2.com/connection-org1.json | |
sed -i "s#<path-to-connection-profile>#${CCP_PATH}#g" src/fabric-ledger/config-n2.json | |
cat src/fabric-ledger/config-n2.json | |
# DNS CONFIG | |
sed -i "s#iin-agent-Org1MSP-network1#localhost#g" docker-testnet/configs/dnsconfig.json | |
sed -i "s#iin-agent-Org1MSP-network2#localhost#g" docker-testnet/configs/dnsconfig.json | |
cat docker-testnet/configs/dnsconfig.json | |
working-directory: core/identity-management/iin-agent | |
- name: Setup Fabric IIN Env | |
run: | | |
cp .env.template .env | |
sed -i "s#<name-of-iin-agent/org-name>#Org1MSP#g" .env | |
sed -i "s#^DLT_TYPE=.*#DLT_TYPE=fabric#g" .env | |
sed -i "s#<weaver-contract-name>#interop#g" .env | |
sed -i "s#^DNS_CONFIG_PATH=#DNS_CONFIG_PATH=./docker-testnet/configs/dnsconfig.json#g" .env | |
sed -i "s#^SECURITY_DOMAIN_CONFIG_PATH=#SECURITY_DOMAIN_CONFIG_PATH=./docker-testnet/configs/security-domain-config.json#g" .env | |
sed -i "s#^CONFIG_PATH=#CONFIG_PATH=./src/fabric-ledger/config-n1.json#g" .env | |
sed -i "s#^AUTO_SYNC=#AUTO_SYNC=false#g" .env | |
cat .env | |
working-directory: core/identity-management/iin-agent | |
- name: Start Fabric IIN Agent for network1 | |
run: npm run dev &> iinagent-n1.out & | |
working-directory: core/identity-management/iin-agent | |
- name: Start Fabric IIN Agent for network2 | |
run: IIN_AGENT_ENDPOINT=localhost:9501 SECURITY_DOMAIN=network2 CONFIG_PATH=./src/fabric-ledger/config-n2.json npm run dev &> iinagent-n2.out & | |
working-directory: core/identity-management/iin-agent | |
# # CORDA DRIVER | |
# - name: Start Corda_Network Driver | |
# run: ./build/install/corda-driver/bin/corda-driver &> corda-driver.out & | |
# working-directory: core/drivers/corda-driver | |
# | |
# - name: Start Corda_Network2 Driver | |
# run: DRIVER_PORT=9098 ./build/install/corda-driver/bin/corda-driver &> corda2-driver.out & | |
# working-directory: core/drivers/corda-driver | |
# FABRIC CLI | |
- name: Setup Fabric CLI ENV | |
run: | | |
echo ${GITHUB_WORKSPACE} | |
cp .env.template .env | |
./bin/fabric-cli env set-file ./.env | |
./bin/fabric-cli env set MEMBER_CREDENTIAL_FOLDER ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/src/data/credentials | |
./bin/fabric-cli env set CONFIG_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/config.json | |
./bin/fabric-cli env set DEFAULT_APPLICATION_CHAINCODE simpleassettransfer | |
./bin/fabric-cli env set REMOTE_CONFIG_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/remote-network-config.json | |
./bin/fabric-cli env set CHAINCODE_PATH ${GITHUB_WORKSPACE}/samples/fabric/fabric-cli/chaincode.json | |
cat .env | |
working-directory: samples/fabric/fabric-cli | |
- name: Setup Fabric CLI Config | |
run: | | |
echo ${GITHUB_WORKSPACE} | |
cp config.template.json config.json | |
sed -i "s#<PATH-TO-WEAVER>#${GITHUB_WORKSPACE}#g" config.json | |
###### Change line number in following commands if config is modified ##### | |
./bin/fabric-cli config set network2 aclPolicyPrincipalType ca | |
./bin/fabric-cli config set network1 chaincode simpleassettransfer | |
./bin/fabric-cli config set network2 chaincode simpleassettransfer | |
cp chaincode.json.template chaincode.json | |
cp remote-network-config.json.template remote-network-config.json | |
working-directory: samples/fabric/fabric-cli | |
- name: Fabric CLI Init | |
run: | | |
./bin/fabric-cli configure create all --local-network=network1 | |
./bin/fabric-cli configure create all --local-network=network2 | |
./bin/fabric-cli configure network --local-network=network1 | |
./bin/fabric-cli configure network --local-network=network2 | |
./scripts/initAssetsForTransfer.sh | |
working-directory: samples/fabric/fabric-cli | |
- name: Fabric Sync Membership using IIN Agent | |
run: | | |
./bin/fabric-cli configure membership --local-network=network1 --target-network=network2 --iin-agent-endpoint=localhost:9500 | |
sleep 10 | |
tail -10 ../../../core/identity-management/iin-agent/iinagent-n1.out | |
./bin/fabric-cli configure membership --local-network=network2 --target-network=network1 --iin-agent-endpoint=localhost:9501 | |
sleep 10 | |
tail -10 ../../../core/identity-management/iin-agent/iinagent-n2.out | |
working-directory: samples/fabric/fabric-cli | |
# # CORDA CLIENT | |
# - name: Corda CLI Initialize Vault | |
# run: make initialise-vault | |
# working-directory: samples/corda/corda-simple-application | |
# | |
# - name: Data Transfer Corda Client Tests | |
# run: | | |
# COUNT=0 | |
# TOTAL=8 | |
# | |
# # CORDA-CORDA2 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 localhost:9082/Corda_Network2/localhost:30006#com.cordaSimpleApplication.flow.GetStateByKey:H 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=H, value=\[SimpleState(key=H, value=1" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state H 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=H, value=\[SimpleState(key=H, value=1" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA2-CORDA | |
# | |
# NETWORK_NAME=Corda_Network2 CORDA_PORT=30006 ./clients/build/install/clients/bin/clients request-state localhost:9082 localhost:9081/Corda_Network/localhost:10006#com.cordaSimpleApplication.flow.GetStateByKey:C 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=C, value=\[SimpleState(key=C, value=20" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# NETWORK_NAME=Corda_Network2 CORDA_PORT=30006 ./clients/build/install/clients/bin/clients get-state C 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=C, value=\[SimpleState(key=C, value=20" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA - FABRIC1 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 localhost:9080/network1/mychannel:simplestate:Read:a 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=a, value=Arcturus" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state a 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=a, value=Arcturus" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # CORDA - FABRIC2 | |
# ./clients/build/install/clients/bin/clients request-state localhost:9081 localhost:9083/network2/mychannel:simplestate:Read:Arcturus 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=Arcturus, value=17.671" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# ./clients/build/install/clients/bin/clients get-state Arcturus 1> tmp.out | |
# cat tmp.out | grep "SimpleState(key=Arcturus, value=17.671" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
# cat tmp.out | |
# | |
# # RESULT | |
# echo "Passed $COUNT/$TOTAL Tests." | |
# | |
# if [ $COUNT == $TOTAL ]; then | |
# exit 0 | |
# else | |
# exit 1 | |
# fi | |
# working-directory: samples/corda/corda-simple-application | |
# FABRIC CLI | |
- name: Asset Transfer Fabric CLI Non-Fungible Tests | |
run: | | |
COUNT=0 | |
TOTAL=8 | |
# FABRIC2 - FABRIC1 | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=3600 --type=bond --ref=a03 --data-file=src/data/assetsForTransfer.json &> tmp.out | |
tail -n 1 tmp.out | grep "Asset pledged with ID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
# FABRIC1 - FABRIC2 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a03 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ClaimRemoteAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer ReadAsset '["bond01","a03"]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Error: the asset a03 does not exist" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer ReadAsset '["bond01","a03"]' --local-network=network2 &> tmp.out | |
#tail -n 1 tmp.out | grep "Result from network query: {\"type\":\"bond01\",\"id\":\"a03\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | tr '\n' ' ' | grep "Result from network query: { \"type\": \"bond01\", \"id\": \"a03\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=20 --type=bond --ref=a04 --data-file=src/data/assetsForTransfer.json &> tmp.out | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
sleep 20 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a04 &> tmp.out | |
tail -n 1 tmp.out | grep "cannot claim asset with pledgeId $CID as the expiry time has elapsed" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer reclaim --source-network=network1 --user=alice --type=bond.fabric --pledge-id=$CID --param=bond01:a04 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ReclaimAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer ReadAsset '["bond01","a04"]' --local-network=network1 &> tmp.out | |
#tail -n 1 tmp.out | grep "Result from network query: {\"type\":\"bond01\",\"id\":\"a04\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | tr '\n' ' ' | grep "Result from network query: { \"type\": \"bond01\", \"id\": \"a04\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer ReadAsset '["bond01","a04"]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Error: the asset a04 does not exist" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
# RESULT | |
echo "Passed $COUNT/$TOTAL Tests." | |
if [ $COUNT == $TOTAL ]; then | |
exit 0 | |
else | |
exit 1 | |
fi | |
working-directory: samples/fabric/fabric-cli | |
# FABRIC CLI | |
- name: Asset Transfer Fabric CLI Fungible Tests | |
run: | | |
COUNT=0 | |
TOTAL=8 | |
# FABRIC2 - FABRIC1 | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=3600 --type=token --units=50 --owner=alice --data-file=src/data/tokensForTransfer.json &> tmp.out | |
tail -n 1 tmp.out | grep "Asset pledged with ID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
# FABRIC1 - FABRIC2 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=token.fabric --pledge-id=$CID --param=token1:50 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ClaimRemoteTokenAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer GetMyWallet '[]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"9950\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer GetMyWallet '[]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"50\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer pledge --source-network=network1 --dest-network=network2 --recipient=bob --expiry-secs=20 --type=token --units=100 --owner=alice --data-file=src/data/tokensForTransfer.json &> tmp.out | |
cat tmp.out | |
CID=$(cat tmp.out | grep "Asset pledged with ID " | sed -e 's/Asset pledged with ID //') | |
sleep 20 | |
./bin/fabric-cli asset transfer claim --source-network=network1 --dest-network=network2 --user=bob --owner=alice --type=token.fabric --pledge-id=$CID --param=token1:100 &> tmp.out | |
tail -n 1 tmp.out | grep "cannot claim asset with pledgeId $CID as the expiry time has elapsed" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli asset transfer reclaim --source-network=network1 --user=alice --type=token.fabric --pledge-id=$CID --param=token1:100 &> tmp.out | |
tail -n 1 tmp.out | grep "Called Function ReclaimTokenAsset. With Args: $CID" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=alice mychannel simpleassettransfer GetMyWallet '[]' --local-network=network1 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"9950\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
./bin/fabric-cli chaincode query --user=bob mychannel simpleassettransfer GetMyWallet '[]' --local-network=network2 &> tmp.out | |
tail -n 2 tmp.out | grep "Result from network query: token1=\"50\"" && COUNT=$(( COUNT + 1 )) && echo "PASS" | |
cat tmp.out | |
# RESULT | |
echo "Passed $COUNT/$TOTAL Tests." | |
if [ $COUNT == $TOTAL ]; then | |
exit 0 | |
else | |
exit 1 | |
fi | |
working-directory: samples/fabric/fabric-cli |