Skip to content

Commit 551da2d

Browse files
authored
[improve] use pulsar-client-go-test docker to run blue-green cluster test (#1287)
1 parent 795c180 commit 551da2d

File tree

4 files changed

+82
-60
lines changed

4 files changed

+82
-60
lines changed

Makefile

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,25 @@ container:
5353
test: container test_standalone test_clustered test_extensible_load_manager
5454

5555
test_standalone: container
56-
docker run -v /var/run/docker.sock:/var/run/docker.sock -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci.sh"
56+
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci.sh"
5757

5858
test_clustered: container
5959
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/clustered/docker-compose.yml up -d
6060
until curl http://localhost:8080/metrics > /dev/null 2>&1; do sleep 1; done
61-
docker run --network "clustered_pulsar" -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci-clustered.sh"
61+
docker run --rm --network "clustered_pulsar" -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci-clustered.sh"
6262
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/clustered/docker-compose.yml down
6363

6464
test_extensible_load_manager: container
6565
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/extensible-load-manager/docker-compose.yml up -d
6666
until curl http://localhost:8080/metrics > /dev/null 2>&1; do sleep 1; done
67-
docker run --network "extensible-load-manager_pulsar" -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci-extensible-load-manager.sh"
67+
docker run --rm --network "extensible-load-manager_pulsar" -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci-extensible-load-manager.sh"
6868

6969
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/blue-green/docker-compose.yml up -d
7070
until curl http://localhost:8081/metrics > /dev/null 2>&1 ; do sleep 1; done
7171

72-
# run blue-green migration test (run this test from this env to access both clusters)
73-
go test -race -coverprofile=/tmp/coverage-blue_green_topic_migration -timeout=5m -tags extensible_load_manager -v -run TestBlueGreenMigrationTestSuite ./pulsar
74-
go tool cover -html=/tmp/coverage-blue_green_topic_migration -o coverage-blue_green_topic_migration.html
75-
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/extensible-load-manager/docker-compose.yml down
72+
docker run --rm --network="extensible-load-manager_pulsar" -i ${IMAGE_NAME} bash -c "cd /pulsar/pulsar-client-go && ./scripts/run-ci-blue-green-cluster.sh"
7673
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/blue-green/docker-compose.yml down
74+
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f integration-tests/extensible-load-manager/docker-compose.yml down
7775

7876
clean:
7977
docker rmi --force $(IMAGE_NAME) || true

integration-tests/blue-green/docker-compose.yml

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,20 @@
1717

1818
version: '3'
1919
networks:
20-
green-pulsar:
21-
driver: bridge
20+
# We use external extensible-load-manager_pulsar docker network
21+
# to make sure blue cluster and green cluster are in the same network
22+
extensible-load-manager_pulsar:
23+
external: true
2224
services:
2325
# Start ZooKeeper
24-
zookeeper:
26+
green-zookeeper:
2527
image: apachepulsar/pulsar:${PULSAR_VERSION}
2628
container_name: green-zookeeper
2729
restart: on-failure
2830
networks:
29-
- green-pulsar
31+
- extensible-load-manager_pulsar
3032
environment:
31-
- metadataStoreUrl=zk:zookeeper:2181
33+
- metadataStoreUrl=zk:green-zookeeper:2181
3234
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
3335
command: >
3436
bash -c "bin/apply-config-from-env.py conf/zookeeper.conf && \
@@ -41,79 +43,79 @@ services:
4143
retries: 30
4244

4345
# Initialize cluster metadata
44-
pulsar-init:
46+
green-pulsar-init:
4547
container_name: green-pulsar-init
46-
hostname: pulsar-init
48+
hostname: green-pulsar-init
4749
image: apachepulsar/pulsar:${PULSAR_VERSION}
4850
networks:
49-
- green-pulsar
51+
- extensible-load-manager_pulsar
5052
environment:
5153
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
5254
command: >
5355
bin/pulsar initialize-cluster-metadata \
54-
--cluster cluster-a \
55-
--zookeeper zookeeper:2181 \
56-
--configuration-store zookeeper:2181 \
57-
--web-service-url http://broker-1:8080 \
58-
--broker-service-url pulsar://broker-1:6650
56+
--cluster cluster-green \
57+
--zookeeper green-zookeeper:2181 \
58+
--configuration-store green-zookeeper:2181 \
59+
--web-service-url http://green-broker-1:8080 \
60+
--broker-service-url pulsar://green-broker-1:6650
5961
depends_on:
60-
zookeeper:
62+
green-zookeeper:
6163
condition: service_healthy
6264

6365
# Start bookie
64-
bookie:
66+
green-bookie:
6567
image: apachepulsar/pulsar:${PULSAR_VERSION}
6668
container_name: green-bookie
6769
restart: on-failure
6870
networks:
69-
- green-pulsar
71+
- extensible-load-manager_pulsar
7072
environment:
71-
- clusterName=cluster-a
72-
- zkServers=zookeeper:2181
73-
- metadataServiceUri=metadata-store:zk:zookeeper:2181
74-
- advertisedAddress=bookie
73+
- clusterName=cluster-green
74+
- zkServers=green-zookeeper:2181
75+
- metadataServiceUri=metadata-store:zk:green-zookeeper:2181
76+
- advertisedAddress=green-bookie
7577
- BOOKIE_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
7678
depends_on:
77-
zookeeper:
79+
green-zookeeper:
7880
condition: service_healthy
79-
pulsar-init:
81+
green-pulsar-init:
8082
condition: service_completed_successfully
8183
command: bash -c "bin/apply-config-from-env.py conf/bookkeeper.conf && exec bin/pulsar bookie"
8284

83-
proxy:
85+
green-proxy:
8486
image: apachepulsar/pulsar:${PULSAR_VERSION}
8587
container_name: green-proxy
86-
hostname: proxy
88+
hostname: green-proxy
8789
restart: on-failure
8890
networks:
89-
- green-pulsar
91+
- extensible-load-manager_pulsar
9092
environment:
91-
- metadataStoreUrl=zk:zookeeper:2181
92-
- zookeeperServers=zookeeper:2181
93-
- clusterName=cluster-a
93+
- metadataStoreUrl=zk:green-zookeeper:2181
94+
- zookeeperServers=green-zookeeper:2181
95+
- clusterName=cluster-green
9496
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
9597
ports:
9698
- "8081:8080"
9799
- "6651:6650"
98100
depends_on:
99-
broker-1:
101+
green-broker-1:
100102
condition: service_started
101-
broker-2:
103+
green-broker-2:
102104
condition: service_started
103105
command: bash -c "bin/apply-config-from-env.py conf/proxy.conf && exec bin/pulsar proxy"
104106

105107
# Start broker 1
106-
broker-1:
108+
green-broker-1:
107109
image: apachepulsar/pulsar:${PULSAR_VERSION}
108110
container_name: green-broker-1
109-
hostname: broker-1
111+
hostname: green-broker-1
110112
restart: on-failure
111113
networks:
112-
- green-pulsar
114+
- extensible-load-manager_pulsar
113115
environment:
114-
- metadataStoreUrl=zk:zookeeper:2181
115-
- zookeeperServers=zookeeper:2181
116-
- clusterName=cluster-a
116+
- metadataStoreUrl=zk:green-zookeeper:2181
117+
- zookeeperServers=green-zookeeper:2181
118+
- clusterName=cluster-green
117119
- managedLedgerDefaultEnsembleSize=1
118120
- managedLedgerDefaultWriteQuorum=1
119121
- managedLedgerDefaultAckQuorum=1
@@ -129,24 +131,24 @@ services:
129131
- brokerServiceCompactionThresholdInBytes=1000000
130132
- PULSAR_PREFIX_defaultNumberOfNamespaceBundles=1
131133
depends_on:
132-
zookeeper:
134+
green-zookeeper:
133135
condition: service_healthy
134-
bookie:
136+
green-bookie:
135137
condition: service_started
136138
command: bash -c "bin/apply-config-from-env.py conf/broker.conf && exec bin/pulsar broker"
137139

138140
# Start broker 2
139-
broker-2:
141+
green-broker-2:
140142
image: apachepulsar/pulsar:${PULSAR_VERSION}
141143
container_name: green-broker-2
142-
hostname: broker-2
144+
hostname: green-broker-2
143145
restart: on-failure
144146
networks:
145-
- green-pulsar
147+
- extensible-load-manager_pulsar
146148
environment:
147-
- metadataStoreUrl=zk:zookeeper:2181
148-
- zookeeperServers=zookeeper:2181
149-
- clusterName=cluster-a
149+
- metadataStoreUrl=zk:green-zookeeper:2181
150+
- zookeeperServers=green-zookeeper:2181
151+
- clusterName=cluster-green
150152
- managedLedgerDefaultEnsembleSize=1
151153
- managedLedgerDefaultWriteQuorum=1
152154
- managedLedgerDefaultAckQuorum=1
@@ -162,8 +164,8 @@ services:
162164
- brokerServiceCompactionThresholdInBytes=1000000
163165
- PULSAR_PREFIX_defaultNumberOfNamespaceBundles=1
164166
depends_on:
165-
zookeeper:
167+
green-zookeeper:
166168
condition: service_healthy
167-
bookie:
169+
green-bookie:
168170
condition: service_started
169171
command: bash -c "bin/apply-config-from-env.py conf/broker.conf && exec bin/pulsar broker"

pulsar/blue_green_migration_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ func (suite *BlueGreenMigrationTestSuite) TestTopicMigration() {
5555

5656
{
5757
testCaseName: "proxyConnection",
58-
blueAdminURL: "http://localhost:8080",
59-
blueClientUrl: "pulsar://localhost:6650",
60-
greenAdminURL: "http://localhost:8081",
58+
blueAdminURL: "http://proxy:8080",
59+
blueClientUrl: "pulsar://proxy:6650",
60+
greenAdminURL: "http://green-proxy:8080",
6161
migrationBody: `
6262
{
63-
"serviceUrl": "http://localhost:8081",
64-
"serviceUrlTls":"https://localhost:8085",
65-
"brokerServiceUrl": "pulsar://localhost:6651",
66-
"brokerServiceUrlTls": "pulsar+ssl://localhost:6655"
63+
"serviceUrl": "http://green-proxy:8080",
64+
"serviceUrlTls":"https://green-proxy:8081",
65+
"brokerServiceUrl": "pulsar://green-proxy:6650",
66+
"brokerServiceUrlTls": "pulsar+ssl://green-proxy:6651"
6767
}
6868
`,
6969
},
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
# Licensed to the Apache Software Foundation (ASF) under one
3+
# or more contributor license agreements. See the NOTICE file
4+
# distributed with this work for additional information
5+
# regarding copyright ownership. The ASF licenses this file
6+
# to you under the Apache License, Version 2.0 (the
7+
# "License"); you may not use this file except in compliance
8+
# with the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing,
13+
# software distributed under the License is distributed on an
14+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
# KIND, either express or implied. See the License for the
16+
# specific language governing permissions and limitations
17+
# under the License.
18+
19+
set -e -x
20+
21+
go test -race -coverprofile=/tmp/coverage-blue_green_topic_migration -timeout=5m -tags extensible_load_manager -v -run TestBlueGreenMigrationTestSuite ./pulsar
22+
go tool cover -html=/tmp/coverage-blue_green_topic_migration -o coverage-blue_green_topic_migration.html

0 commit comments

Comments
 (0)