Skip to content

Commit 2d083c4

Browse files
committed
Update created/delete e2e test to verify update
- Move creation of broker to fixture - Add test logic for validating update of broker
1 parent 713eedc commit 2d083c4

File tree

2 files changed

+93
-32
lines changed

2 files changed

+93
-32
lines changed

test/e2e/resources/broker_rabbitmq_non_public.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ spec:
1010
engineVersion: "$MQ_RABBITMQ_ENGINE_VERSION"
1111
hostInstanceType: $MQ_HOST_INSTANCE_TYPE
1212
publiclyAccessible: false
13+
maintenanceWindowStartTime:
14+
dayOfWeek: MONDAY
15+
timeOfDay: "22:00"
16+
timeZone: UTC
1317
users:
1418
- password:
1519
namespace: $ADMIN_USER_PASS_SECRET_NAMESPACE

test/e2e/tests/test_broker.py

Lines changed: 89 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
# longer appearing in the AMQ API...
3838
DELETE_TIMEOUT_SECONDS = 300
3939

40+
UPDATE_WAITE_INTERVAL_SLEEP_SECONDS = 20
41+
4042
CREATE_INTERVAL_SLEEP_SECONDS = 30
4143
# Time to wait before we get to an expected RUNNING state.
4244
# In my experience, it regularly takes more than 6 minutes to create a
@@ -103,6 +105,46 @@ def admin_user_pass_secret():
103105
yield ns, name, key
104106
k8s.delete_secret(ns, name)
105107

