Skip to content

Commit

Permalink
Backport: "Federation V1 test setup (#4125)" (#4237)
Browse files Browse the repository at this point in the history
* Initial v1 docker-compose setup

* Update service configuration in federation-v1

* Improve run script

* Rename federation-v0 and federation-v1 services

* Make federation-v* optional

* Allow PTest to use IO

* Introduce VersionedFed

* Setup federation-v1 in integration tests

* Fix coredns network

* Use legacy backends in some of the tests

* Fix background worker config in fed-v1

* federation-v0 and -v1 configuration for integration tests

* fix linter

* fix Helm chart for integration tests

* Add CHANGELOG entry

* Enable debug log level for federator

* Disable one of the tests on legacy backends

---------

Co-authored-by: Stefan Berthold <[email protected]>
  • Loading branch information
pcapriotti and stefanwire committed Sep 12, 2024
1 parent 9cd1ab9 commit e221dea
Show file tree
Hide file tree
Showing 61 changed files with 2,004 additions and 185 deletions.
1 change: 1 addition & 0 deletions changelog.d/5-internal/federation-v1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add federation-v1 environment for testing compatibility of the federation API with version 1
41 changes: 41 additions & 0 deletions charts/integration/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,44 @@ data:
stern:
host: stern.wire-federation-v0.svc.cluster.local
port: 8080
federation-v1:
originDomain: federation-test-helper.wire-federation-v1.svc.cluster.local
brig:
host: brig.wire-federation-v1.svc.cluster.local
port: 8080
cannon:
host: cannon.wire-federation-v1.svc.cluster.local
port: 8080
cargohold:
host: cargohold.wire-federation-v1.svc.cluster.local
port: 8080
federatorInternal:
host: federator.wire-federation-v1.svc.cluster.local
port: 8080
federatorExternal:
host: federator.wire-federation-v1.svc.cluster.local
port: 8081
galley:
host: galley.wire-federation-v1.svc.cluster.local
port: 8080
gundeck:
host: gundeck.wire-federation-v1.svc.cluster.local
port: 8080
nginz:
host: nginz-integration-http.wire-federation-v1.svc.cluster.local
port: 8080
spar:
host: spar.wire-federation-v1.svc.cluster.local
port: 8080
proxy:
host: proxy.wire-federation-v1.svc.cluster.local
port: 8080
backgroundWorker:
host: backgroundWorker.wire-federation-v1.svc.cluster.local
port: 8080
stern:
host: stern.wire-federation-v1.svc.cluster.local
port: 8080
integrationTestHostName: integration-headless.{{ .Release.Namespace }}.svc.cluster.local
4 changes: 4 additions & 0 deletions charts/integration/templates/integration-integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -280,3 +280,7 @@ spec:
key: uploadXmlAwsSecretAccessKey
{{- end }}
{{- end }}
- name: ENABLE_FEDERATION_V0
value: "1"
- name: ENABLE_FEDERATION_V1
value: "1"
1 change: 1 addition & 0 deletions deploy/dockerephemeral/coredns-config/db.example.com
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ _wire-server-federator._tcp.d1 IN SRV 0 0 10443 localhost.
_wire-server-federator._tcp.d2 IN SRV 0 0 11443 localhost.
_wire-server-federator._tcp.d3 IN SRV 0 0 12443 localhost.
_wire-server-federator._tcp.federation-v0 IN SRV 0 0 21443 localhost.
_wire-server-federator._tcp.federation-v1 IN SRV 0 0 22443 localhost.
7 changes: 6 additions & 1 deletion deploy/dockerephemeral/docker/elasticmq.conf
Original file line number Diff line number Diff line change
Expand Up @@ -43,38 +43,43 @@ queues {
integration-brig-events4 = ${queues.default-queue-template}
integration-brig-events5 = ${queues.default-queue-template}
integration-brig-events-federation-v0 = ${queues.default-queue-template}
integration-brig-events-federation-v1 = ${queues.default-queue-template}

integration-brig-events-internal = ${queues.default-queue-template}
integration-brig-events-internal2 = ${queues.default-queue-template}
integration-brig-events-internal3 = ${queues.default-queue-template}
integration-brig-events-internal4 = ${queues.default-queue-template}
integration-brig-events-internal5 = ${queues.default-queue-template}
integration-brig-events-internal-federation-v0 = ${queues.default-queue-template}
integration-brig-events-internal-federation-v1 = ${queues.default-queue-template}

"integration-user-events.fifo" = ${queues.fifo-queue-template}
"integration-user-events2.fifo" = ${queues.fifo-queue-template}
"integration-user-events3.fifo" = ${queues.fifo-queue-template}
"integration-user-events4.fifo" = ${queues.fifo-queue-template}
"integration-user-events5.fifo" = ${queues.fifo-queue-template}
"integration-user-events-federation-v0.fifo" = ${queues.fifo-queue-template}
"integration-user-events-federation-v1.fifo" = ${queues.fifo-queue-template}

integration-gundeck-events = ${queues.default-queue-template}
integration-gundeck-events2 = ${queues.default-queue-template}
integration-gundeck-events3 = ${queues.default-queue-template}
integration-gundeck-events4 = ${queues.default-queue-template}
integration-gundeck-events5 = ${queues.default-queue-template}
integration-gundeck-events-federation-v0 = ${queues.default-queue-template}
integration-gundeck-events-federation-v1 = ${queues.default-queue-template}

"integration-team-events.fifo" = ${queues.fifo-queue-template}
"integration-team-events2.fifo" = ${queues.fifo-queue-template}
"integration-team-events3.fifo" = ${queues.fifo-queue-template}
"integration-team-events4.fifo" = ${queues.fifo-queue-template}
"integration-team-events5.fifo" = ${queues.fifo-queue-template}
"integration-team-events-federation-v0.fifo" = ${queues.fifo-queue-template}
"integration-team-events-federation-v1.fifo" = ${queues.fifo-queue-template}
}

# Region and accountId which will be included in resource ids
aws {
region = eu-west-1
accountId = 000000000000
}
}
66 changes: 36 additions & 30 deletions deploy/dockerephemeral/federation-v0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ networks:
demo_wire:
external: false

