diff --git a/ceilometer/tests/db.py b/ceilometer/tests/db.py index a7bce5b53d..355852f4e9 100644 --- a/ceilometer/tests/db.py +++ b/ceilometer/tests/db.py @@ -26,7 +26,6 @@ from oslotest import mockpatch import six from six.moves.urllib import parse as urlparse import sqlalchemy -import testscenarios.testcase from testtools import testcase from ceilometer import storage @@ -173,7 +172,8 @@ class SQLiteManager(fixtures.Fixture): self.url, 'ceilometer.event.storage') -class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): +@six.add_metaclass(test_base.SkipNotImplementedMeta) +class TestBase(test_base.BaseTestCase): DRIVER_MANAGERS = { 'mongodb': MongoDbManager, @@ -186,11 +186,12 @@ class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): if mocks is not None: DRIVER_MANAGERS['hbase'] = HBaseManager - db_url = 'sqlite://' # NOTE(Alexei_987) Set default db url - def setUp(self): super(TestBase, self).setUp() - engine = urlparse.urlparse(self.db_url).scheme + db_url = os.environ.get('CEILOMETER_TEST_STORAGE_URL', + "sqlite://") + + engine = urlparse.urlparse(db_url).scheme # in case some drivers have additional specification, for example: # PyMySQL will have scheme mysql+pymysql engine = engine.split('+')[0] @@ -205,10 +206,12 @@ class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): self.CONF = self.useFixture(fixture_config.Config()).conf self.CONF([], project='ceilometer', validate_default_values=True) - try: - self.db_manager = self._get_driver_manager(engine)(self.db_url) - except ValueError as exc: - self.skipTest("missing driver manager: %s" % exc) + manager = self.DRIVER_MANAGERS.get(engine) + if not manager: + self.skipTest("missing driver manager: %s" % engine) + + self.db_manager = manager(db_url) + self.useFixture(self.db_manager) self.conn = self.db_manager.connection @@ -241,12 +244,6 @@ class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): return self.event_conn return self.conn - def _get_driver_manager(self, engine): - manager = self.DRIVER_MANAGERS.get(engine) - if not manager: - raise ValueError('No manager available for %s' % engine) - return manager - def run_with(*drivers): """Used to mark tests that are only applicable for certain db driver. @@ -267,31 +264,3 @@ def run_with(*drivers): test._run_with = drivers return test return decorator - - -@six.add_metaclass(test_base.SkipNotImplementedMeta) -class MixinTestsWithBackendScenarios(object): - - scenarios = [ - ('sqlite', {'db_url': 'sqlite://'}), - ] - - for db in ('MONGODB', 'MYSQL', 'PGSQL', 'HBASE', 'DB2', 'ES'): - if os.environ.get('CEILOMETER_TEST_%s_URL' % db): - scenarios.append( - (db.lower(), {'db_url': os.environ.get( - 'CEILOMETER_TEST_%s_URL' % db)})) - - scenarios_db = [db for db, _ in scenarios] - - # Insert default value for hbase test - if 'hbase' not in scenarios_db: - scenarios.append( - ('hbase', {'db_url': 'hbase://__test__'})) - - # Insert default value for db2 test - if 'mongodb' in scenarios_db and 'db2' not in scenarios_db: - scenarios.append( - ('db2', {'db_url': os.environ.get('CEILOMETER_TEST_MONGODB_URL', - '').replace('mongodb://', - 'db2://')})) diff --git a/ceilometer/tests/functional/api/v2/test_acl_scenarios.py b/ceilometer/tests/functional/api/v2/test_acl_scenarios.py index 886efbe7f0..c2f25493c7 100644 --- a/ceilometer/tests/functional/api/v2/test_acl_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_acl_scenarios.py @@ -27,7 +27,6 @@ import webtest from ceilometer.api import app from ceilometer.publisher import utils from ceilometer import sample -from ceilometer.tests import db as tests_db from ceilometer.tests.functional import api as acl from ceilometer.tests.functional.api import v2 @@ -79,8 +78,7 @@ class FakeMemcache(object): pass -class TestAPIACL(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestAPIACL(v2.FunctionalTest): def setUp(self): super(TestAPIACL, self).setUp() @@ -228,8 +226,7 @@ class TestAPIEventACL(TestAPIACL): self.assertEqual(401, data.status_int) -class TestApiEventRBAC(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestApiEventRBAC(v2.FunctionalTest): PATH = '/events' diff --git a/ceilometer/tests/functional/api/v2/test_capabilities.py b/ceilometer/tests/functional/api/v2/test_capabilities.py index e6885a3632..f3c880efe9 100644 --- a/ceilometer/tests/functional/api/v2/test_capabilities.py +++ b/ceilometer/tests/functional/api/v2/test_capabilities.py @@ -14,17 +14,10 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. - -import testscenarios - -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 as tests_api -load_tests = testscenarios.load_tests_apply_scenarios - -class TestCapabilitiesController(tests_api.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestCapabilitiesController(tests_api.FunctionalTest): def setUp(self): super(TestCapabilitiesController, self).setUp() diff --git a/ceilometer/tests/functional/api/v2/test_complex_query_scenarios.py b/ceilometer/tests/functional/api/v2/test_complex_query_scenarios.py index dab481fcad..b9646ab56e 100644 --- a/ceilometer/tests/functional/api/v2/test_complex_query_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_complex_query_scenarios.py @@ -24,7 +24,6 @@ from oslo_utils import timeutils from ceilometer.publisher import utils from ceilometer import sample -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 as tests_api @@ -36,9 +35,7 @@ non_admin_header = {"X-Roles": "Member", "project-id1"} -class TestQueryMetersController(tests_api.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): - +class TestQueryMetersController(tests_api.FunctionalTest): def setUp(self): super(TestQueryMetersController, self).setUp() self.url = '/query/samples' diff --git a/ceilometer/tests/functional/api/v2/test_compute_duration_by_resource_scenarios.py b/ceilometer/tests/functional/api/v2/test_compute_duration_by_resource_scenarios.py index 1995083028..fb633035d8 100644 --- a/ceilometer/tests/functional/api/v2/test_compute_duration_by_resource_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_compute_duration_by_resource_scenarios.py @@ -21,12 +21,10 @@ import mock from oslo_utils import timeutils from ceilometer.storage import models -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestComputeDurationByResource(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestComputeDurationByResource(v2.FunctionalTest): def setUp(self): super(TestComputeDurationByResource, self).setUp() diff --git a/ceilometer/tests/functional/api/v2/test_event_scenarios.py b/ceilometer/tests/functional/api/v2/test_event_scenarios.py index 4896ede20a..abe743c370 100644 --- a/ceilometer/tests/functional/api/v2/test_event_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_event_scenarios.py @@ -30,8 +30,7 @@ HEADERS = {"X-Roles": "admin", "X-Project-Id": PROJ_ID} -class EventTestBase(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class EventTestBase(v2.FunctionalTest): def setUp(self): super(EventTestBase, self).setUp() @@ -466,8 +465,7 @@ class TestEventAPI(EventTestBase): 'op': 'el'}]) -class AclRestrictedEventTestBase(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class AclRestrictedEventTestBase(v2.FunctionalTest): def setUp(self): super(AclRestrictedEventTestBase, self).setUp() @@ -595,8 +593,7 @@ class AclRestrictedEventTestBase(v2.FunctionalTest, self.assertEqual(0, len(data)) -class EventRestrictionTestBase(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class EventRestrictionTestBase(v2.FunctionalTest): def setUp(self): super(EventRestrictionTestBase, self).setUp() diff --git a/ceilometer/tests/functional/api/v2/test_list_meters_scenarios.py b/ceilometer/tests/functional/api/v2/test_list_meters_scenarios.py index 9862b60a67..e9c149384e 100644 --- a/ceilometer/tests/functional/api/v2/test_list_meters_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_list_meters_scenarios.py @@ -25,20 +25,17 @@ import webtest.app from ceilometer.publisher import utils from ceilometer import sample -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestListEmptyMeters(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestListEmptyMeters(v2.FunctionalTest): def test_empty(self): data = self.get_json('/meters') self.assertEqual([], data) -class TestValidateUserInput(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestValidateUserInput(v2.FunctionalTest): def test_list_meters_query_float_metadata(self): self.assertRaises(webtest.app.AppError, self.get_json, @@ -61,8 +58,7 @@ class TestValidateUserInput(v2.FunctionalTest, 'type': 'integer'}]) -class TestListMetersRestriction(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestListMetersRestriction(v2.FunctionalTest): def setUp(self): super(TestListMetersRestriction, self).setUp() @@ -141,8 +137,7 @@ class TestListMetersRestriction(v2.FunctionalTest, self.assertEqual(3, len(data)) -class TestListMeters(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestListMeters(v2.FunctionalTest): def setUp(self): super(TestListMeters, self).setUp() diff --git a/ceilometer/tests/functional/api/v2/test_list_resources_scenarios.py b/ceilometer/tests/functional/api/v2/test_list_resources_scenarios.py index 9354012ecb..13e1c8cbaa 100644 --- a/ceilometer/tests/functional/api/v2/test_list_resources_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_list_resources_scenarios.py @@ -23,12 +23,10 @@ import webtest.app from ceilometer.publisher import utils from ceilometer import sample -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestListResources(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestListResources(v2.FunctionalTest): def test_empty(self): data = self.get_json('/resources') @@ -519,9 +517,7 @@ class TestListResources(v2.FunctionalTest, in links[0]['href']) -class TestListResourcesRestriction(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): - +class TestListResourcesRestriction(v2.FunctionalTest): def setUp(self): super(TestListResourcesRestriction, self).setUp() self.CONF.set_override('default_api_return_limit', 10, group='api') diff --git a/ceilometer/tests/functional/api/v2/test_list_samples_scenarios.py b/ceilometer/tests/functional/api/v2/test_list_samples_scenarios.py index 1c48de3928..7134a8caeb 100644 --- a/ceilometer/tests/functional/api/v2/test_list_samples_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_list_samples_scenarios.py @@ -23,12 +23,10 @@ import six from ceilometer.publisher import utils from ceilometer import sample -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestListSamples(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestListSamples(v2.FunctionalTest): def setUp(self): super(TestListSamples, self).setUp() diff --git a/ceilometer/tests/functional/api/v2/test_post_samples_scenarios.py b/ceilometer/tests/functional/api/v2/test_post_samples_scenarios.py index 32fdfd4a91..38740bd3f6 100644 --- a/ceilometer/tests/functional/api/v2/test_post_samples_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_post_samples_scenarios.py @@ -22,12 +22,10 @@ import mock from oslo_utils import timeutils from oslotest import mockpatch -from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestPostSamples(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestPostSamples(v2.FunctionalTest): def fake_notifier_sample(self, ctxt, event_type, payload): samples = payload['samples'] for m in samples: diff --git a/ceilometer/tests/functional/api/v2/test_statistics_scenarios.py b/ceilometer/tests/functional/api/v2/test_statistics_scenarios.py index 18edf8c1ec..efa7f8772c 100644 --- a/ceilometer/tests/functional/api/v2/test_statistics_scenarios.py +++ b/ceilometer/tests/functional/api/v2/test_statistics_scenarios.py @@ -22,9 +22,7 @@ from ceilometer.tests import db as tests_db from ceilometer.tests.functional.api import v2 -class TestMaxProjectVolume(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): - +class TestMaxProjectVolume(v2.FunctionalTest): PATH = '/meters/volume.size/statistics' def setUp(self): @@ -119,9 +117,7 @@ class TestMaxProjectVolume(v2.FunctionalTest, self.assertEqual(1, data[0]['count']) -class TestMaxResourceVolume(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): - +class TestMaxResourceVolume(v2.FunctionalTest): PATH = '/meters/volume.size/statistics' def setUp(self): @@ -248,8 +244,7 @@ class TestMaxResourceVolume(v2.FunctionalTest, self.assertEqual(1, data[0]['count']) -class TestSumProjectVolume(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestSumProjectVolume(v2.FunctionalTest): PATH = '/meters/volume.size/statistics' @@ -347,8 +342,7 @@ class TestSumProjectVolume(v2.FunctionalTest, self.assertEqual(1, data[0]['count']) -class TestSumResourceVolume(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestSumResourceVolume(v2.FunctionalTest): PATH = '/meters/volume.size/statistics' @@ -472,8 +466,7 @@ class TestSumResourceVolume(v2.FunctionalTest, self.assertEqual(1, data[0]['count']) -class TestGroupByInstance(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestGroupByInstance(v2.FunctionalTest): PATH = '/meters/instance/statistics' @@ -1216,8 +1209,7 @@ class TestGroupByInstance(v2.FunctionalTest, @tests_db.run_with('mongodb', 'hbase', 'db2') -class TestGroupBySource(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestGroupBySource(v2.FunctionalTest): # FIXME(terriyu): We have to put test_group_by_source in its own class # because SQLAlchemy currently doesn't support group by source statistics. @@ -1319,8 +1311,7 @@ class TestGroupBySource(v2.FunctionalTest, self.assertEqual(4, r['avg']) -class TestSelectableAggregates(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestSelectableAggregates(v2.FunctionalTest): PATH = '/meters/instance/statistics' @@ -1561,8 +1552,7 @@ class TestSelectableAggregates(v2.FunctionalTest, @tests_db.run_with('mongodb', 'hbase', 'db2') -class TestUnparameterizedAggregates(v2.FunctionalTest, - tests_db.MixinTestsWithBackendScenarios): +class TestUnparameterizedAggregates(v2.FunctionalTest): # We put the stddev test case in a separate class so that we # can easily exclude the sqlalchemy scenario, as sqlite doesn't diff --git a/ceilometer/tests/functional/gabbi/fixtures.py b/ceilometer/tests/functional/gabbi/fixtures.py index 8d63b170c9..de20c1267e 100644 --- a/ceilometer/tests/functional/gabbi/fixtures.py +++ b/ceilometer/tests/functional/gabbi/fixtures.py @@ -24,6 +24,7 @@ import uuid from gabbi import fixture from oslo_config import fixture as fixture_config from oslo_policy import opts +from six.moves.urllib import parse as urlparse from ceilometer.event.storage import models from ceilometer.publisher import utils @@ -31,11 +32,10 @@ from ceilometer import sample from ceilometer import service from ceilometer import storage - # TODO(chdent): For now only MongoDB is supported, because of easy # database name handling and intentional focus on the API, not the # data store. -ENGINES = ['MONGODB'] +ENGINES = ['mongodb'] class ConfigFixture(fixture.GabbiFixture): @@ -47,15 +47,14 @@ class ConfigFixture(fixture.GabbiFixture): self.conf = None # Determine the database connection. - db_url = None - for engine in ENGINES: - try: - db_url = os.environ['CEILOMETER_TEST_%s_URL' % engine] - except KeyError: - pass - if db_url is None: + db_url = os.environ.get('CEILOMETER_TEST_STORAGE_URL') + if not db_url: raise case.SkipTest('No database connection configured') + engine = urlparse.urlparse(db_url).scheme + if engine not in ENGINES: + raise case.SkipTest('Database engine not supported') + service.prepare_service(argv=[], config_files=[]) conf = fixture_config.Config().conf self.conf = conf diff --git a/ceilometer/tests/functional/publisher/test_direct.py b/ceilometer/tests/functional/publisher/test_direct.py index 54bdf4991f..5b5dab1b7b 100644 --- a/ceilometer/tests/functional/publisher/test_direct.py +++ b/ceilometer/tests/functional/publisher/test_direct.py @@ -26,8 +26,7 @@ from ceilometer import sample from ceilometer.tests import db as tests_db -class TestDirectPublisher(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class TestDirectPublisher(tests_db.TestBase): resource_id = str(uuid.uuid4()) @@ -83,9 +82,7 @@ class TestDirectPublisher(tests_db.TestBase, self.assertEqual(['alpha', 'beta', 'gamma'], names) -class TestEventDirectPublisher(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): - +class TestEventDirectPublisher(tests_db.TestBase): test_data = [event.Event(message_id=str(uuid.uuid4()), event_type='event_%d' % i, generated=datetime.datetime.utcnow(), diff --git a/ceilometer/tests/functional/storage/test_impl_hbase.py b/ceilometer/tests/functional/storage/test_impl_hbase.py index 08fbd76269..e8966b4cf3 100644 --- a/ceilometer/tests/functional/storage/test_impl_hbase.py +++ b/ceilometer/tests/functional/storage/test_impl_hbase.py @@ -35,8 +35,7 @@ from ceilometer.tests import base as test_base from ceilometer.tests import db as tests_db -class ConnectionTest(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class ConnectionTest(tests_db.TestBase): @tests_db.run_with('hbase') def test_hbase_connection(self): diff --git a/ceilometer/tests/functional/storage/test_impl_mongodb.py b/ceilometer/tests/functional/storage/test_impl_mongodb.py index 05eccf0c4b..c903d52f1f 100644 --- a/ceilometer/tests/functional/storage/test_impl_mongodb.py +++ b/ceilometer/tests/functional/storage/test_impl_mongodb.py @@ -28,8 +28,7 @@ from ceilometer.tests import db as tests_db @tests_db.run_with('mongodb') -class MongoDBConnection(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class MongoDBConnection(tests_db.TestBase): def test_connection_pooling(self): test_conn = impl_mongodb.Connection(self.db_manager.url) self.assertEqual(self.conn.conn, test_conn.conn) @@ -51,8 +50,7 @@ class MongoDBConnection(tests_db.TestBase, @tests_db.run_with('mongodb') -class IndexTest(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class IndexTest(tests_db.TestBase): def _test_ttl_index_absent(self, conn, coll_name, ttl_opt): # create a fake index and check it is deleted diff --git a/ceilometer/tests/functional/storage/test_pymongo_base.py b/ceilometer/tests/functional/storage/test_pymongo_base.py index 9c60e25f39..43fdee39c5 100644 --- a/ceilometer/tests/functional/storage/test_pymongo_base.py +++ b/ceilometer/tests/functional/storage/test_pymongo_base.py @@ -24,8 +24,7 @@ from ceilometer.tests.functional.storage import test_storage_scenarios @tests_db.run_with('mongodb', 'db2') -class CompatibilityTest(test_storage_scenarios.DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class CompatibilityTest(test_storage_scenarios.DBTestBase): def prepare_data(self): def old_record_metering_data(self, data): diff --git a/ceilometer/tests/functional/storage/test_storage_scenarios.py b/ceilometer/tests/functional/storage/test_storage_scenarios.py index 5812bd87ef..f0c61415d0 100644 --- a/ceilometer/tests/functional/storage/test_storage_scenarios.py +++ b/ceilometer/tests/functional/storage/test_storage_scenarios.py @@ -128,8 +128,7 @@ class DBTestBase(tests_db.TestBase): ) -class ResourceTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class ResourceTest(DBTestBase): def prepare_data(self): super(ResourceTest, self).prepare_data() @@ -307,8 +306,7 @@ class ResourceTest(DBTestBase, self.assertEqual(expected_tag, resource.metadata['tag']) -class ResourceTestOrdering(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class ResourceTestOrdering(DBTestBase): def prepare_data(self): sample_timings = [('resource-id-1', [(2013, 8, 10, 10, 43), (2013, 8, 10, 10, 44), @@ -358,9 +356,7 @@ class ResourceTestOrdering(DBTestBase, self.assertEqual('sample-8', resource.metadata['tag']) -class MeterTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): - +class MeterTest(DBTestBase): def test_get_meters(self): msgs_sources = [msg['source'] for msg in self.msgs] results = list(self.conn.get_meters()) @@ -387,8 +383,7 @@ class MeterTest(DBTestBase, self.assertEqual(9, len(results)) -class RawSampleTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class RawSampleTest(DBTestBase): def prepare_data(self): super(RawSampleTest, self).prepare_data() @@ -678,8 +673,7 @@ class RawSampleTest(DBTestBase, self.assertEqual(3, retry_sleep.call_count) -class ComplexSampleQueryTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class ComplexSampleQueryTest(DBTestBase): def setUp(self): super(ComplexSampleQueryTest, self).setUp() self.complex_filter = { @@ -1079,9 +1073,7 @@ class ComplexSampleQueryTest(DBTestBase, [0.41, 0.8, 0.81]) -class StatisticsTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): - +class StatisticsTest(DBTestBase): def prepare_data(self): for i in range(3): c = sample.Sample( @@ -1335,9 +1327,7 @@ class StatisticsTest(DBTestBase, self.assertEqual([], results) -class StatisticsGroupByTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): - +class StatisticsGroupByTest(DBTestBase): def prepare_data(self): test_sample_data = ( {'volume': 2, 'user': 'user-1', 'project': 'project-1', @@ -2569,8 +2559,7 @@ class StatisticsGroupByTest(DBTestBase, [r.groupby, r.period_start]) -class CounterDataTypeTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class CounterDataTypeTest(DBTestBase): def prepare_data(self): c = sample.Sample( 'dummyBigCounter', @@ -2645,8 +2634,7 @@ class CounterDataTypeTest(DBTestBase, self.assertEqual(1938495037.53697, results[0].counter_volume) -class EventTestBase(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class EventTestBase(tests_db.TestBase): """Separate test base class. We don't want to inherit all the Meter stuff. @@ -3079,8 +3067,7 @@ class GetEventTest(EventTestBase): options.remove((trait.dtype, trait.value)) -class BigIntegerTest(tests_db.TestBase, - tests_db.MixinTestsWithBackendScenarios): +class BigIntegerTest(tests_db.TestBase): def test_metadata_bigint(self): metadata = {'bigint': 99999999999999} s = sample.Sample(name='name', @@ -3098,9 +3085,7 @@ class BigIntegerTest(tests_db.TestBase, @tests_db.run_with('mongodb') -class MongoAutoReconnectTest(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): - +class MongoAutoReconnectTest(DBTestBase): def setUp(self): super(MongoAutoReconnectTest, self).setUp() self.CONF.set_override('retry_interval', 0, group='database') @@ -3172,7 +3157,7 @@ class MongoAutoReconnectTest(DBTestBase, @tests_db.run_with('mongodb') -class MongoTimeToLiveTest(DBTestBase, tests_db.MixinTestsWithBackendScenarios): +class MongoTimeToLiveTest(DBTestBase): def test_ensure_index(self): cfg.CONF.set_override('metering_time_to_live', 5, group='database') @@ -3193,8 +3178,7 @@ class MongoTimeToLiveTest(DBTestBase, tests_db.MixinTestsWithBackendScenarios): ['meter_ttl']['expireAfterSeconds']) -class TestRecordUnicodeSamples(DBTestBase, - tests_db.MixinTestsWithBackendScenarios): +class TestRecordUnicodeSamples(DBTestBase): def prepare_data(self): self.msgs = [] self.msgs.append(self.create_and_store_sample( diff --git a/functions.sh b/functions.sh index 15bde0955c..352cec3fdf 100644 --- a/functions.sh +++ b/functions.sh @@ -1,9 +1,5 @@ function clean_exit(){ local error_code="$?" - if test -n "$CEILOMETER_TEST_HBASE_URL" - then - python tools/test_hbase_table_utils.py --clear - fi rm -rf "$1" kill $(jobs -p) return $error_code diff --git a/setup-test-env-es.sh b/setup-test-env-es.sh index d065979d2f..ecb32d35ac 100755 --- a/setup-test-env-es.sh +++ b/setup-test-env-es.sh @@ -32,7 +32,7 @@ elasticsearch -p ${ES_PID} -Des.http.port=${ES_PORT} -Des.path.logs=${ES_DATA}/l # Wait for ElasticSearch to start listening to connections sleep 3 wait_for_line "started" ${ES_DATA}/out -export CEILOMETER_TEST_ES_URL="es://localhost:${ES_PORT}" +export CEILOMETER_TEST_STORAGE_URL="es://localhost:${ES_PORT}" # Yield execution to venv command $* diff --git a/setup-test-env-mongodb.sh b/setup-test-env-mongodb.sh index 547168a381..a1489296a2 100755 --- a/setup-test-env-mongodb.sh +++ b/setup-test-env-mongodb.sh @@ -21,12 +21,7 @@ mongod --maxConns 32 --nojournal --noprealloc --smallfiles --quiet --noauth --po wait_for_line "waiting for connections on port ${MONGO_PORT}" ${MONGO_DATA}/out # Read the fifo for ever otherwise mongod would block cat ${MONGO_DATA}/out > /dev/null & -export CEILOMETER_TEST_MONGODB_URL="mongodb://localhost:${MONGO_PORT}/ceilometer" -if test -n "$CEILOMETER_TEST_HBASE_URL" -then - export CEILOMETER_TEST_HBASE_TABLE_PREFIX=$(hexdump -n 16 -v -e '/1 "%02X"' /dev/urandom) - python tools/test_hbase_table_utils.py --upgrade -fi +export CEILOMETER_TEST_STORAGE_URL="mongodb://localhost:${MONGO_PORT}/ceilometer" # Yield execution to venv command $* diff --git a/setup-test-env-mysql.sh b/setup-test-env-mysql.sh index de1ab5ba99..9e94d441df 100755 --- a/setup-test-env-mysql.sh +++ b/setup-test-env-mysql.sh @@ -22,7 +22,7 @@ mkfifo ${MYSQL_DATA}/out mysqld --datadir=${MYSQL_DATA} --pid-file=${MYSQL_DATA}/mysql.pid --socket=${MYSQL_DATA}/mysql.socket --skip-networking --skip-grant-tables &> ${MYSQL_DATA}/out & # Wait for MySQL to start listening to connections wait_for_line "mysqld: ready for connections." ${MYSQL_DATA}/out -export CEILOMETER_TEST_MYSQL_URL="mysql+pymysql://root@localhost/template1?unix_socket=${MYSQL_DATA}/mysql.socket&charset=utf8" +export CEILOMETER_TEST_STORAGE_URL="mysql+pymysql://root@localhost/template1?unix_socket=${MYSQL_DATA}/mysql.socket&charset=utf8" # Yield execution to venv command $* diff --git a/setup-test-env-postgresql.sh b/setup-test-env-postgresql.sh index 5d68eea875..64bc6355ec 100755 --- a/setup-test-env-postgresql.sh +++ b/setup-test-env-postgresql.sh @@ -28,7 +28,7 @@ ${PGSQL_PATH}/initdb -E UTF8 ${PGSQL_DATA} trap "clean_exit_pgsql ${PGSQL_PATH} ${PGSQL_DATA} ${PGSQL_PORT}" EXIT LANGUAGE=C ${PGSQL_PATH}/pg_ctl -w -D ${PGSQL_DATA} -o "-F -k ${PGSQL_DATA} -p ${PGSQL_PORT}" start -export CEILOMETER_TEST_PGSQL_URL="postgresql:///?host=${PGSQL_DATA}&port=${PGSQL_PORT}&dbname=template1" +export CEILOMETER_TEST_STORAGE_URL="postgresql:///?host=${PGSQL_DATA}&port=${PGSQL_PORT}&dbname=template1" # Yield execution to venv command $* diff --git a/tools/test_hbase_table_utils.py b/tools/test_hbase_table_utils.py index ba90e4bac1..10294e31cf 100755 --- a/tools/test_hbase_table_utils.py +++ b/tools/test_hbase_table_utils.py @@ -22,9 +22,9 @@ from ceilometer import storage def main(argv): cfg.CONF([], project='ceilometer') - if os.getenv("CEILOMETER_TEST_HBASE_URL"): + if os.getenv("CEILOMETER_TEST_STORAGE_URL", "").startswith("hbase://"): url = ("%s?table_prefix=%s" % - (os.getenv("CEILOMETER_TEST_HBASE_URL"), + (os.getenv("CEILOMETER_TEST_STORAGE_URL"), os.getenv("CEILOMETER_TEST_HBASE_TABLE_PREFIX", "test"))) conn = storage.get_connection(url, 'ceilometer.metering.storage') event_conn = storage.get_connection(url, 'ceilometer.event.storage')