This is an automated email from the ASF dual-hosted git repository.
zixuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git
The following commit(s) were added to refs/heads/master by this push:
new 551da2da [improve] use pulsar-client-go-test docker to run blue-green
cluster test (#1287)
551da2da is described below
commit 551da2da9e2328043de207fabe416be0c35ab96b
Author: zhou zhuohan <[email protected]>
AuthorDate: Tue Oct 8 17:20:39 2024 +0800
[improve] use pulsar-client-go-test docker to run blue-green cluster test
(#1287)
---
Makefile | 12 ++--
integration-tests/blue-green/docker-compose.yml | 94 +++++++++++++------------
pulsar/blue_green_migration_test.go | 14 ++--
scripts/run-ci-blue-green-cluster.sh | 22 ++++++
4 files changed, 82 insertions(+), 60 deletions(-)
diff --git a/Makefile b/Makefile
index 1fd66be6..23844c41 100644
--- a/Makefile
+++ b/Makefile
@@ -53,27 +53,25 @@ container:
test: container test_standalone test_clustered test_extensible_load_manager
test_standalone: container
- 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"
+ 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"
test_clustered: container
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/clustered/docker-compose.yml up -d
until curl http://localhost:8080/metrics > /dev/null 2>&1; do sleep 1;
done
- docker run --network "clustered_pulsar" -i ${IMAGE_NAME} bash -c "cd
/pulsar/pulsar-client-go && ./scripts/run-ci-clustered.sh"
+ docker run --rm --network "clustered_pulsar" -i ${IMAGE_NAME} bash -c
"cd /pulsar/pulsar-client-go && ./scripts/run-ci-clustered.sh"
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/clustered/docker-compose.yml down
test_extensible_load_manager: container
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/extensible-load-manager/docker-compose.yml up -d
until curl http://localhost:8080/metrics > /dev/null 2>&1; do sleep 1;
done
- docker run --network "extensible-load-manager_pulsar" -i ${IMAGE_NAME}
bash -c "cd /pulsar/pulsar-client-go &&
./scripts/run-ci-extensible-load-manager.sh"
+ 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"
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/blue-green/docker-compose.yml up -d
until curl http://localhost:8081/metrics > /dev/null 2>&1 ; do sleep 1;
done
- # run blue-green migration test (run this test from this env to access
both clusters)
- go test -race -coverprofile=/tmp/coverage-blue_green_topic_migration
-timeout=5m -tags extensible_load_manager -v -run
TestBlueGreenMigrationTestSuite ./pulsar
- go tool cover -html=/tmp/coverage-blue_green_topic_migration -o
coverage-blue_green_topic_migration.html
- PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/extensible-load-manager/docker-compose.yml down
+ 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"
PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/blue-green/docker-compose.yml down
+ PULSAR_VERSION=${PULSAR_VERSION} docker compose -f
integration-tests/extensible-load-manager/docker-compose.yml down
clean:
docker rmi --force $(IMAGE_NAME) || true
diff --git a/integration-tests/blue-green/docker-compose.yml
b/integration-tests/blue-green/docker-compose.yml
index eea58520..b026ce88 100644
--- a/integration-tests/blue-green/docker-compose.yml
+++ b/integration-tests/blue-green/docker-compose.yml
@@ -17,18 +17,20 @@
version: '3'
networks:
- green-pulsar:
- driver: bridge
+ # We use external extensible-load-manager_pulsar docker network
+ # to make sure blue cluster and green cluster are in the same network
+ extensible-load-manager_pulsar:
+ external: true
services:
# Start ZooKeeper
- zookeeper:
+ green-zookeeper:
image: apachepulsar/pulsar:${PULSAR_VERSION}
container_name: green-zookeeper
restart: on-failure
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- - metadataStoreUrl=zk:zookeeper:2181
+ - metadataStoreUrl=zk:green-zookeeper:2181
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
command: >
bash -c "bin/apply-config-from-env.py conf/zookeeper.conf && \
@@ -41,79 +43,79 @@ services:
retries: 30
# Initialize cluster metadata
- pulsar-init:
+ green-pulsar-init:
container_name: green-pulsar-init
- hostname: pulsar-init
+ hostname: green-pulsar-init
image: apachepulsar/pulsar:${PULSAR_VERSION}
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
command: >
bin/pulsar initialize-cluster-metadata \
- --cluster cluster-a \
- --zookeeper zookeeper:2181 \
- --configuration-store zookeeper:2181 \
- --web-service-url http://broker-1:8080 \
- --broker-service-url pulsar://broker-1:6650
+ --cluster cluster-green \
+ --zookeeper green-zookeeper:2181 \
+ --configuration-store green-zookeeper:2181 \
+ --web-service-url http://green-broker-1:8080 \
+ --broker-service-url pulsar://green-broker-1:6650
depends_on:
- zookeeper:
+ green-zookeeper:
condition: service_healthy
# Start bookie
- bookie:
+ green-bookie:
image: apachepulsar/pulsar:${PULSAR_VERSION}
container_name: green-bookie
restart: on-failure
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- - clusterName=cluster-a
- - zkServers=zookeeper:2181
- - metadataServiceUri=metadata-store:zk:zookeeper:2181
- - advertisedAddress=bookie
+ - clusterName=cluster-green
+ - zkServers=green-zookeeper:2181
+ - metadataServiceUri=metadata-store:zk:green-zookeeper:2181
+ - advertisedAddress=green-bookie
- BOOKIE_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
depends_on:
- zookeeper:
+ green-zookeeper:
condition: service_healthy
- pulsar-init:
+ green-pulsar-init:
condition: service_completed_successfully
command: bash -c "bin/apply-config-from-env.py conf/bookkeeper.conf &&
exec bin/pulsar bookie"
- proxy:
+ green-proxy:
image: apachepulsar/pulsar:${PULSAR_VERSION}
container_name: green-proxy
- hostname: proxy
+ hostname: green-proxy
restart: on-failure
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- - metadataStoreUrl=zk:zookeeper:2181
- - zookeeperServers=zookeeper:2181
- - clusterName=cluster-a
+ - metadataStoreUrl=zk:green-zookeeper:2181
+ - zookeeperServers=green-zookeeper:2181
+ - clusterName=cluster-green
- PULSAR_MEM=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=56m
ports:
- "8081:8080"
- "6651:6650"
depends_on:
- broker-1:
+ green-broker-1:
condition: service_started
- broker-2:
+ green-broker-2:
condition: service_started
command: bash -c "bin/apply-config-from-env.py conf/proxy.conf && exec
bin/pulsar proxy"
# Start broker 1
- broker-1:
+ green-broker-1:
image: apachepulsar/pulsar:${PULSAR_VERSION}
container_name: green-broker-1
- hostname: broker-1
+ hostname: green-broker-1
restart: on-failure
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- - metadataStoreUrl=zk:zookeeper:2181
- - zookeeperServers=zookeeper:2181
- - clusterName=cluster-a
+ - metadataStoreUrl=zk:green-zookeeper:2181
+ - zookeeperServers=green-zookeeper:2181
+ - clusterName=cluster-green
- managedLedgerDefaultEnsembleSize=1
- managedLedgerDefaultWriteQuorum=1
- managedLedgerDefaultAckQuorum=1
@@ -129,24 +131,24 @@ services:
- brokerServiceCompactionThresholdInBytes=1000000
- PULSAR_PREFIX_defaultNumberOfNamespaceBundles=1
depends_on:
- zookeeper:
+ green-zookeeper:
condition: service_healthy
- bookie:
+ green-bookie:
condition: service_started
command: bash -c "bin/apply-config-from-env.py conf/broker.conf && exec
bin/pulsar broker"
# Start broker 2
- broker-2:
+ green-broker-2:
image: apachepulsar/pulsar:${PULSAR_VERSION}
container_name: green-broker-2
- hostname: broker-2
+ hostname: green-broker-2
restart: on-failure
networks:
- - green-pulsar
+ - extensible-load-manager_pulsar
environment:
- - metadataStoreUrl=zk:zookeeper:2181
- - zookeeperServers=zookeeper:2181
- - clusterName=cluster-a
+ - metadataStoreUrl=zk:green-zookeeper:2181
+ - zookeeperServers=green-zookeeper:2181
+ - clusterName=cluster-green
- managedLedgerDefaultEnsembleSize=1
- managedLedgerDefaultWriteQuorum=1
- managedLedgerDefaultAckQuorum=1
@@ -162,8 +164,8 @@ services:
- brokerServiceCompactionThresholdInBytes=1000000
- PULSAR_PREFIX_defaultNumberOfNamespaceBundles=1
depends_on:
- zookeeper:
+ green-zookeeper:
condition: service_healthy
- bookie:
+ green-bookie:
condition: service_started
command: bash -c "bin/apply-config-from-env.py conf/broker.conf && exec
bin/pulsar broker"
\ No newline at end of file
diff --git a/pulsar/blue_green_migration_test.go
b/pulsar/blue_green_migration_test.go
index 672ef343..4cd2e476 100644
--- a/pulsar/blue_green_migration_test.go
+++ b/pulsar/blue_green_migration_test.go
@@ -55,15 +55,15 @@ func (suite *BlueGreenMigrationTestSuite)
TestTopicMigration() {
{
testCaseName: "proxyConnection",
- blueAdminURL: "http://localhost:8080",
- blueClientUrl: "pulsar://localhost:6650",
- greenAdminURL: "http://localhost:8081",
+ blueAdminURL: "http://proxy:8080",
+ blueClientUrl: "pulsar://proxy:6650",
+ greenAdminURL: "http://green-proxy:8080",
migrationBody: `
{
- "serviceUrl":
"http://localhost:8081",
-
"serviceUrlTls":"https://localhost:8085",
- "brokerServiceUrl":
"pulsar://localhost:6651",
- "brokerServiceUrlTls":
"pulsar+ssl://localhost:6655"
+ "serviceUrl":
"http://green-proxy:8080",
+
"serviceUrlTls":"https://green-proxy:8081",
+ "brokerServiceUrl":
"pulsar://green-proxy:6650",
+ "brokerServiceUrlTls":
"pulsar+ssl://green-proxy:6651"
}
`,
},
diff --git a/scripts/run-ci-blue-green-cluster.sh
b/scripts/run-ci-blue-green-cluster.sh
new file mode 100755
index 00000000..a8528cb9
--- /dev/null
+++ b/scripts/run-ci-blue-green-cluster.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+set -e -x
+
+go test -race -coverprofile=/tmp/coverage-blue_green_topic_migration
-timeout=5m -tags extensible_load_manager -v -run
TestBlueGreenMigrationTestSuite ./pulsar
+go tool cover -html=/tmp/coverage-blue_green_topic_migration -o
coverage-blue_green_topic_migration.html
\ No newline at end of file