Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit 562ea23

Browse files
committed
[FAB-6915] Fix chaincode startup issue in tests
This issue was caused by dangling chaincode images created with a different version of ccenv. This patch cleans up chaincode images and cleans up the docker-compose fixtures. Change-Id: I5caadf0bba6ba2bf120485030efef3098890b0b1 Signed-off-by: Troy Ronda <troy@troyronda.com>
1 parent 2443ac7 commit 562ea23

File tree

6 files changed

+138
-37
lines changed

6 files changed

+138
-37
lines changed

Makefile

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,13 @@ THIRDPARTY_FABRIC_CA_COMMIT ?= v1.1.0-preview
5151
THIRDPARTY_FABRIC_BRANCH ?= master
5252
THIRDPARTY_FABRIC_COMMIT ?= v1.1.0-preview
5353

54+
# Force removal of images in cleanup
55+
FIXTURE_DOCKER_REMOVE_FORCE ?= false
56+
5457
# Local variables used by makefile
55-
PACKAGE_NAME := github.com/hyperledger/fabric-sdk-go
56-
ARCH := $(shell uname -m)
58+
PACKAGE_NAME := github.com/hyperledger/fabric-sdk-go
59+
ARCH := $(shell uname -m)
60+
FIXTURE_PROJECT_NAME := fabsdkgo
5761

5862
# The version of dep that will be installed by depend-install (or in the CI)
5963
GO_DEP_COMMIT := v0.3.1
@@ -77,6 +81,8 @@ export GO_LDFLAGS
7781
export GO_DEP_COMMIT
7882
export GO_TAGS
7983
export GO_TESTFLAGS
84+
export DOCKER_CMD
85+
export DOCKER_COMPOSE_CMD
8086

8187
all: checks unit-test integration-test
8288

@@ -148,8 +154,7 @@ populate-clean:
148154
rm -Rf vendor
149155

150156
clean:
151-
$(GO_CMD) clean
152-
rm -Rf /tmp/enroll_user /tmp/msp /tmp/keyvaluestore /tmp/hfc-kvs
153-
rm -f integration-report.xml report.xml
154-
rm -f test/fixtures/tls/fabricca/certs/server/ca.org*.example.com-cert.pem
155-
cd test/fixtures && $(DOCKER_COMPOSE_CMD) -f docker-compose.yaml -f docker-compose-nopkcs11-test.yaml -f docker-compose-pkcs11-test.yaml down
157+
-$(GO_CMD) clean
158+
-rm -Rf /tmp/enroll_user /tmp/msp /tmp/keyvaluestore /tmp/hfc-kvs
159+
-rm -f integration-report.xml report.xml
160+
-FIXTURE_PROJECT_NAME=$(FIXTURE_PROJECT_NAME) DOCKER_REMOVE_FORCE=$(FIXTURE_DOCKER_REMOVE_FORCE) test/scripts/clean_integration.sh

test/fixtures/.env

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,21 @@
1111
# Default architecture
1212
ARCH=x86_64
1313

14+
CORE_PEER_NETWORKID=fabsdkgo
15+
COMPOSE_PROJECT_NAME=fabsdkgo
16+
1417
FABRIC_CA_FIXTURE_TAG=1.0.3
1518
FABRIC_ORDERER_FIXTURE_TAG=1.0.3
1619
FABRIC_PEER_FIXTURE_TAG=1.0.3
1720
FABRIC_COUCHDB_FIXTURE_TAG=1.0.3
1821
FABRIC_BUILDER_FIXTURE_TAG=1.0.3
1922
FABRIC_BASEOS_FIXTURE_TAG=0.4.2
23+
FABRIC_BASEIMAGE_FIXTURE_TAG=0.4.2
2024