coredns:
external: false

services:
brig_schema:
brig_schema-v0:
container_name: brig-schema-federation-v0
image: quay.io/wire/brig-schema:4.38.51
command: --host cassandra --keyspace brig_test_federation_v0 --replication-factor 1
Expand All @@ -17,7 +20,7 @@ services:
condition: on-failure
networks:
- demo_wire
brig:
brig-v0:
container_name: brig-federation-v0
image: quay.io/wire/brig:4.38.0-mandarin.14
volumes:
Expand All @@ -29,7 +32,7 @@ services:
healthcheck: &haskell_health_check
test: "curl --fail localhost:8080/i/status"
depends_on:
brig_schema:
brig_schema-v0:
condition: service_completed_successfully
aws_cli:
condition: service_completed_successfully
Expand All @@ -43,7 +46,7 @@ services:
- RABBITMQ_USERNAME=${RABBITMQ_USERNAME}
- RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}

galley_schema:
galley_schema-v0:
container_name: galley-schema-federation-v0
image: quay.io/wire/galley-schema:4.38.51
command: --host cassandra --keyspace galley_test_federation_v0 --replication-factor 1
Expand All @@ -56,7 +59,7 @@ services:
networks:
- demo_wire

galley:
galley-v0:
container_name: galley-federation-v0
image: quay.io/wire/galley:4.38.0-mandarin.14
volumes:
Expand All @@ -67,7 +70,7 @@ services:
- '127.0.0.1:21085:8080'
healthcheck: *haskell_health_check
depends_on:
galley_schema:
galley_schema-v0:
condition: service_completed_successfully
aws_cli:
condition: service_completed_successfully
Expand All @@ -81,7 +84,7 @@ services:
- RABBITMQ_USERNAME=${RABBITMQ_USERNAME}
- RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}

cargohold:
cargohold-v0:
container_name: cargohold-federation-v0
image: quay.io/wire/cargohold:4.38.0-mandarin.14
volumes:
Expand All @@ -100,7 +103,7 @@ services:
- AWS_ACCESS_KEY_ID=dummykey
- AWS_SECRET_ACCESS_KEY=dummysecret

gundeck_schema:
gundeck_schema-v0:
container_name: gundeck-schema-federation-v0
image: quay.io/wire/gundeck-schema:4.38.51
command: --host cassandra --keyspace gundeck_test_federation_v0 --replication-factor 1
Expand All @@ -113,7 +116,7 @@ services:
networks:
- demo_wire

gundeck:
gundeck-v0:
container_name: gundeck-federation-v0
image: quay.io/wire/gundeck:4.38.0-mandarin.14
volumes:
Expand All @@ -124,19 +127,19 @@ services:
- '127.0.0.1:21086:8080'
healthcheck: *haskell_health_check
depends_on:
gundeck_schema:
gundeck_schema-v0:
condition: service_completed_successfully
aws_cli:
condition: service_completed_successfully
redis:
redis-v0:
condition: service_started

environment:
- AWS_REGION=eu-west-1
- AWS_ACCESS_KEY_ID=dummykey
- AWS_SECRET_ACCESS_KEY=dummysecret

spar_schema:
spar_schema-v0:
container_name: spar-schema-federation-v0
image: quay.io/wire/spar-schema:4.38.51
command: --host cassandra --keyspace spar_test_federation_v0 --replication-factor 1
Expand All @@ -149,7 +152,7 @@ services:
networks:
- demo_wire

spar:
spar-v0:
container_name: spar-federation-v0
image: quay.io/wire/spar:4.38.0-mandarin.14
volumes:
Expand All @@ -160,10 +163,10 @@ services:
- '127.0.0.1:21088:8080'
healthcheck: *haskell_health_check
depends_on:
spar_schema:
spar_schema-v0:
condition: service_completed_successfully

