Skip to content

Commit 9222baf

Browse files
add a helper to get dpeloyment marker
1 parent c634a8a commit 9222baf

File tree

4 files changed

+41
-57
lines changed

4 files changed

+41
-57
lines changed

tests/integration/lib/helpers.py

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99

1010
import pyhelm3
1111
from lightkube.models.meta_v1 import ObjectMeta
12-
from lightkube.resources.core_v1 import Endpoints, Namespace, Secret
12+
from lightkube.resources.core_v1 import ConfigMap, Endpoints, Namespace, Secret
1313

1414
from ..artifacts import CertKey, generate_cert
15-
from .fixtures import ESSData
16-
from .lib.utils import merge
15+
from .utils import merge
16+
import contextlib
1717

1818

1919
def namespace(name: str) -> Awaitable[Namespace]:
@@ -66,7 +66,7 @@ async def wait_for_endpoint_ready(name, namespace, cluster, kube_client):
6666

6767

6868
async def deploy_with_values_patch(
69-
generated_data: ESSData, helm_client: pyhelm3.Client, values_patch: dict
69+
generated_data, helm_client: pyhelm3.Client, values_patch: dict, timeout="600s"
7070
) -> pyhelm3.ReleaseRevision:
7171
# After the base chart is setup, we enable MAS to run the syn2mas dry run job
7272
revision = await helm_client.get_current_revision(
@@ -76,12 +76,30 @@ async def deploy_with_values_patch(
7676
values = merge(values, values_patch)
7777
chart = await helm_client.get_chart("charts/matrix-stack")
7878
# Install or upgrade a release
79-
revision = await helm_client.install_or_upgrade_release(
80-
generated_data.release_name,
81-
chart,
82-
values,
79+
error = None
80+
try:
81+
revision = await helm_client.install_or_upgrade_release(
82+
generated_data.release_name,
83+
chart,
84+
values,
85+
namespace=generated_data.ess_namespace,
86+
timeout=timeout,
87+
atomic=False,
88+
wait=True,
89+
)
90+
except pyhelm3.errors.Error as e:
91+
error = e
92+
revision = await helm_client.get_current_revision(
93+
generated_data.release_name, namespace=generated_data.ess_namespace
94+
)
95+
return revision, error
96+
97+
98+
async def get_deployment_marker(kube_client, generated_data, marker: str):
99+
# The marker should now show delegated_auth
100+
configmap = await kube_client.get(
101+
ConfigMap,
83102
namespace=generated_data.ess_namespace,
84-
atomic="CI" not in os.environ,
85-
wait=True,
103+
name=f"{generated_data.release_name}-markers",
86104
)
87-
return revision
105+
return configmap.data.get(marker)

tests/integration/test_matrix_authentication_service.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44

55
import pyhelm3
66
import pytest
7-
from lightkube.resources.core_v1 import ConfigMap
87

98
from .fixtures import ESSData
10-
from .lib.helpers import deploy_with_values_patch
9+
from .lib.helpers import deploy_with_values_patch, get_deployment_marker
1110
from .lib.utils import aiohttp_post_json, value_file_has
1211

1312

@@ -34,12 +33,7 @@ async def test_matrix_authentication_service_graphql_endpoint(ingress_ready, gen
3433
async def test_matrix_authentication_service_marker_delegated_auth(
3534
kube_client, helm_client: pyhelm3.Client, ingress_ready, generated_data: ESSData, ssl_context
3635
):
37-
configmap = await kube_client.get(
38-
ConfigMap,
39-
namespace=generated_data.ess_namespace,
40-
name=f"{generated_data.release_name}-markers",
41-
)
42-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "delegated_auth"
36+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "delegated_auth"
4337

4438
revision, error = await deploy_with_values_patch(
4539
generated_data, helm_client, {"matrixAuthenticationService": {"enabled": False}}, timeout="15s"

tests/integration/test_syn2mas.py

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
import pyhelm3
77
import pytest
88
from lightkube import AsyncClient
9-
from lightkube.resources.core_v1 import ConfigMap
109

1110
from .fixtures import ESSData
12-
from .lib.helpers import deploy_with_values_patch
11+
from .lib.helpers import deploy_with_values_patch, get_deployment_marker
1312
from .lib.utils import aiohttp_post_json, value_file_has
1413
from .test_matrix_authentication_service import test_matrix_authentication_service_graphql_endpoint
1514

@@ -28,13 +27,7 @@ async def test_run_syn2mas_upgrade(
2827
):
2928
access_token = users[0]
3029
await ingress_ready("synapse")
31-
configmap = await kube_client.get(
32-
ConfigMap,
33-
namespace=generated_data.ess_namespace,
34-
name=f"{generated_data.release_name}-markers",
35-
)
36-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "legacy_auth"
37-
30+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "legacy_auth"
3831
# After the base chart is setup, we enable MAS to run the syn2mas dry run job
3932
revision, error = await deploy_with_values_patch(
4033
generated_data, helm_client, {"matrixAuthenticationService": {"enabled": True}}
@@ -45,12 +38,7 @@ async def test_run_syn2mas_upgrade(
4538
await ingress_ready("synapse")
4639

4740
# Syn2Mas is running in dryRun mode, so the state has not changed yet
48-
configmap = await kube_client.get(
49-
ConfigMap,
50-
namespace=generated_data.ess_namespace,
51-
name=f"{generated_data.release_name}-markers",
52-
)
53-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "legacy_auth"
41+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "legacy_auth"
5442

5543
# After the base chart is setup, we enable MAS to run the syn2mas actual migration
5644
revision, error = await deploy_with_values_patch(
@@ -60,12 +48,7 @@ async def test_run_syn2mas_upgrade(
6048
assert revision.status == pyhelm3.ReleaseRevisionStatus.DEPLOYED
6149

6250
# Syn2Mas is running in migrate mode, so the state must have changed
63-
configmap = await kube_client.get(
64-
ConfigMap,
65-
namespace=generated_data.ess_namespace,
66-
name=f"{generated_data.release_name}-markers",
67-
)
68-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "syn2mas_migrated"
51+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "syn2mas_migrated"
6952

7053
# We should still be able to reach synapse ingress
7154
await ingress_ready("synapse")
@@ -92,14 +75,9 @@ async def test_run_syn2mas_upgrade(
9275
await test_matrix_authentication_service_graphql_endpoint(ingress_ready, generated_data, ssl_context)
9376

9477
# The marker should now show delegated_auth
95-
configmap = await kube_client.get(
96-
ConfigMap,
97-
namespace=generated_data.ess_namespace,
98-
name=f"{generated_data.release_name}-markers",
99-
)
100-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "delegated_auth"
101-
revision = await deploy_with_values_patch(
102-
generated_data, helm_client, {"matrixAuthenticationService": {"syn2mas": {"enabled": True}}}
78+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "delegated_auth"
79+
revision, error = await deploy_with_values_patch(
80+
generated_data, helm_client, {"matrixAuthenticationService": {"syn2mas": {"enabled": True}}}, timeout="15s"
10381
)
10482
assert error is not None
10583
assert revision.status == pyhelm3.ReleaseRevisionStatus.FAILED

tests/integration/test_synapse.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77

88
import pyhelm3
99
import pytest
10-
from lightkube.resources.core_v1 import ConfigMap
1110

1211
from .fixtures import ESSData
13-
from .lib.helpers import deploy_with_values_patch
12+
from .lib.helpers import deploy_with_values_patch, get_deployment_marker
1413
from .lib.synapse import assert_downloaded_content, download_media, upload_media
1514
from .lib.utils import KubeCtl, aiohttp_client, aiohttp_get_json, aiohttp_post_json, value_file_has
1615

@@ -124,13 +123,8 @@ async def test_rendezvous_cors_headers_are_only_set_with_mas(ingress_ready, gene
124123
async def test_synapse_service_marker_legacy_auth(
125124
kube_client, helm_client: pyhelm3.Client, ingress_ready, generated_data: ESSData, ssl_context
126125
):
127-
configmap = await kube_client.get(
128-
ConfigMap,
129-
namespace=generated_data.ess_namespace,
130-
name=f"{generated_data.release_name}-markers",
131-
)
132-
assert configmap.data.get("MATRIX_STACK_MSC3861") == "legacy_auth"
133-
revision = await deploy_with_values_patch(
126+
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "legacy_auth"
127+
revision, error = await deploy_with_values_patch(
134128
generated_data,
135129
helm_client,
136130
{"matrixAuthenticationService": {"enabled": True, "ingress": {"host": "account.{{ $.Values.serverName }}"}}},

0 commit comments

Comments
 (0)