108+
@pytest.fixture(scope="module")
109+
def test_broker_nonpublic(admin_user_pass_secret):
110+
resource_name = random_suffix_name("my-rabbit-broker-non-public", 32)
111+
aup_sec_ns, aup_sec_name, aup_sec_key = admin_user_pass_secret
112+
113+
replacements = REPLACEMENT_VALUES.copy()
114+
replacements["BROKER_NAME"] = resource_name
115+
replacements["ADMIN_USER_PASS_SECRET_NAMESPACE"] = aup_sec_ns
116+
replacements["ADMIN_USER_PASS_SECRET_NAME"] = aup_sec_name
117+
replacements["ADMIN_USER_PASS_SECRET_KEY"] = aup_sec_key
118+
119+
resource_data = load_mq_resource(
120+
"broker_rabbitmq_non_public",
121+
additional_replacements=replacements,
122+
)
123+
logging.error(resource_data)
124+
125+
# Create the k8s resource
126+
ref = k8s.CustomResourceReference(
127+
CRD_GROUP, CRD_VERSION, RESOURCE_PLURAL,
128+
resource_name, namespace="default",
129+
)
130+
k8s.create_custom_resource(ref, resource_data)
131+
cr = k8s.wait_resource_consumed_by_controller(ref)
132+
133+
assert cr is not None
134+
135+
broker_id = cr['status']['brokerID']
136+
137+
yield ref, cr, broker_id
138+
139+
try:
140+
_, deleted = k8s.delete_custom_resource(ref, 3, 10)
141+
assert deleted
142+
time.sleep(DELETE_WAIT_AFTER_SECONDS)
143+
except:
144+
pass
145+
146+
wait_till_deleted(broker_id)
147+
106148
@pytest.fixture(scope="module")
107149
def test_broker_with_security_group(admin_user_pass_secret):
108150
resource_name = random_suffix_name("rabbitmq-security-group", 32)
@@ -183,37 +225,12 @@ def test_rabbitmq_nondefault_security_group(self, amq_client, test_broker_with_s
183225

184226

185227

186-
def test_create_delete_non_public(
228+
def test_crud_non_public(
187229
self,
188230
amq_client,
189-
admin_user_pass_secret,
231+
test_broker_nonpublic,
190232
):
191-
resource_name = random_suffix_name("my-rabbit-broker-non-public", 32)
192-
aup_sec_ns, aup_sec_name, aup_sec_key = admin_user_pass_secret
193-
194-
replacements = REPLACEMENT_VALUES.copy()
195-
replacements["BROKER_NAME"] = resource_name
196-
replacements["ADMIN_USER_PASS_SECRET_NAMESPACE"] = aup_sec_ns
197-
replacements["ADMIN_USER_PASS_SECRET_NAME"] = aup_sec_name
198-
replacements["ADMIN_USER_PASS_SECRET_KEY"] = aup_sec_key
199-
200-
resource_data = load_mq_resource(
201-
"broker_rabbitmq_non_public",
202-
additional_replacements=replacements,
203-
)
204-
logging.error(resource_data)
205-
206-
# Create the k8s resource
207-
ref = k8s.CustomResourceReference(
208-
CRD_GROUP, CRD_VERSION, RESOURCE_PLURAL,
209-
resource_name, namespace="default",
210-
)
211-
k8s.create_custom_resource(ref, resource_data)
212-
cr = k8s.wait_resource_consumed_by_controller(ref)
213-
214-
assert cr is not None
215-
216-
broker_id = cr['status']['brokerID']
233+
ref, cr, broker_id = test_broker_nonpublic
217234

218235
# Let's check that the Broker appears in AmazonMQ
219236
aws_res = amq_client.describe_broker(BrokerId=broker_id)
@@ -239,9 +256,49 @@ def test_create_delete_non_public(
239256
assert len(latest_res['status']['brokerInstances']) == 1
240257
assert len(latest_res['status']['brokerInstances'][0]['endpoints']) > 0
241258

242-
# Delete the k8s resource on teardown of the module
243-
k8s.delete_custom_resource(ref)
244-
time.sleep(DELETE_WAIT_AFTER_SECONDS)
245-
wait_till_deleted(broker_id)
259+
assert latest_res["spec"]["maintenanceWindowStartTime"] is not None
260+
assert latest_res["spec"]["maintenanceWindowStartTime"]["dayOfWeek"] == "MONDAY"
261+
assert latest_res["spec"]["maintenanceWindowStartTime"]["timeOfDay"] == "22:00"
262+
assert latest_res["spec"]["maintenanceWindowStartTime"]["timeZone"] == "UTC"
263+
264+
265+
# Update the broker's maintenance window
266+
maintenance_window_patch = {
267+
"spec": {
268+
"maintenanceWindowStartTime": {
269+
"dayOfWeek": "TUESDAY",
270+
"timeOfDay": "02:00",
271+
"timeZone": "UTC",
272+
}
273+
}
274+
}
275+
276+
k8s.patch_custom_resource(ref, maintenance_window_patch)
277+
time.sleep(UPDATE_WAITE_INTERVAL_SLEEP_SECONDS)
278+
279+
assert k8s.wait_on_condition(ref, "ACK.ResourceSynced", "True", wait_periods=5)
280+
281+
updated_res = k8s.get_resource(ref)
282+
assert updated_res["spec"]["maintenanceWindowStartTime"] is not None
283+
assert updated_res["spec"]["maintenanceWindowStartTime"]["dayOfWeek"] == "TUESDAY"
284+
assert updated_res["spec"]["maintenanceWindowStartTime"]["timeOfDay"] == "02:00"
285+
assert updated_res["spec"]["maintenanceWindowStartTime"]["timeZone"] == "UTC"
286+
287+
updated_broker = amq_client.describe_broker(BrokerId=broker_id)
288+
assert updated_broker['MaintenanceWindowStartTime'] is not None
289+
assert updated_broker['MaintenanceWindowStartTime']['DayOfWeek'] == "TUESDAY"
290+
assert updated_broker['MaintenanceWindowStartTime']['TimeOfDay'] == "02:00"
291+
assert updated_broker['MaintenanceWindowStartTime']['TimeZone'] == "UTC"
292+
293+
# Double check that other spec fields have not being set to nil.
294+
assert updated_res["spec"]["deploymentMode"] == "SINGLE_INSTANCE"
295+
296+
297+
298+
299+
300+
301+
302+
246303

247304

0 commit comments

Comments
 (0)