From: John Schwarz Date: Thu, 7 May 2015 12:22:41 +0000 (+0300) Subject: Support for concurrent full-stack tests X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=cc1efd085524cd30d6a238a584df193133d27015;p=openstack-build%2Fneutron-build.git Support for concurrent full-stack tests This patch introduces the last step of complete test separation for full-stack tests - separate rabbitmq queues - in the form of rabbitmq virtual hosts. * This patch also renames EnvironmentFixture to FullstackFixture, for clarity. Change-Id: I24776e3970a73fdd3271023da7967f2c7261621b Closes-bug: #1452737 --- diff --git a/neutron/tests/fullstack/config_fixtures.py b/neutron/tests/fullstack/config_fixtures.py index 1666bd5d4..77756878f 100644 --- a/neutron/tests/fullstack/config_fixtures.py +++ b/neutron/tests/fullstack/config_fixtures.py @@ -97,7 +97,7 @@ class ConfigFixture(fixtures.Fixture): class NeutronConfigFixture(ConfigFixture): - def __init__(self, temp_dir, connection): + def __init__(self, temp_dir, connection, rabbitmq_environment): super(NeutronConfigFixture, self).__init__( temp_dir, base_filename='neutron.conf') @@ -112,9 +112,10 @@ class NeutronConfigFixture(ConfigFixture): 'core_plugin': 'neutron.plugins.ml2.plugin.Ml2Plugin', 'service_plugins': ('neutron.services.l3_router.' 'l3_router_plugin.L3RouterPlugin'), - 'rabbit_userid': 'stackrabbit', - 'rabbit_password': '127.0.0.1', + 'rabbit_userid': rabbitmq_environment.user, + 'rabbit_password': rabbitmq_environment.password, 'rabbit_hosts': '127.0.0.1', + 'rabbit_virtual_host': rabbitmq_environment.vhost, 'auth_strategy': 'noauth', 'verbose': 'True', 'debug': 'True', diff --git a/neutron/tests/fullstack/fullstack_fixtures.py b/neutron/tests/fullstack/fullstack_fixtures.py index 526cffacc..c06d450cb 100644 --- a/neutron/tests/fullstack/fullstack_fixtures.py +++ b/neutron/tests/fullstack/fullstack_fixtures.py @@ -64,15 +64,39 @@ class ProcessFixture(fixtures.Fixture): super(ProcessFixture, self).cleanUp(*args, **kwargs) -class EnvironmentFixture(fixtures.Fixture): +class RabbitmqEnvironmentFixture(fixtures.Fixture): + def setUp(self): + super(RabbitmqEnvironmentFixture, self).setUp() + + self.user = base.get_rand_name(prefix='user') + self.password = base.get_rand_name(prefix='pass') + self.vhost = base.get_rand_name(prefix='vhost') + + self._execute('add_user', self.user, self.password) + self.addCleanup(self._execute, 'delete_user', self.user) + + self._execute('add_vhost', self.vhost) + self.addCleanup(self._execute, 'delete_vhost', self.vhost) + + self._execute('set_permissions', '-p', self.vhost, self.user, + '.*', '.*', '.*') + + def _execute(self, *args): + cmd = ['rabbitmqctl'] + cmd.extend(args) + utils.execute(cmd, run_as_root=True) + + +class FullstackFixture(fixtures.Fixture): def setUp(self): - super(EnvironmentFixture, self).setUp() + super(FullstackFixture, self).setUp() self.temp_dir = self.useFixture(fixtures.TempDir()).path + rabbitmq_environment = self.useFixture(RabbitmqEnvironmentFixture()) self.neutron_server = self.useFixture( - NeutronServerFixture(self.temp_dir)) + NeutronServerFixture(self.temp_dir, rabbitmq_environment)) def wait_until_env_is_up(self, agents_count=0): utils.wait_until_true( @@ -92,14 +116,16 @@ class NeutronServerFixture(fixtures.Fixture): NEUTRON_SERVER = "neutron-server" - def __init__(self, temp_dir): + def __init__(self, temp_dir, rabbitmq_environment): self.temp_dir = temp_dir + self.rabbitmq_environment = rabbitmq_environment def setUp(self): super(NeutronServerFixture, self).setUp() self.neutron_cfg_fixture = config_fixtures.NeutronConfigFixture( - self.temp_dir, cfg.CONF.database.connection) + self.temp_dir, cfg.CONF.database.connection, + self.rabbitmq_environment) self.plugin_cfg_fixture = config_fixtures.ML2ConfigFixture( self.temp_dir) diff --git a/neutron/tests/fullstack/test_l3_agent.py b/neutron/tests/fullstack/test_l3_agent.py index 29ae03f67..9b5e24765 100644 --- a/neutron/tests/fullstack/test_l3_agent.py +++ b/neutron/tests/fullstack/test_l3_agent.py @@ -21,7 +21,7 @@ from neutron.tests.fullstack import base from neutron.tests.fullstack import fullstack_fixtures as f_fixtures -class SingleNodeEnvironment(f_fixtures.EnvironmentFixture): +class SingleNodeEnvironment(f_fixtures.FullstackFixture): def setUp(self): super(SingleNodeEnvironment, self).setUp()