2125
FABRIC_CA_FIXTURE_IMAGE=hyperledger/fabric-ca
2226
FABRIC_ORDERER_FIXTURE_IMAGE=hyperledger/fabric-orderer
2327
FABRIC_PEER_FIXTURE_IMAGE=hyperledger/fabric-peer
2428
FABRIC_COUCHDB_FIXTURE_IMAGE=hyperledger/fabric-couchdb
2529
FABRIC_BUILDER_FIXTURE_IMAGE=hyperledger/fabric-ccenv
26-
FABRIC_BASEOS_FIXTURE_IMAGE=hyperledger/fabric-baseimage
30+
FABRIC_BASEOS_FIXTURE_IMAGE=hyperledger/fabric-baseos
31+
FABRIC_BASEIMAGE_FIXTURE_IMAGE=hyperledger/fabric-baseimage

test/fixtures/docker-compose-nopkcs11-test.yaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@ version: '2'
77

88
services:
99

10-
fabric-sdk-integration-tests:
11-
container_name: fabric-sdk-integration-test
12-
image: ${FABRIC_BASEOS_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BASEOS_FIXTURE_TAG}
10+
integration-tests:
11+
image: ${FABRIC_BASEIMAGE_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BASEIMAGE_FIXTURE_TAG}
1312
environment:
1413
- GO_TAGS
1514
- GO_TESTFLAGS
1615
volumes:
1716
- ../../:/opt/gopath/src/github.com/hyperledger/fabric-sdk-go
1817
command: /opt/gopath/src/github.com/hyperledger/fabric-sdk-go/test/scripts/integration.sh
1918
depends_on:
20-
- orderer.example.com
19+
- org1ca1
20+
- org2ca1
21+
- org1peer1
22+
- org2peer1
23+
- orderer1
2124
- builder

test/fixtures/docker-compose-pkcs11-test.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ version: '2'
77

88
services:
99

10-
fabric-sdk-pkcs11-integration-tests:
11-
container_name: fabric-sdk-pkcs11-integration-test
10+
pkcs11-integration-tests:
1211
image: softhsm2-image
1312
environment:
1413
- FABRIC_SDK_CLIENT_BCCSP_SECURITY_DEFAULT_PROVIDER=PKCS11
@@ -18,5 +17,9 @@ services:
1817
- ../../:/opt/gopath/src/github.com/hyperledger/fabric-sdk-go
1918
command: /opt/gopath/src/github.com/hyperledger/fabric-sdk-go/test/scripts/integration.sh
2019
depends_on:
21-
- orderer.example.com
20+
- org1ca1
21+
- org2ca1
22+
- org1peer1
23+
- org2peer1
24+
- orderer1
2225
- builder

test/fixtures/docker-compose.yaml

Lines changed: 67 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
version: '2'
77

88
services:
9-
ca0:
9+
org1ca1:
1010
image: ${FABRIC_CA_FIXTURE_IMAGE}:${ARCH}-${FABRIC_CA_FIXTURE_TAG}
1111
environment:
1212
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
@@ -25,9 +25,12 @@ services:
2525
volumes:
2626
- ./channel/crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
2727
- ./tls/fabricca/certs/server:/etc/hyperledger/fabric-ca-server-config
28-
container_name: ca_peerOrg1
28+
networks:
29+
default:
30+
aliases:
31+
- ca_peerOrg1
2932

30-
ca1:
33+
org2ca1:
3134
image: ${FABRIC_CA_FIXTURE_IMAGE}:${ARCH}-${FABRIC_CA_FIXTURE_TAG}
3235
environment:
3336
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
@@ -46,10 +49,12 @@ services:
4649
volumes:
4750
- ./channel/crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
4851
- ./tls/fabricca/certs/server:/etc/hyperledger/fabric-ca-server-config
49-
container_name: ca_peerOrg2
52+
networks:
53+
default:
54+
aliases:
55+
- ca_peerOrg2
5056

51-
orderer.example.com:
52-
container_name: orderer.example.com
57+
orderer1:
5358
image: ${FABRIC_ORDERER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_ORDERER_FIXTURE_TAG}
5459
environment:
5560
- ORDERER_GENERAL_LOGLEVEL=debug
@@ -73,79 +78,119 @@ services:
7378
- ./channel:/etc/hyperledger/configtx
7479
- ./channel/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/etc/hyperledger/msp/orderer
7580
- ./channel/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls:/etc/hyperledger/tls/orderer
81+
networks:
82+
default:
83+
aliases:
84+
- orderer.example.com
7685

