forked from hyperledger/fabric-private-chaincode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeployment_test.sh
executable file
·139 lines (101 loc) · 6.41 KB
/
deployment_test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
# Copyright 2020 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
# for the post-test script callout we want all variables expoerted as env-variables ...
set -a
SCRIPTDIR="$(dirname $(readlink --canonicalize ${BASH_SOURCE}))"
FPC_PATH="${SCRIPTDIR}/.."
FABRIC_SCRIPTDIR="${FPC_PATH}/fabric/bin/"
: ${FABRIC_CFG_PATH:="${SCRIPTDIR}/config"}
. ${FABRIC_SCRIPTDIR}/lib/common_utils.sh
. ${FABRIC_SCRIPTDIR}/lib/common_ledger.sh
CC_EP="OR('SampleOrg.member')" # note that we use .member as NodeOUs is disabled with the crypto material used in the integration tests.
NUM_FAILURES=0
NUM_TESTS=0
run_test() {
# install examples/auction
CC_PATH=${FPC_PATH}/examples/auction/_build/lib/
CC_VER="$(cat ${CC_PATH}/mrenclave)"
CC_SEQ="1"
PKG=/tmp/auction_test.tar.gz
try ${PEER_CMD} lifecycle chaincode package --lang fpc-c --label auction_test --path ${CC_PATH} ${PKG}
try ${PEER_CMD} lifecycle chaincode install ${PKG}
PKG_ID=$(${PEER_CMD} lifecycle chaincode queryinstalled | awk "/Package ID: auction_test/{print}" | sed -n 's/^Package ID: //; s/, Label:.*$//;p')
try ${PEER_CMD} lifecycle chaincode approveformyorg -o ${ORDERER_ADDR} -C ${CHAN_ID} --package-id ${PKG_ID} --name auction_test --version ${CC_VER} --sequence ${CC_SEQ} --signature-policy ${CC_EP}
try ${PEER_CMD} lifecycle chaincode checkcommitreadiness -C ${CHAN_ID} --name auction_test --version ${CC_VER} --sequence ${CC_SEQ} --signature-policy ${CC_EP}
try ${PEER_CMD} lifecycle chaincode commit -o ${ORDERER_ADDR} -C ${CHAN_ID} --name auction_test --version ${CC_VER} --sequence ${CC_SEQ} --signature-policy ${CC_EP}
try ${PEER_CMD} lifecycle chaincode initEnclave -o ${ORDERER_ADDR} --peerAddresses "localhost:7051" --name auction_test
# install something non-fpc
CC_PATH="github.com/hyperledger/fabric-samples/chaincode/marbles02/go"
CC_VER="0"
CC_SEQ="1"
PKG=/tmp/marbles02.tar.gz
try ${PEER_CMD} lifecycle chaincode package --lang golang --label marbles02 --path ${CC_PATH} ${PKG}
try ${PEER_CMD} lifecycle chaincode install ${PKG}
PKG_ID=$(${PEER_CMD} lifecycle chaincode queryinstalled | awk "/Package ID: marbles02/{print}" | sed -n 's/^Package ID: //; s/, Label:.*$//;p')
try ${PEER_CMD} lifecycle chaincode approveformyorg -o ${ORDERER_ADDR} -C ${CHAN_ID} --package-id ${PKG_ID} --name marbles02 --version ${CC_VER} --sequence ${CC_SEQ}
try ${PEER_CMD} lifecycle chaincode checkcommitreadiness -C ${CHAN_ID} --name marbles02 --version ${CC_VER} --sequence ${CC_SEQ}
try ${PEER_CMD} lifecycle chaincode commit -o ${ORDERER_ADDR} -C ${CHAN_ID} --name marbles02 --version ${CC_VER} --sequence ${CC_SEQ}
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n auction_test -c '{"Args":["init", "MyAuctionHouse"]}' --waitForEvent
check_result "OK"
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n auction_test -c '{"Args":["create", "MyAuction"]}' --waitForEvent
check_result "OK"
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n marbles02 -c '{"Args":["initMarble","marble1","blue","35","tom"]}' --waitForEvent
# install examples/echo
CC_PATH=${FPC_PATH}/examples/echo/_build/lib/
CC_VER="$(cat ${CC_PATH}/mrenclave)"
CC_SEQ="1"
PKG=/tmp/echo_test.tar.gz
try ${PEER_CMD} lifecycle chaincode package --lang fpc-c --label echo_test --path ${FPC_PATH}/examples/echo/_build/lib ${PKG}
try ${PEER_CMD} lifecycle chaincode install ${PKG}
PKG_ID=$(${PEER_CMD} lifecycle chaincode queryinstalled | awk "/Package ID: echo_test/{print}" | sed -n 's/^Package ID: //; s/, Label:.*$//;p')
# first call negated as it fails due to specification of validation plugin
try_fail ${PEER_CMD} lifecycle chaincode approveformyorg -o ${ORDERER_ADDR} -C ${CHAN_ID} --package-id ${PKG_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ} -E mock-escc -V fpc-vscc
try ${PEER_CMD} lifecycle chaincode approveformyorg -o ${ORDERER_ADDR} -C ${CHAN_ID} --package-id ${PKG_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ}
# first call negated as it fails due to specification of validation plugin
try_fail ${PEER_CMD} lifecycle chaincode checkcommitreadiness -C ${CHAN_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ} -E mock-escc -V fpc-vscc
try ${PEER_CMD} lifecycle chaincode checkcommitreadiness -C ${CHAN_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ}
# first call negated as it fails due to specification of validation plugin
try_fail ${PEER_CMD} lifecycle chaincode commit -o ${ORDERER_ADDR} -C ${CHAN_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ} -E mock-escc -V fpc-vscc
try ${PEER_CMD} lifecycle chaincode commit -o ${ORDERER_ADDR} -C ${CHAN_ID} --name echo_test --version ${CC_VER} --sequence ${CC_SEQ}
#first call negated as it fails
try_fail ${PEER_CMD} lifecycle chaincode initEnclave -o ${ORDERER_ADDR} --peerAddresses "localhost:7051" --name wrong-cc-id
try ${PEER_CMD} lifecycle chaincode initEnclave -o ${ORDERER_ADDR} --peerAddresses "localhost:7051" --name echo_test
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n echo_test -c '{"Args": ["moin"]}' --waitForEvent
check_result "moin"
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n auction_test -c '{"Args":["submit", "MyAuction", "JohnnyCash0", "0"]}' --waitForEvent
check_result "OK"
try ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n marbles02 -c '{"Args":["readMarble","marble1"]}' --waitForEvent
try_out_r ${PEER_CMD} chaincode invoke -o ${ORDERER_ADDR} -C ${CHAN_ID} -n echo_test -c '{"Args": ["bonjour"]}' --waitForEvent
check_result "bonjour"
}
# 1. prepare
para
say "Preparing Test with mixed concurrent chaincodes, FPC and non-FPC ..."
# - clean up relevant docker images
docker_clean ${ERCC_ID}
docker_clean example02
trap ledger_shutdown EXIT
para
say "Run test"
say "- setup ledger"
ledger_init
say "- this test"
run_test
# if we pass an argument it is supposed to be a sourceable script:
# we use that to extract blocks for a scenario for the ledger unit-test
if [ "$1" != "" ]; then
say "Running post-test script '$@'"
"$@"
fi
say "- shutdown ledger"
ledger_shutdown
para
if [[ "$NUM_FAILURES" == 0 ]]; then
yell "Deployement test PASSED"
else
yell "Deployement test had ${NUM_FAILURES} failures out of ${NUM_TESTS} tests"
exit 1
fi
exit 0