3
3
4
4
import asyncio
5
5
import logging
6
- import time
7
6
8
7
import pytest
8
+ import tenacity
9
9
from pytest_operator .plugin import OpsTest
10
10
11
11
from . import juju_
18
18
TEST_APP_NAME = "mysql-test-app"
19
19
SLOW_TIMEOUT = 15 * 60
20
20
21
- if juju_ .has_secrets :
21
+ if juju_ .is_3_or_higher :
22
22
TLS_APP_NAME = "self-signed-certificates"
23
23
TLS_CONFIG = {"ca-common-name" : "Test CA" }
24
24
else :
@@ -34,7 +34,11 @@ async def test_build_deploy_and_relate(ops_test: OpsTest, mysql_router_charm_ser
34
34
async with ops_test .fast_forward ():
35
35
# deploy mysql first
36
36
await ops_test .model .deploy (
37
- MYSQL_APP_NAME , channel = "8.0/edge" , config = {"profile" : "testing" }, num_units = 1
37
+ MYSQL_APP_NAME ,
38
+ channel = "8.0/edge" ,
39
+ application_name = MYSQL_APP_NAME ,
40
+ config = {"profile" : "testing" },
41
+ num_units = 1 ,
38
42
)
39
43
40
44
# ROUTER
@@ -49,7 +53,11 @@ async def test_build_deploy_and_relate(ops_test: OpsTest, mysql_router_charm_ser
49
53
series = mysql_router_charm_series ,
50
54
),
51
55
ops_test .model .deploy (
52
- TLS_APP_NAME , application_name = TLS_APP_NAME , channel = "stable" , config = TLS_CONFIG
56
+ TLS_APP_NAME ,
57
+ application_name = TLS_APP_NAME ,
58
+ channel = "stable" ,
59
+ config = TLS_CONFIG ,
60
+ series = "jammy" ,
53
61
),
54
62
ops_test .model .deploy (
55
63
TEST_APP_NAME ,
@@ -78,39 +86,56 @@ async def test_connected_encryption(ops_test: OpsTest) -> None:
78
86
"""Test encryption when backend database is using TLS."""
79
87
mysqlrouter_unit = ops_test .model .applications [MYSQL_ROUTER_APP_NAME ].units [0 ]
80
88
81
- issuer = await get_tls_certificate_issuer (
82
- ops_test ,
83
- mysqlrouter_unit .name ,
84
- socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
85
- )
86
- assert (
87
- "Issuer: CN = MySQL_Router_Auto_Generated_CA_Certificate" in issuer
88
- ), "Expected mysqlrouter autogenerated certificate"
89
+ for attempt in tenacity .Retrying (
90
+ reraise = True ,
91
+ stop = tenacity .stop_after_delay (60 ),
92
+ wait = tenacity .wait_fixed (10 ),
93
+ ):
94
+ with attempt :
95
+ issuer = await get_tls_certificate_issuer (
96
+ ops_test ,
97
+ mysqlrouter_unit .name ,
98
+ socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
99
+ )
100
+ assert (
101
+ "Issuer: CN = MySQL_Router_Auto_Generated_CA_Certificate" in issuer
102
+ ), "Expected mysqlrouter autogenerated certificate"
89
103
90
104
logger .info ("Relating TLS with mysqlrouter" )
91
105
await ops_test .model .relate (TLS_APP_NAME , MYSQL_ROUTER_APP_NAME )
92
106
93
- time .sleep (30 )
94
-
95
107
logger .info ("Getting certificate issuer after relating with tls operator" )
96
- issuer = await get_tls_certificate_issuer (
97
- ops_test ,
98
- mysqlrouter_unit .name ,
99
- socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
100
- )
101
- assert "CN = Test CA" in issuer , f"Expected mysqlrouter certificate from { TLS_APP_NAME } "
108
+ for attempt in tenacity .Retrying (
109
+ reraise = True ,
110
+ stop = tenacity .stop_after_delay (60 ),
111
+ wait = tenacity .wait_fixed (10 ),
112
+ ):
113
+ with attempt :
114
+ issuer = await get_tls_certificate_issuer (
115
+ ops_test ,
116
+ mysqlrouter_unit .name ,
117
+ socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
118
+ )
119
+ assert (
120
+ "CN = Test CA" in issuer
121
+ ), f"Expected mysqlrouter certificate from { TLS_APP_NAME } "
102
122
103
123
logger .info ("Removing relation TLS with mysqlrouter" )
104
124
await ops_test .model .applications [MYSQL_ROUTER_APP_NAME ].remove_relation (
105
125
f"{ TLS_APP_NAME } :certificates" , f"{ MYSQL_ROUTER_APP_NAME } :certificates"
106
126
)
107
127
108
- time .sleep (30 )
109
- issuer = await get_tls_certificate_issuer (
110
- ops_test ,
111
- mysqlrouter_unit .name ,
112
- socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
113
- )
114
- assert (
115
- "Issuer: CN = MySQL_Router_Auto_Generated_CA_Certificate" in issuer
116
- ), "Expected mysqlrouter autogenerated CA certificate"
128
+ for attempt in tenacity .Retrying (
129
+ reraise = True ,
130
+ stop = tenacity .stop_after_delay (60 ),
131
+ wait = tenacity .wait_fixed (10 ),
132
+ ):
133
+ with attempt :
134
+ issuer = await get_tls_certificate_issuer (
135
+ ops_test ,
136
+ mysqlrouter_unit .name ,
137
+ socket = "/var/snap/charmed-mysql/common/run/mysqlrouter/mysql.sock" ,
138
+ )
139
+ assert (
140
+ "Issuer: CN = MySQL_Router_Auto_Generated_CA_Certificate" in issuer
141
+ ), "Expected mysqlrouter autogenerated CA certificate"
0 commit comments