]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Support for concurrent full-stack tests
authorJohn Schwarz <jschwarz@redhat.com>
Thu, 7 May 2015 12:22:41 +0000 (15:22 +0300)
committerJohn Schwarz <jschwarz@redhat.com>
Fri, 15 May 2015 06:45:39 +0000 (09:45 +0300)
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

neutron/tests/fullstack/config_fixtures.py
neutron/tests/fullstack/fullstack_fixtures.py
neutron/tests/fullstack/test_l3_agent.py

index 1666bd5d421b627a859978180dc8a26cfff22195..77756878fc90fe3469910cbca2f28c448d4ce2ce 100644 (file)
@@ -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',
index 526cffaccecd57fcd37f8befe0868eec601f5ecc..c06d450cb3d6192b0b894078f0dfee49c67142fa 100644 (file)
@@ -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)
 
index 29ae03f67fd6ed0a29605db92a97f18e075cc302..9b5e2476552a3ebbd5a0eca984bb223f0bf48390 100644 (file)
@@ -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()