From c72616335717450edaa95f4ecb046f9e68692deb Mon Sep 17 00:00:00 2001 From: Morgan Fainberg Date: Thu, 13 Mar 2014 15:01:38 -0700 Subject: [PATCH] Make LIVE Tests configurable with ENV To enable ldap live test, set the environmental variable ``ENABLE_LDAP_LIVE_TESTS`` to a non-false value. To enable tls ldap live test, set the environmental variable ``ENABLE_TLS_LDAP_LIVE_TESTS`` to a non-false value. To enable mysql sql live test, set the environmental variable ``ENABLE_LIVE_MYSQL_TESTS`` to a non-false value. To enable postgres sql live test, set the environmental variable ``ENABLE_LIVE_POSTGRES_TESTS`` to a non-false value. To enable db2 sql live test, set the environmental variable ``ENABLE_LIVE_DB2_TESTS`` to a non-false value. This allows for running all tests in a standard run by simply setting the appropriate environmental variables. This moves the live tests to be skips if the specific live-test environmental variables are not set. Change-Id: I8c09a8dcfca3f9691306c5f416f688205171bda3 Closes-Bug: 1243392 --- doc/source/developing.rst | 6 +++++- keystone/tests/core.py | 4 ++++ ...ldap_livetest.py => test_ldap_livetest.py} | 7 +++++++ ..._livetest.py => test_ldap_tls_livetest.py} | 7 +++++-- ...{_sql_livetest.py => test_sql_livetest.py} | 20 +++++++++++++++++++ 5 files changed, 41 insertions(+), 3 deletions(-) rename keystone/tests/{_ldap_livetest.py => test_ldap_livetest.py} (98%) rename keystone/tests/{_ldap_tls_livetest.py => test_ldap_tls_livetest.py} (95%) rename keystone/tests/{_sql_livetest.py => test_sql_livetest.py} (76%) diff --git a/doc/source/developing.rst b/doc/source/developing.rst index b0a49023bb..ddea69b064 100644 --- a/doc/source/developing.rst +++ b/doc/source/developing.rst @@ -304,10 +304,14 @@ and set environment variables ``KEYSTONE_IDENTITY_BACKEND=ldap`` and ``KEYSTONE_CLEAR_LDAP=yes`` in your ``localrc`` file. The unit tests can be run against a live server with -``keystone/tests/_ldap_livetest.py``. The default password is ``test`` but if you have +``keystone/tests/test_ldap_livetest.py``. The default password is ``test`` but if you have installed devstack with a different LDAP password, modify the file ``keystone/tests/backend_liveldap.conf`` to reflect your password. +.. NOTE:: + To run the live tests you need to set the environment variable ``ENABLE_LDAP_LIVE_TEST`` + to a non-negative value. + Generating Updated Sample Config File ------------------------------------- diff --git a/keystone/tests/core.py b/keystone/tests/core.py index 2b3187fc69..705c28f28f 100644 --- a/keystone/tests/core.py +++ b/keystone/tests/core.py @@ -685,6 +685,10 @@ class TestCase(BaseTestCase): if not self.ipv6_enabled: raise self.skipTest("IPv6 is not enabled in the system") + def skip_if_env_not_set(self, env_var): + if not os.environ.get(env_var): + self.skipTest('Env variable %s is not set.' % env_var) + def assertSetEqual(self, set1, set2, msg=None): # TODO(morganfainberg): Remove this and self._assertSetEqual once # support for python 2.6 is no longer needed. diff --git a/keystone/tests/_ldap_livetest.py b/keystone/tests/test_ldap_livetest.py similarity index 98% rename from keystone/tests/_ldap_livetest.py rename to keystone/tests/test_ldap_livetest.py index 01584fb039..74f2502dc7 100644 --- a/keystone/tests/_ldap_livetest.py +++ b/keystone/tests/test_ldap_livetest.py @@ -38,6 +38,13 @@ def create_object(dn, attrs): class LiveLDAPIdentity(test_backend_ldap.LDAPIdentity): + def setUp(self): + self._ldap_skip_live() + super(LiveLDAPIdentity, self).setUp() + + def _ldap_skip_live(self): + self.skip_if_env_not_set('ENABLE_LDAP_LIVE_TEST') + def clear_database(self): devnull = open('/dev/null', 'w') subprocess.call(['ldapdelete', diff --git a/keystone/tests/_ldap_tls_livetest.py b/keystone/tests/test_ldap_tls_livetest.py similarity index 95% rename from keystone/tests/_ldap_tls_livetest.py rename to keystone/tests/test_ldap_tls_livetest.py index b67761f48d..79bf0af5bc 100644 --- a/keystone/tests/_ldap_tls_livetest.py +++ b/keystone/tests/test_ldap_tls_livetest.py @@ -20,7 +20,7 @@ from keystone import config from keystone import exception from keystone import identity from keystone import tests -from keystone.tests import _ldap_livetest +from keystone.tests import test_ldap_livetest CONF = config.CONF @@ -34,7 +34,10 @@ def create_object(dn, attrs): conn.unbind_s() -class LiveTLSLDAPIdentity(_ldap_livetest.LiveLDAPIdentity): +class LiveTLSLDAPIdentity(test_ldap_livetest.LiveLDAPIdentity): + + def _ldap_skip_live(self): + self.skip_if_env_not_set('ENABLE_TLS_LDAP_LIVE_TEST') def config_files(self): config_files = super(LiveTLSLDAPIdentity, self).config_files() diff --git a/keystone/tests/_sql_livetest.py b/keystone/tests/test_sql_livetest.py similarity index 76% rename from keystone/tests/_sql_livetest.py rename to keystone/tests/test_sql_livetest.py index b1205e64e2..9f64220342 100644 --- a/keystone/tests/_sql_livetest.py +++ b/keystone/tests/test_sql_livetest.py @@ -22,6 +22,10 @@ CONF = config.CONF class PostgresqlMigrateTests(test_sql_upgrade.SqlUpgradeTests): + def setUp(self): + self.skip_if_env_not_set('ENABLE_LIVE_POSTGRES_TEST') + super(PostgresqlMigrateTests, self).setUp() + def config_files(self): files = (test_sql_upgrade.SqlUpgradeTests. _config_file_list[:]) @@ -30,6 +34,10 @@ class PostgresqlMigrateTests(test_sql_upgrade.SqlUpgradeTests): class MysqlMigrateTests(test_sql_upgrade.SqlUpgradeTests): + def setUp(self): + self.skip_if_env_not_set('ENABLE_LIVE_MYSQL_TEST') + super(MysqlMigrateTests, self).setUp() + def config_files(self): files = (test_sql_upgrade.SqlUpgradeTests. _config_file_list[:]) @@ -39,6 +47,10 @@ class MysqlMigrateTests(test_sql_upgrade.SqlUpgradeTests): class PostgresqlRevokeExtensionsTests( test_sql_migrate_extensions.RevokeExtension): + def setUp(self): + self.skip_if_env_not_set('ENABLE_LIVE_POSTGRES_TEST') + super(PostgresqlRevokeExtensionsTests, self).setUp() + def config_files(self): files = (test_sql_upgrade.SqlUpgradeTests. _config_file_list[:]) @@ -47,6 +59,10 @@ class PostgresqlRevokeExtensionsTests( class MysqlRevokeExtensionsTests(test_sql_migrate_extensions.RevokeExtension): + def setUp(self): + self.skip_if_env_not_set('ENABLE_LIVE_MYSQL_TEST') + super(MysqlRevokeExtensionsTests, self).setUp() + def config_files(self): files = (test_sql_upgrade.SqlUpgradeTests. _config_file_list[:]) @@ -55,6 +71,10 @@ class MysqlRevokeExtensionsTests(test_sql_migrate_extensions.RevokeExtension): class Db2MigrateTests(test_sql_upgrade.SqlUpgradeTests): + def setUp(self): + self.skip_if_env_not_set('ENABLE_LIVE_DB2_TEST') + super(Db2MigrateTests, self).setUp() + def config_files(self): files = (test_sql_upgrade.SqlUpgradeTests. _config_file_list[:])