77-
peer0.org1.example.com:
78-
container_name: peer0.org1.example.com
86+
org1peer1:
7987
image: ${FABRIC_PEER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_PEER_FIXTURE_TAG}
8088
environment:
8189
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
8290
- CORE_PEER_ID=peer0.org1.example.com
8391
- CORE_LOGGING_PEER=debug
92+
- CORE_CHAINCODE_STARTUPTIMEOUT=30s
93+
- CORE_CHAINCODE_LOGGING_SHIM=debug
94+
- CORE_CHAINCODE_LOGGING_LEVEL=debug
95+
- CORE_CHAINCODE_BUILDER=${FABRIC_BUILDER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BUILDER_FIXTURE_TAG}
96+
- CORE_CHAINCODE_GOLANG_RUNTIME=${FABRIC_BASEOS_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BASEOS_FIXTURE_TAG}
8497
## the following setting redirects chaincode container logs to the peer container logs
8598
- CORE_VM_DOCKER_ATTACHSTDOUT=true
8699
- CORE_PEER_LOCALMSPID=Org1MSP
87100
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/
88-
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
101+
- CORE_PEER_ADDRESS=0.0.0.0:7051
102+
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
103+
- CORE_PEER_ADDRESSAUTODETECT=true
104+
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
89105
- CORE_PEER_TLS_ENABLED=true
90106
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/tls/peer/server.key
91107
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/tls/peer/server.crt
92108
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/tls/peer/ca.crt
93109
# # the following setting starts chaincode containers on the same
94110
# # bridge network as the peers
95111
# # https://docs.docker.com/compose/networking/
96-
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fixtures_default
112+
- CORE_PEER_NETWORKID=${CORE_PEER_NETWORKID}
113+
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${CORE_PEER_NETWORKID}_default
97114
#comment out logging.driver in order to render the debug logs
98115
logging:
99116
driver: none
100117
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
101118
command: peer node start
102119
ports:
103-
- 7051:7051
104-
- 7053:7053
120+
- "7051:7051"
121+
- "7053:7053"
122+
expose:
123+
- "7051"
124+
- "7052"
125+
- "7053"
105126
volumes:
106127
- /var/run/:/host/var/run/
107128
- ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/msp/peer
108129
- ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/tls/peer
130+
networks:
131+
default:
132+
aliases:
133+
- peer0.org1.example.com
109134
depends_on:
110-
- orderer.example.com
135+
- orderer1
111136
- builder
112137

113-
peer0.org2.example.com:
114-
container_name: peer0.org2.example.com
138+
org2peer1:
115139
image: ${FABRIC_PEER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_PEER_FIXTURE_TAG}
116140
environment:
117141
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
118142
- CORE_PEER_ID=peer0.org2.example.com
119143
- CORE_LOGGING_PEER=debug
144+
- CORE_CHAINCODE_STARTUPTIMEOUT=30s
145+
- CORE_CHAINCODE_LOGGING_SHIM=debug
146+
- CORE_CHAINCODE_LOGGING_LEVEL=debug
147+
- CORE_CHAINCODE_BUILDER=${FABRIC_BUILDER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BUILDER_FIXTURE_TAG}
148+
- CORE_CHAINCODE_GOLANG_RUNTIME=${FABRIC_BASEOS_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BASEOS_FIXTURE_TAG}
149+
## the following setting redirects chaincode container logs to the peer container logs
150+
- CORE_VM_DOCKER_ATTACHSTDOUT=true
120151
- CORE_PEER_LOCALMSPID=Org2MSP
121152
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/
122-
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
153+
- CORE_PEER_ADDRESS=0.0.0.0:7051
154+
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
155+
- CORE_PEER_ADDRESSAUTODETECT=true
156+
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
123157
- CORE_PEER_TLS_ENABLED=true
124158
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/tls/peer/server.key
125159
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/tls/peer/server.crt
126160
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/tls/peer/ca.crt
127161
# # the following setting starts chaincode containers on the same
128162
# # bridge network as the peers
129163
# # https://docs.docker.com/compose/networking/
130-
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fixtures_default
164+
- CORE_PEER_NETWORKID=${CORE_PEER_NETWORKID}
165+
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${CORE_PEER_NETWORKID}_default
131166
#comment out logging.driver in order to render the debug logs
132167
logging:
133168
driver: none
134169
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
135170
command: peer node start
136171
ports:
137-
- 8051:7051
138-
- 8053:7053
172+
- "8051:7051"
173+
- "8053:7053"
174+
expose:
175+
- "7051"
176+
- "7052"
177+
- "7053"
139178
volumes:
140179
- /var/run/:/host/var/run/
141180
- ./channel/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/msp/peer
142-
- ./channel/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/tls/peer
181+
- ./channel/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/tls/peer
182+
networks:
183+
default:
184+
aliases:
185+
- peer0.org2.example.com
143186
depends_on:
144-
- orderer.example.com
187+
- orderer1
145188
- builder
146189

