aboutsummaryrefslogtreecommitdiff
path: root/test/mq/docker-compose.test.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/mq/docker-compose.test.yml')
-rw-r--r--test/mq/docker-compose.test.yml333
1 files changed, 333 insertions, 0 deletions
diff --git a/test/mq/docker-compose.test.yml b/test/mq/docker-compose.test.yml
new file mode 100644
index 000000000..102e73130
--- /dev/null
+++ b/test/mq/docker-compose.test.yml
@@ -0,0 +1,333 @@
+version: '3.9'
+
+services:
+ # Master cluster for coordination and metadata
+ master0:
+ image: chrislusf/seaweedfs:local
+ container_name: test-master0
+ ports:
+ - "19333:9333"
+ - "29333:19333"
+ command: >
+ master
+ -v=1
+ -volumeSizeLimitMB=100
+ -resumeState=false
+ -ip=master0
+ -port=9333
+ -peers=master0:9333,master1:9334,master2:9335
+ -mdir=/tmp/master0
+ environment:
+ WEED_MASTER_VOLUME_GROWTH_COPY_1: 1
+ WEED_MASTER_VOLUME_GROWTH_COPY_2: 2
+ WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: 1
+ networks:
+ - seaweedmq-test
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:9333/cluster/status"]
+ interval: 10s
+ timeout: 5s
+ retries: 3
+
+ master1:
+ image: chrislusf/seaweedfs:local
+ container_name: test-master1
+ ports:
+ - "19334:9334"
+ - "29334:19334"
+ command: >
+ master
+ -v=1
+ -volumeSizeLimitMB=100
+ -resumeState=false
+ -ip=master1
+ -port=9334
+ -peers=master0:9333,master1:9334,master2:9335
+ -mdir=/tmp/master1
+ environment:
+ WEED_MASTER_VOLUME_GROWTH_COPY_1: 1
+ WEED_MASTER_VOLUME_GROWTH_COPY_2: 2
+ WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: 1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ - master0
+
+ master2:
+ image: chrislusf/seaweedfs:local
+ container_name: test-master2
+ ports:
+ - "19335:9335"
+ - "29335:19335"
+ command: >
+ master
+ -v=1
+ -volumeSizeLimitMB=100
+ -resumeState=false
+ -ip=master2
+ -port=9335
+ -peers=master0:9333,master1:9334,master2:9335
+ -mdir=/tmp/master2
+ environment:
+ WEED_MASTER_VOLUME_GROWTH_COPY_1: 1
+ WEED_MASTER_VOLUME_GROWTH_COPY_2: 2
+ WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: 1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ - master0
+
+ # Volume servers for data storage
+ volume1:
+ image: chrislusf/seaweedfs:local
+ container_name: test-volume1
+ ports:
+ - "18080:8080"
+ - "28080:18080"
+ command: >
+ volume
+ -v=1
+ -dataCenter=dc1
+ -rack=rack1
+ -mserver=master0:9333,master1:9334,master2:9335
+ -port=8080
+ -ip=volume1
+ -publicUrl=localhost:18080
+ -preStopSeconds=1
+ -dir=/tmp/volume1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ master0:
+ condition: service_healthy
+
+ volume2:
+ image: chrislusf/seaweedfs:local
+ container_name: test-volume2
+ ports:
+ - "18081:8081"
+ - "28081:18081"
+ command: >
+ volume
+ -v=1
+ -dataCenter=dc1
+ -rack=rack2
+ -mserver=master0:9333,master1:9334,master2:9335
+ -port=8081
+ -ip=volume2
+ -publicUrl=localhost:18081
+ -preStopSeconds=1
+ -dir=/tmp/volume2
+ networks:
+ - seaweedmq-test
+ depends_on:
+ master0:
+ condition: service_healthy
+
+ volume3:
+ image: chrislusf/seaweedfs:local
+ container_name: test-volume3
+ ports:
+ - "18082:8082"
+ - "28082:18082"
+ command: >
+ volume
+ -v=1
+ -dataCenter=dc2
+ -rack=rack1
+ -mserver=master0:9333,master1:9334,master2:9335
+ -port=8082
+ -ip=volume3
+ -publicUrl=localhost:18082
+ -preStopSeconds=1
+ -dir=/tmp/volume3
+ networks:
+ - seaweedmq-test
+ depends_on:
+ master0:
+ condition: service_healthy
+
+ # Filer servers for metadata
+ filer1:
+ image: chrislusf/seaweedfs:local
+ container_name: test-filer1
+ ports:
+ - "18888:8888"
+ - "28888:18888"
+ command: >
+ filer
+ -v=1
+ -defaultReplicaPlacement=100
+ -iam
+ -master=master0:9333,master1:9334,master2:9335
+ -port=8888
+ -ip=filer1
+ -dataCenter=dc1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ master0:
+ condition: service_healthy
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8888/"]
+ interval: 10s
+ timeout: 5s
+ retries: 3
+
+ filer2:
+ image: chrislusf/seaweedfs:local
+ container_name: test-filer2
+ ports:
+ - "18889:8889"
+ - "28889:18889"
+ command: >
+ filer
+ -v=1
+ -defaultReplicaPlacement=100
+ -iam
+ -master=master0:9333,master1:9334,master2:9335
+ -port=8889
+ -ip=filer2
+ -dataCenter=dc2
+ networks:
+ - seaweedmq-test
+ depends_on:
+ filer1:
+ condition: service_healthy
+
+ # Message Queue Brokers
+ broker1:
+ image: chrislusf/seaweedfs:local
+ container_name: test-broker1
+ ports:
+ - "17777:17777"
+ command: >
+ mq.broker
+ -v=1
+ -master=master0:9333,master1:9334,master2:9335
+ -port=17777
+ -ip=broker1
+ -dataCenter=dc1
+ -rack=rack1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ filer1:
+ condition: service_healthy
+ healthcheck:
+ test: ["CMD", "nc", "-z", "localhost", "17777"]
+ interval: 10s
+ timeout: 5s
+ retries: 3
+
+ broker2:
+ image: chrislusf/seaweedfs:local
+ container_name: test-broker2
+ ports:
+ - "17778:17778"
+ command: >
+ mq.broker
+ -v=1
+ -master=master0:9333,master1:9334,master2:9335
+ -port=17778
+ -ip=broker2
+ -dataCenter=dc1
+ -rack=rack2
+ networks:
+ - seaweedmq-test
+ depends_on:
+ broker1:
+ condition: service_healthy
+
+ broker3:
+ image: chrislusf/seaweedfs:local
+ container_name: test-broker3
+ ports:
+ - "17779:17779"
+ command: >
+ mq.broker
+ -v=1
+ -master=master0:9333,master1:9334,master2:9335
+ -port=17779
+ -ip=broker3
+ -dataCenter=dc2
+ -rack=rack1
+ networks:
+ - seaweedmq-test
+ depends_on:
+ broker1:
+ condition: service_healthy
+
+ # Test runner container
+ test-runner:
+ build:
+ context: ../../
+ dockerfile: test/mq/Dockerfile.test
+ container_name: test-runner
+ volumes:
+ - ../../:/app
+ - /tmp/test-results:/test-results
+ working_dir: /app
+ environment:
+ - SEAWEED_MASTERS=master0:9333,master1:9334,master2:9335
+ - SEAWEED_BROKERS=broker1:17777,broker2:17778,broker3:17779
+ - SEAWEED_FILERS=filer1:8888,filer2:8889
+ - TEST_RESULTS_DIR=/test-results
+ - GO_TEST_TIMEOUT=30m
+ networks:
+ - seaweedmq-test
+ depends_on:
+ broker1:
+ condition: service_healthy
+ broker2:
+ condition: service_started
+ broker3:
+ condition: service_started
+ command: >
+ sh -c "
+ echo 'Waiting for cluster to be ready...' &&
+ sleep 30 &&
+ echo 'Running integration tests...' &&
+ go test -v -timeout=30m ./test/mq/integration/... -args -test.parallel=4
+ "
+
+ # Monitoring and metrics
+ prometheus:
+ image: prom/prometheus:latest
+ container_name: test-prometheus
+ ports:
+ - "19090:9090"
+ volumes:
+ - ./prometheus.yml:/etc/prometheus/prometheus.yml
+ networks:
+ - seaweedmq-test
+ command:
+ - '--config.file=/etc/prometheus/prometheus.yml'
+ - '--storage.tsdb.path=/prometheus'
+ - '--web.console.libraries=/etc/prometheus/console_libraries'
+ - '--web.console.templates=/etc/prometheus/consoles'
+ - '--web.enable-lifecycle'
+
+ grafana:
+ image: grafana/grafana:latest
+ container_name: test-grafana
+ ports:
+ - "13000:3000"
+ environment:
+ - GF_SECURITY_ADMIN_PASSWORD=admin
+ volumes:
+ - grafana-storage:/var/lib/grafana
+ - ./grafana/dashboards:/etc/grafana/provisioning/dashboards
+ - ./grafana/datasources:/etc/grafana/provisioning/datasources
+ networks:
+ - seaweedmq-test
+
+networks:
+ seaweedmq-test:
+ driver: bridge
+ ipam:
+ config:
+ - subnet: 172.20.0.0/16
+
+volumes:
+ grafana-storage: \ No newline at end of file