Skip to content

Commit b8ac0eb

Browse files
committed
Use 2-node cluster for main test suites
(cherry picked from commit 10fe49f)
1 parent dedc3f9 commit b8ac0eb

File tree

3 files changed

+103
-15
lines changed

3 files changed

+103
-15
lines changed

.github/workflows/test-3.11-alpha.yml

+12-8
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,27 @@ jobs:
3636
distribution: 'temurin'
3737
java-version: '17'
3838
cache: 'maven'
39-
- name: Start broker
40-
run: ci/start-broker.sh
39+
- name: Start cluster
40+
run: ci/start-cluster.sh
4141
- name: Get dependencies
4242
run: make deps
4343
- name: Test with NIO
4444
run: |
4545
./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
46-
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
46+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
47+
-Dmaven.javadoc.skip=true \
4748
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
48-
-Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
49+
-Dit.test=HATests \
4950
--no-transfer-progress
5051
- name: Test with blocking IO
5152
run: |
5253
./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
53-
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
54+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
55+
-Dmaven.javadoc.skip=true \
5456
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
55-
-Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
57+
-Dit.test=HATests \
5658
--no-transfer-progress
57-
- name: Stop broker
58-
run: docker stop rabbitmq && docker rm rabbitmq
59+
- name: Stop broker A
60+
run: docker stop rabbitmq && docker rm rabbitmq
61+
- name: Stop broker B
62+
run: docker stop hare && docker rm hare

.github/workflows/test-3.11-stable.yml

+11-7
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,30 @@ jobs:
3939
server-password: MAVEN_PASSWORD
4040
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
4141
gpg-passphrase: MAVEN_GPG_PASSPHRASE
42-
- name: Start broker
43-
run: ci/start-broker.sh
42+
- name: Start cluster
43+
run: ci/start-cluster.sh
4444
- name: Get dependencies
4545
run: make deps
4646
- name: Test with NIO
4747
run: |
4848
./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
49-
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
49+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
50+
-Dmaven.javadoc.skip=true \
5051
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
51-
-Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
52+
-Dit.test=HATests \
5253
--no-transfer-progress
5354
- name: Test with blocking IO
5455
run: |
5556
./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
56-
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
57+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
58+
-Dmaven.javadoc.skip=true \
5759
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
58-
-Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
60+
-Dit.test=HATests \
5961
--no-transfer-progress
60-
- name: Stop broker
62+
- name: Stop broker A
6163
run: docker stop rabbitmq && docker rm rabbitmq
64+
- name: Stop broker B
65+
run: docker stop hare && docker rm hare
6266
- name: Publish snapshot
6367
if: ${{ github.event_name != 'pull_request' }}
6468
run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress

ci/start-cluster.sh

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#!/usr/bin/env bash
2+
3+
LOCAL_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4+
5+
RABBITMQ_IMAGE_TAG=${RABBITMQ_IMAGE_TAG:-3.11}
6+
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq}
7+
8+
wait_for_message() {
9+
while ! docker logs "$1" | grep -q "$2";
10+
do
11+
sleep 5
12+
echo "Waiting 5 seconds for $1 to start..."
13+
done
14+
}
15+
16+
make -C "${PWD}"/tls-gen/basic
17+
18+
mv tls-gen/basic/result/server_$(hostname -s)_certificate.pem tls-gen/basic/result/server_certificate.pem
19+
mv tls-gen/basic/result/server_$(hostname -s)_key.pem tls-gen/basic/result/server_key.pem
20+
mv tls-gen/basic/server_$(hostname -s) tls-gen/basic/server
21+
mv tls-gen/basic/client_$(hostname -s) tls-gen/basic/client
22+
23+
mkdir -p rabbitmq-configuration/tls
24+
25+
cp -R "${PWD}"/tls-gen/basic/* rabbitmq-configuration/tls
26+
chmod -R o+r rabbitmq-configuration/tls/*
27+
./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
28+
cp target/test-classes/[email protected] rabbitmq-configuration/[email protected]
29+
cp target/test-classes/[email protected] rabbitmq-configuration/[email protected]
30+
31+
echo "Running RabbitMQ ${RABBITMQ_IMAGE}:${RABBITMQ_IMAGE_TAG}"
32+
33+
docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
34+
docker run -d --name rabbitmq \
35+
--network host \
36+
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
37+
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/[email protected] \
38+
--env RABBITMQ_NODENAME=rabbit@$(hostname) \
39+
--env RABBITMQ_NODE_PORT=5672 \
40+
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
41+
"${RABBITMQ_IMAGE}":"${RABBITMQ_IMAGE_TAG}"
42+
43+
# for CLI commands to share the same cookie
44+
docker exec rabbitmq bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
45+
docker exec rabbitmq chmod 0600 /var/lib/rabbitmq/.erlang.cookie
46+
47+
wait_for_message rabbitmq "completed with"
48+
49+
docker run -d --name hare \
50+
--network host \
51+
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
52+
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/[email protected] \
53+
--env RABBITMQ_NODENAME=hare@$(hostname) \
54+
--env RABBITMQ_NODE_PORT=5673 \
55+
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
56+
"${RABBITMQ_IMAGE}":"${RABBITMQ_IMAGE_TAG}"
57+
58+
# for CLI commands to share the same cookie
59+
docker exec hare bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
60+
docker exec hare chmod 0600 /var/lib/rabbitmq/.erlang.cookie
61+
62+
wait_for_message hare "completed with"
63+
64+
docker exec hare rabbitmqctl --node hare@$(hostname) status
65+
66+
docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) is_running
67+
docker exec hare rabbitmq-diagnostics --node hare@$(hostname) is_running
68+
69+
docker exec hare rabbitmqctl --node hare@$(hostname) stop_app
70+
docker exec hare rabbitmqctl --node hare@$(hostname) join_cluster rabbit@$(hostname)
71+
docker exec hare rabbitmqctl --node hare@$(hostname) start_app
72+
73+
sleep 10
74+
75+
docker exec hare rabbitmqctl --node hare@$(hostname) await_startup
76+
77+
docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) erlang_version
78+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) version
79+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) status
80+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) cluster_status

0 commit comments

Comments
 (0)