cannon:
cannon-v0:
container_name: cannon-federation-v0
image: quay.io/wire/cannon:4.38.0-mandarin.14
volumes:
Expand All @@ -174,7 +177,7 @@ services:
- '127.0.0.1:21083:8080'
healthcheck: *haskell_health_check

federator:
federator-v0:
container_name: federator-federation-v0
image: quay.io/wire/federator:4.38.0-mandarin.14
volumes:
Expand All @@ -191,10 +194,10 @@ services:
healthcheck:
test: "true"
depends_on:
coredns-federation:
coredns-federation-v0:
condition: service_started

background_worker:
background_worker-v0:
container_name: background-worker-federation-v0
image: quay.io/wire/background-worker:4.38.0-mandarin.14
volumes:
Expand All @@ -203,14 +206,15 @@ services:
- demo_wire
ports:
- '127.0.0.1:21089:8080'
healthcheck: *haskell_health_check
depends_on:
init_vhosts:
condition: service_completed_successfully
environment:
- RABBITMQ_USERNAME=${RABBITMQ_USERNAME}
- RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}

proxy:
proxy-v0:
container_name: proxy-federation-v0
image: quay.io/wire/proxy:4.38.0-mandarin.14
volumes:
Expand All @@ -221,7 +225,7 @@ services:
- '127.0.0.1:21087:8080'
healthcheck: *haskell_health_check

nginz:
nginz-v0:
container_name: nginz-federation-v0
image: quay.io/wire/nginz:4.38.0-mandarin.14
volumes:
Expand All @@ -232,34 +236,36 @@ services:
- '127.0.0.1:21080:8080'
- '127.0.0.1:21443:8443'
depends_on:
brig:
brig-v0:
condition: service_healthy
galley-v0:
condition: service_healthy
galley:
gundeck-v0:
condition: service_healthy
gundeck:
cargohold-v0:
condition: service_healthy
cargohold:
cannon-v0:
condition: service_healthy
cannon:
spar-v0:
condition: service_healthy
spar:
federator-v0:
condition: service_healthy
federator:
proxy-v0:
condition: service_healthy
proxy:
background_worker-v0:
condition: service_healthy

# We have to run a separate redis instance for each version of wire-server we
# want. This is because gundeck just assumes the whole redis is for itself
redis:
redis-v0:
container_name: redis-federation-v0
image: redis:6.0-alpine
networks:
- demo_wire

# This coredns serves slightly different SRV records, so federator running in
# a docker container can talk to federator running on the host.
coredns-federation:
coredns-federation-v0:
image: docker.io/coredns/coredns:1.8.4
volumes:
- ./federation-v0/coredns-config:/coredns-config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ _wire-server-federator._tcp.b IN SRV 0 0 9443 host.docker.internal.
_wire-server-federator._tcp.d1 IN SRV 0 0 10443 host.docker.internal.
_wire-server-federator._tcp.d2 IN SRV 0 0 11443 host.docker.internal.
_wire-server-federator._tcp.d3 IN SRV 0 0 12443 host.docker.internal.
_wire-server-federator._tcp.v0 IN SRV 0 0 21443 host.docker.internal.
_wire-server-federator._tcp.federation-v0 IN SRV 0 0 21443 host.docker.internal.
_wire-server-federator._tcp.federation-v1 IN SRV 0 0 22443 host.docker.internal.
16 changes: 8 additions & 8 deletions deploy/dockerephemeral/federation-v0/nginz/upstreams
Original file line number Diff line number Diff line change
@@ -1,38 +1,38 @@
upstream cargohold {
least_conn;
keepalive 32;
server cargohold:8080 max_fails=3 weight=1;
server cargohold-v0:8080 max_fails=3 weight=1;
}
upstream gundeck {
least_conn;
keepalive 32;
server gundeck:8080 max_fails=3 weight=1;
server gundeck-v0:8080 max_fails=3 weight=1;
}
upstream cannon {
least_conn;
keepalive 32;
server cannon:8080 max_fails=3 weight=1;
server cannon-v0:8080 max_fails=3 weight=1;
}
upstream galley {
least_conn;
keepalive 32;
server galley:8080 max_fails=3 weight=1;
server galley-v0:8080 max_fails=3 weight=1;
}
upstream proxy {
least_conn;
keepalive 32;
server proxy:8080 max_fails=3 weight=1;
server proxy-v0:8080 max_fails=3 weight=1;
}
upstream brig {
least_conn;
keepalive 32;
server brig:8080 max_fails=3 weight=1;
server brig-v0:8080 max_fails=3 weight=1;
}
upstream spar {
least_conn;
keepalive 32;
server spar:8080 max_fails=3 weight=1;
server spar-v0:8080 max_fails=3 weight=1;
}
upstream federator_external {
server federator:8081 max_fails=3 weight=1;
server federator-v0:8081 max_fails=3 weight=1;
}
Loading

0 comments on commit e221dea

Please sign in to comment.