Skip to content

Commit 87d1250

Browse files
added backbeat api tests
1 parent cbd8210 commit 87d1250

File tree

7 files changed

+250
-2957
lines changed

7 files changed

+250
-2957
lines changed
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
version: '3.8'
2+
3+
# This docker-compose is meant to be copied to your client test codebase
4+
# It sets up Backbeat with all required services using published images
5+
6+
services:
7+
zookeeper:
8+
image: zookeeper:3.8
9+
platform: linux/amd64
10+
network_mode: 'host'
11+
environment:
12+
- ALLOW_ANONYMOUS_LOGIN=yes
13+
14+
kafka:
15+
image: confluentinc/cp-kafka:7.4.0
16+
platform: linux/amd64
17+
network_mode: 'host'
18+
environment:
19+
KAFKA_ZOOKEEPER_CONNECT: localhost:2181
20+
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
21+
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
22+
KAFKA_BROKER_ID: 1
23+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
24+
depends_on:
25+
- zookeeper
26+
27+
mongodb:
28+
image: mongo:5.0
29+
platform: linux/amd64
30+
network_mode: 'host'
31+
command: mongod --port 27018 --replSet rs0
32+
healthcheck:
33+
test: echo 'db.runCommand({serverStatus:1}).ok' | mongo localhost:27018/test --quiet
34+
interval: 10s
35+
timeout: 5s
36+
retries: 5
37+
38+
mongodb-init:
39+
image: mongo:5.0
40+
platform: linux/amd64
41+
network_mode: 'host'
42+
depends_on:
43+
mongodb:
44+
condition: service_healthy
45+
command: >
46+
bash -c "
47+
echo 'Waiting for MongoDB to be ready...' &&
48+
sleep 5 &&
49+
mongo --host localhost:27018 --eval 'rs.initiate({_id:\"rs0\",members:[{_id:0,host:\"localhost:27018\"}]})' &&
50+
echo 'MongoDB replica set initialized'
51+
"
52+
restart: "no"
53+
54+
redis:
55+
image: redis:7-alpine
56+
platform: linux/amd64
57+
network_mode: 'host'
58+
59+
backbeat-api:
60+
image: ghcr.io/scality/backbeat:latest # Or use a specific version like :9.1.3
61+
platform: linux/amd64
62+
network_mode: 'host'
63+
environment:
64+
# Kafka configuration
65+
KAFKA_HOSTS: localhost:9092
66+
KAFKA_COMPRESSION_TYPE: snappy
67+
68+
# Zookeeper configuration
69+
ZOOKEEPER_CONNECTION_STRING: localhost:2181/backbeat
70+
ZOOKEEPER_AUTO_CREATE_NAMESPACE: "true"
71+
72+
# Redis configuration
73+
REDIS_HOST: localhost
74+
REDIS_PORT: 6379
75+
76+
# MongoDB configuration
77+
MONGODB_HOSTS: localhost:27018
78+
MONGODB_DATABASE: metadata
79+
80+
# Management backend
81+
MANAGEMENT_BACKEND: operator
82+
REMOTE_MANAGEMENT_DISABLE: "true"
83+
84+
# Cloudserver configuration (adjust to your CloudServer host/port)
85+
CLOUDSERVER_HOST: localhost
86+
CLOUDSERVER_PORT: 8000
87+
88+
# Replication source S3
89+
EXTENSIONS_REPLICATION_SOURCE_S3_HOST: localhost
90+
EXTENSIONS_REPLICATION_SOURCE_S3_PORT: 8000
91+
EXTENSIONS_REPLICATION_SOURCE_AUTH_TYPE: service
92+
EXTENSIONS_REPLICATION_SOURCE_AUTH_ACCOUNT: service-replication
93+
94+
# Replication destination
95+
EXTENSIONS_REPLICATION_DEST_AUTH_TYPE: service
96+
EXTENSIONS_REPLICATION_DEST_AUTH_ACCOUNT: service-replication
97+
EXTENSIONS_REPLICATION_DEST_BOOTSTRAPLIST: localhost:8001
98+
EXTENSIONS_REPLICATION_DEST_BOOTSTRAPLIST_MORE: '{"site": "wontwork-location", "type": "aws_s3"}, {"site": "aws-location", "type": "aws_s3"}'
99+
100+
# Lifecycle
101+
EXTENSIONS_LIFECYCLE_AUTH_TYPE: service
102+
EXTENSIONS_LIFECYCLE_AUTH_ACCOUNT: service-lifecycle
103+
104+
# Healthchecks
105+
HEALTHCHECKS_ALLOWFROM: "0.0.0.0/0"
106+
107+
# Logging
108+
LOG_LEVEL: info
109+
depends_on:
110+
mongodb-init:
111+
condition: service_completed_successfully
112+
kafka:
113+
condition: service_started
114+
redis:
115+
condition: service_started
116+
command: node bin/backbeat.js
117+
118+
backbeat-queue-processor:
119+
image: ghcr.io/scality/backbeat:latest # Or use a specific version like :9.1.3
120+
platform: linux/amd64
121+
network_mode: 'host'
122+
environment:
123+
# Kafka configuration
124+
KAFKA_HOSTS: localhost:9092
125+
KAFKA_COMPRESSION_TYPE: snappy
126+
127+
# Zookeeper configuration
128+
ZOOKEEPER_CONNECTION_STRING: localhost:2181/backbeat
129+
ZOOKEEPER_AUTO_CREATE_NAMESPACE: "true"
130+
131+
# Redis configuration
132+
REDIS_HOST: localhost
133+
REDIS_PORT: 6379
134+
135+
# MongoDB configuration
136+
MONGODB_HOSTS: localhost:27018
137+
MONGODB_DATABASE: metadata
138+
139+
# Management backend
140+
MANAGEMENT_BACKEND: operator
141+
REMOTE_MANAGEMENT_DISABLE: "true"
142+
143+
# Cloudserver configuration
144+
CLOUDSERVER_HOST: localhost
145+
CLOUDSERVER_PORT: 8000
146+
147+
# Replication source S3
148+
EXTENSIONS_REPLICATION_SOURCE_S3_HOST: localhost
149+
EXTENSIONS_REPLICATION_SOURCE_S3_PORT: 8000
150+
EXTENSIONS_REPLICATION_SOURCE_AUTH_TYPE: service
151+
EXTENSIONS_REPLICATION_SOURCE_AUTH_ACCOUNT: service-replication
152+
153+
# Replication destination
154+
EXTENSIONS_REPLICATION_DEST_AUTH_TYPE: service
155+
EXTENSIONS_REPLICATION_DEST_AUTH_ACCOUNT: service-replication
156+
EXTENSIONS_REPLICATION_DEST_BOOTSTRAPLIST: localhost:8001
157+
EXTENSIONS_REPLICATION_DEST_BOOTSTRAPLIST_MORE: '{"site": "wontwork-location", "type": "aws_s3"}, {"site": "aws-location", "type": "aws_s3"}'
158+
159+
# Probe server port
160+
LIVENESS_PROBE_PORT: 4043
161+
162+
# Logging
163+
LOG_LEVEL: info
164+
depends_on:
165+
- backbeat-api
166+
command: node extensions/replication/queueProcessor/task.js