147-
148190
# builder is only here to create a dependency on the image (not used as part of compose)
149191
builder:
150192
image: ${FABRIC_BUILDER_FIXTURE_IMAGE}:${ARCH}-${FABRIC_BUILDER_FIXTURE_TAG}
151193
command: tail -F anything
194+
195+
networks:
196+
default:

test/scripts/clean_integration.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
#
3+
# Copyright SecureKey Technologies Inc. All Rights Reserved.
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
#
7+
8+
DOCKER_CMD="${DOCKER_CMD:-docker}"
9+
DOCKER_COMPOSE_CMD="${DOCKER_COMPOSE_CMD:-docker-compose}"
10+
FIXTURE_PROJECT_NAME="${FIXTURE_PROJECT_NAME:-fabsdkgo}"
11+
DOCKER_REMOVE_FORCE="${DOCKER_REMOVE_FORCE:-false}"
12+
13+
SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
14+
15+
rm -f ${SCRIPT_PATH}/../fixtures/tls/fabricca/certs/server/ca.org*.example.com-cert.pem
16+
echo "Removing docker-compose network created from fixtures ..."
17+
COMPOSE_PROJECT_NAME=FIXTURE_PROJECT_NAME cd ${SCRIPT_PATH}/../fixtures && $DOCKER_COMPOSE_CMD -f docker-compose.yaml -f docker-compose-nopkcs11-test.yaml -f docker-compose-pkcs11-test.yaml down
18+
19+
DOCKER_REMOVE_ARGS=
20+
if [ "$DOCKER_REMOVE_FORCE" = "true" ]; then
21+
DOCKER_REMOVE_ARGS="-f"
22+
fi
23+
24+
CONTAINERS=$($DOCKER_CMD ps -a | grep "${FIXTURE_PROJECT_NAME}-peer.\.org.\.example\.com-" | awk '{print $1}')
25+
IMAGES=$($DOCKER_CMD images | grep "${FIXTURE_PROJECT_NAME}-peer.\.org.\.example\.com-" | awk '{print $1}')
26+
27+
if [ ! -z "$CONTAINERS" ]; then
28+
if [ "$DOCKER_REMOVE_FORCE" = "true" ]; then
29+
echo "Stopping chaincode containers created from fixtures ..."
30+
$DOCKER_CMD stop $CONTAINERS
31+
fi
32+
33+
echo "Removing chaincode containers created from fixtures ..."
34+
$DOCKER_CMD rm $DOCKER_REMOVE_ARGS $CONTAINERS
35+
fi
36+
37+
if [ ! -z "$IMAGES" ]; then
38+
echo "Removing chaincode images created from fixtures ..."
39+
$DOCKER_CMD rmi $DOCKER_REMOVE_ARGS $IMAGES
40+
fi

0 commit comments

Comments
 (0)