|
24 | 24 | from e2e import service_marker, CRD_GROUP, CRD_VERSION, load_rds_resource
|
25 | 25 | from e2e.replacement_values import REPLACEMENT_VALUES
|
26 | 26 | from e2e import db_cluster_parameter_group
|
| 27 | +from e2e import db_parameter_group |
27 | 28 | from e2e import tag
|
28 | 29 | from e2e import condition
|
29 | 30 |
|
@@ -77,6 +78,49 @@ def aurora_mysql57_cluster_param_group():
|
77 | 78 | db_cluster_parameter_group.wait_until_deleted(resource_name)
|
78 | 79 |
|
79 | 80 |
|
| 81 | +@pytest.fixture |
| 82 | +def aurora_mysql80_logging_cluster_param_group(): |
| 83 | + resource_name = random_suffix_name("aurora-mysql8-logging", 32) |
| 84 | + |
| 85 | + replacements = REPLACEMENT_VALUES.copy() |
| 86 | + replacements["DB_CLUSTER_PARAMETER_GROUP_NAME"] = resource_name |
| 87 | + replacements["DB_CLUSTER_PARAMETER_GROUP_DESC"] = "Test MySQL logging parameters for Aurora MySQL 8.0" |
| 88 | + replacements["DB_CLUSTER_PARAMETER_GROUP_FAMILY"] = "aurora-mysql8.0" |
| 89 | + replacements["PARAM_SLOW_QUERY_LOG_VALUE"] = "1" |
| 90 | + replacements["PARAM_LONG_QUERY_TIME_VALUE"] = "10" |
| 91 | + replacements["PARAM_LOG_QUERIES_NOT_USING_INDEXES_VALUE"] = "1" |
| 92 | + |
| 93 | + resource_data = load_rds_resource( |
| 94 | + "db_cluster_parameter_group_aurora_mysql8.0_logging", |
| 95 | + additional_replacements=replacements, |
| 96 | + ) |
| 97 | + logging.debug(resource_data) |
| 98 | + |
| 99 | + # Create the k8s resource |
| 100 | + ref = k8s.CustomResourceReference( |
| 101 | + CRD_GROUP, CRD_VERSION, RESOURCE_PLURAL, |
| 102 | + resource_name, namespace="default", |
| 103 | + ) |
| 104 | + k8s.create_custom_resource(ref, resource_data) |
| 105 | + cr = k8s.wait_resource_consumed_by_controller(ref) |
| 106 | + time.sleep(CREATE_WAIT_AFTER_SECONDS) |
| 107 | + |
| 108 | + assert cr is not None |
| 109 | + assert k8s.get_resource_exists(ref) |
| 110 | + |
| 111 | + yield ref, cr, resource_name |
| 112 | + |
| 113 | + # Try to delete, if doesn't already exist |
| 114 | + try: |
| 115 | + _, deleted = k8s.delete_custom_resource(ref, 3, 10) |
| 116 | + assert deleted |
| 117 | + time.sleep(DELETE_WAIT_AFTER_SECONDS) |
| 118 | + except: |
| 119 | + pass |
| 120 | + |
| 121 | + db_cluster_parameter_group.wait_until_deleted(resource_name) |
| 122 | + |
| 123 | + |
80 | 124 | @service_marker
|
81 | 125 | @pytest.mark.canary
|
82 | 126 | class TestDBClusterParameterGroup:
|
@@ -161,3 +205,65 @@ def test_crud_aurora_mysql5_7(self, aurora_mysql57_cluster_param_group):
|
161 | 205 | assert "ParameterValue" in tp, f"No ParameterValue in parameter of name 'aurora_read_replica_read_committed': {tp}"
|
162 | 206 | assert tp["ParameterValue"] == "ON", f"Wrong value for parameter of name 'aurora_read_replica_read_committed': {tp}"
|
163 | 207 | assert found == 2, f"Did not find parameters with names 'aurora_binlog_read_buffer_size' and 'aurora_read_replica_read_committed': {test_params}"
|
| 208 | + |
| 209 | + def test_mysql_logging_parameters(self, aurora_mysql80_logging_cluster_param_group): |
| 210 | + ref, cr, resource_name = aurora_mysql80_logging_cluster_param_group |
| 211 | + |
| 212 | + latest = db_cluster_parameter_group.get(resource_name) |
| 213 | + assert latest is not None |
| 214 | + |
| 215 | + instance_defaults = db_parameter_group.get_engine_default_parameters("mysql8.0") |
| 216 | + assert instance_defaults is not None, "Failed to get instance-level engine defaults" |
| 217 | + |
| 218 | + fallback_params = list(filter(lambda x: x["ParameterName"] in [ |
| 219 | + "slow_query_log", |
| 220 | + "long_query_time", |
| 221 | + "log_queries_not_using_indexes", |
| 222 | + ], instance_defaults)) |
| 223 | + |
| 224 | + # Log debug info about found parameters |
| 225 | + found_param_names = [p['ParameterName'] for p in fallback_params] |
| 226 | + logging.debug(f"Found fallback parameters: {found_param_names}") |
| 227 | + |
| 228 | + assert len(fallback_params) == 3, f"Expected 3 MySQL logging parameters in instance defaults, found {len(fallback_params)}: {found_param_names}" |
| 229 | + |
| 230 | + for param in fallback_params: |
| 231 | + assert "ParameterName" in param, f"Missing ParameterName in fallback parameter: {param}" |
| 232 | + assert "IsModifiable" in param, f"Missing IsModifiable in fallback parameter: {param}" |
| 233 | + assert "ApplyType" in param, f"Missing ApplyType in fallback parameter: {param}" |
| 234 | + |
| 235 | + assert 'status' in cr |
| 236 | + assert 'parameterOverrideStatuses' in cr['status'] |
| 237 | + |
| 238 | + # Verify the parameter statuses show our MySQL logging parameters |
| 239 | + status_params = cr['status']['parameterOverrideStatuses'] |
| 240 | + param_names = [p['parameterName'] for p in status_params] |
| 241 | + |
| 242 | + assert "slow_query_log" in param_names, f"slow_query_log parameter missing from status: {param_names}" |
| 243 | + assert "long_query_time" in param_names, f"long_query_time parameter missing from status: {param_names}" |
| 244 | + assert "log_queries_not_using_indexes" in param_names, f"log_queries_not_using_indexes parameter missing from status: {param_names}" |
| 245 | + |
| 246 | + time.sleep(MODIFY_WAIT_AFTER_SECONDS) |
| 247 | + |
| 248 | + latest_params = db_cluster_parameter_group.get_parameters(resource_name) |
| 249 | + test_params = list(filter(lambda x: x["ParameterName"] in [ |
| 250 | + "slow_query_log", |
| 251 | + "long_query_time", |
| 252 | + "log_queries_not_using_indexes", |
| 253 | + ], latest_params)) |
| 254 | + |
| 255 | + # Check initial parameter values |
| 256 | + expected_initial_values = { |
| 257 | + "slow_query_log": "1", |
| 258 | + "long_query_time": "10", |
| 259 | + "log_queries_not_using_indexes": "1" |
| 260 | + } |
| 261 | + |
| 262 | + for tp in test_params: |
| 263 | + param_name = tp["ParameterName"] |
| 264 | + assert param_name in expected_initial_values, f"Unexpected parameter: {param_name}" |
| 265 | + assert tp["ParameterValue"] == expected_initial_values[param_name], \ |
| 266 | + f"Wrong value for {param_name}: expected {expected_initial_values[param_name]}, got {tp['ParameterValue']}" |
| 267 | + |
| 268 | + assert len(test_params) == len(expected_initial_values), \ |
| 269 | + f"Expected {len(expected_initial_values)} parameters, found {len(test_params)}: {test_params}" |
0 commit comments