.github/workflows/test.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,43 @@ jobs:
8686
- name: Stop Cloudserver
8787
if: always()
8888
run: docker compose -f .github/docker-compose.cloudserver-metadata.yml down
89+
90+
test-backbeat-apis:
91+
name: Test backbeat apis
92+
runs-on: ubuntu-latest
93+
needs: lint
94+
95+
steps:
96+
- name: Checkout code
97+
uses: actions/checkout@v4
98+
99+
- name: Setup Node.js
100+
uses: actions/setup-node@v4
101+
with:
102+
node-version: '20'
103+
cache: 'yarn'
104+
105+
- name: Install dependencies
106+
run: yarn install --frozen-lockfile
107+
108+
- name: Login to GitHub Container Registry
109+
uses: docker/login-action@v3
110+
with:
111+
registry: ghcr.io
112+
username: ${{ github.repository_owner }}
113+
password: ${{ github.token }}
114+
115+
- name: Start Cloudserver with MongoDB backend
116+
run: docker compose -f .github/docker-compose.cloudserver-mongo.yml up -d
117+
118+
- name: Wait for Cloudserver to be ready
119+
run: |
120+
set -o pipefail
121+
bash .github/scripts/wait_for_local_port.bash 8000 40
122+
123+
- name: Run backbeat apis tests
124+
run: yarn test:backbeat-apis
125+
126+
- name: Stop Cloudserver
127+
if: always()
128+
run: docker compose -f .github/docker-compose.cloudserver-mongo.yml down

0 commit comments

Comments
 (0)