diff --git a/whitebox_neutron_tempest_plugin/tests/scenario/base.py b/whitebox_neutron_tempest_plugin/tests/scenario/base.py index 963db95..cbfebb3 100644 --- a/whitebox_neutron_tempest_plugin/tests/scenario/base.py +++ b/whitebox_neutron_tempest_plugin/tests/scenario/base.py @@ -405,11 +405,7 @@ class BaseTempestWhiteboxTestCase(base.BaseTempestTestCase): :param value(str): Value to set. """ assert param, "'param' must be supplied" - if WB_CONF.openstack_type == 'podified': - if node_type == 'compute': - raise cls.skipException( - "Setting computes configuration not supported yet on " - "podified setups (TODO).") + if WB_CONF.openstack_type == 'podified' and node_type != 'compute': service_pod = cls.get_pods_of_service(service)[0] # TODO(mblue): process ini in python instead of crudini command, # without depending on hardcoded conf filenames, crudini bin in pod @@ -542,7 +538,7 @@ class BaseTempestWhiteboxTestCase(base.BaseTempestTestCase): service_regex, host_ip) catch = ssh_client.exec_command( "systemctl --type=service | grep '{}'; true".format( - service_regex)).strip + service_regex)).strip() if catch: LOG.debug("Service found on host '%s':\n%s", host_ip, catch) diff --git a/whitebox_neutron_tempest_plugin/tests/scenario/test_metadata_rate_limiting.py b/whitebox_neutron_tempest_plugin/tests/scenario/test_metadata_rate_limiting.py index b99c7ae..6b750d8 100644 --- a/whitebox_neutron_tempest_plugin/tests/scenario/test_metadata_rate_limiting.py +++ b/whitebox_neutron_tempest_plugin/tests/scenario/test_metadata_rate_limiting.py @@ -49,7 +49,10 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): cls.metadata_conf_file = ( '/etc/neutron/neutron_ovn_metadata_agent.ini') else: - cls.metadata_conf_file = cls.neutron_conf + cls.metadata_conf_file = ( + '/var/lib/config-data/ansible-generated/' + 'neutron-ovn-metadata-agent/' + '01-neutron-ovn-metadata-agent.conf') # OSP resources cls.rand_name = data_utils.rand_name( cls.__name__.rsplit('.', 1)[-1]) @@ -58,11 +61,6 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): name=data_utils.rand_name('secgroup')) cls.create_loginable_secgroup_rule( cls.secgroup['security_group']['id']) - # enable metadata rate limiting feature - cls.cmd_base = 'sudo crudini --set ' + cls.metadata_conf_file\ - + ' metadata_rate_limiting' - LOG.debug("Enable the metadata rate limiting using configuration.") - cls._set_rate_limiting_config(rate_limit_enabled='true') @classmethod def run_cmd_on_nodes(cls, cmd): @@ -90,8 +88,6 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): Args: - **kwargs: Configuration parameters as key-value pairs. """ - # TODO(mblue): when conf change supported on computes in podified env, - # verify test fully instead of skipping. for key, value in kwargs.items(): if value is not None: LOG.debug( @@ -100,16 +96,17 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): 'Section - metadata_rate_limiting\n' f'Parameter - {key}\n' f'Value - {value}\n') - if WB_CONF.openstack_type == 'podified': - cls.set_service_setting( - 'compute', - cls.metadata_conf_file, - 'metadata_rate_limiting', - key, value) - else: - cls.run_cmd_on_nodes(f"{cls.cmd_base} {key} {value}") + cls.set_service_setting( + 'compute', + cls.metadata_conf_file, + 'metadata_rate_limiting', + key, value) cls._restart_metadata_agent() + def tearDown(self): + super().tearDown() + self._reset_config() + @classmethod def resource_cleanup(cls): super(TestMetadataRateLimiting, cls).resource_cleanup() @@ -118,18 +115,14 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): @classmethod def _reset_config(cls): - """Reset the metadata rate limiting configuration.""" - # NOTE(mblue): 'oc patch' can't remove values, max count over min time - min_duration = 1 - max_rate = 2 ** 16 - 2 - cls._set_rate_limiting_config( - base_query_rate_limit=max_rate, - burst_window_duration=min_duration, - burst_query_rate_limit=max_rate, - base_window_duration=min_duration - ) + """Reset/remove the metadata rate limiting configuration.""" LOG.debug( - "Set metadata rate limiting configuration permissive values.") + "Removing metadata rate limiting configuration.") + cls.run_group_cmd( + 'sudo crudini --del {} {} && sudo sync'.format( + cls.metadata_conf_file, + 'metadata_rate_limiting'), + 'compute') @classmethod def _disable_metadata_rate_limiting_config(cls): @@ -205,6 +198,7 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): # modify the configuration for limiting self._set_rate_limiting_config( + rate_limit_enabled='true', base_query_rate_limit=base_query_rate_limit, base_window_duration=base_window_duration ) @@ -219,7 +213,6 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): sleep(base_window_duration) self._test_limiting(base_query_rate_limit, vm) - self._reset_config() @decorators.idempotent_id('16381121-8a23-41db-8167-390c7ba1fe77') def test_metadata_burst_rate_limiting(self): @@ -242,6 +235,7 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): LOG.debug("Test the metadata service's burst rate limiting") # modify the configuration for limiting self._set_rate_limiting_config( + rate_limit_enabled='true', base_query_rate_limit=base_query_rate_limit, burst_window_duration=burst_window_duration, burst_query_rate_limit=burst_query_rate_limit, @@ -265,7 +259,6 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): # "Too Many Requests" after exceeding the burst query rate limit sleep(burst_window_duration * 2) self._test_limiting(burst_query_rate_limit, vm) - self._reset_config() @decorators.idempotent_id('d564beda-5860-4c5f-96ac-13eb0995f7b7') def test_metadata_base_and_burst_rate_limiting(self): @@ -290,6 +283,7 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): # Set rate limiting configuration self._set_rate_limiting_config( + rate_limit_enabled='true', base_query_rate_limit=base_query_rate_limit, burst_window_duration=burst_window_duration, burst_query_rate_limit=burst_query_rate_limit, @@ -313,4 +307,3 @@ class TestMetadataRateLimiting(wb_base.BaseTempestWhiteboxTestCase): # Send additional requests to verify they're within the base limit # but not the burst limit self._test_limiting(base_query_rate_limit - burst_query_rate_limit, vm) - self._reset_config() diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml index 731af34..2165a53 100644 --- a/zuul.d/master_jobs.yaml +++ b/zuul.d/master_jobs.yaml @@ -447,7 +447,10 @@ (^whitebox_neutron_tempest_plugin.*test_previously_used_ip)|\ (^whitebox_neutron_tempest_plugin.tests.scenario.test_ovn_dbs.OvnDbsMonitoringTest.*)|\ (^whitebox_neutron_tempest_plugin.*ovn_controller_restart)" - tempest_exclude_regex: "" + # NOTE(mblue): Enable metadata rate limiting tests + # when OSPRH-9569 is resolved (feature code available in RHOSO). + tempest_exclude_regex: "\ + (^whitebox_neutron_tempest_plugin.tests.scenario.test_metadata_rate_limiting)" - job: name: whitebox-neutron-tempest-plugin-openvswitch