29
29
from mock import patch
31
import ceilometer.openstack.common.db.sqlalchemy.session as sqlalchemy_session
31
from ceilometer.openstack.common.fixture import config
32
32
from ceilometer.openstack.common import timeutils
33
33
from ceilometer.storage import models
34
34
from ceilometer.storage.sqlalchemy import models as sql_models
35
from ceilometer.tests import base as tests_base
35
36
from ceilometer.tests import db as tests_db
36
37
from ceilometer.tests.storage import test_storage_scenarios as scenarios
172
173
self.assertTrue(repr.repr(ev))
175
class ModelTest(tests_db.TestBase):
176
class ModelTest(tests_base.BaseTestCase):
176
177
database_connection = 'mysql://localhost'
178
179
def test_model_table_args(self):
180
self.CONF = self.useFixture(config.Config()).conf
181
self.CONF.set_override('connection', self.database_connection,
179
183
self.assertIsNotNone(sql_models.table_args())
182
186
class RelationshipTest(scenarios.DBTestBase):
183
database_connection = 'mysql://localhost'
187
# Note: Do not derive from SQLAlchemyEngineTestBase, since we
188
# don't want to automatically inherit all the Meter setup.
189
database_connection = 'sqlite://'
185
191
def test_clear_metering_data_meta_tables(self):
186
192
timeutils.utcnow.override_time = datetime.datetime(2012, 7, 2, 10, 45)
187
193
self.conn.clear_expired_metering_data(3 * 60)
189
session = sqlalchemy_session.get_session()
195
session = self.conn._get_db_session()
190
196
meta_tables = [sql_models.MetaText, sql_models.MetaFloat,
191
197
sql_models.MetaBigInt, sql_models.MetaBool]
192
198
for table in meta_tables:
193
199
self.assertEqual(session.query(table)
194
200
.filter(~table.id.in_(
195
session.query(sql_models.Meter.id)
196
.group_by(sql_models.Meter.id)
201
session.query(sql_models.Sample.id)
202
.group_by(sql_models.Sample.id)
199
205
def test_clear_metering_data_associations(self):
200
206
timeutils.utcnow.override_time = datetime.datetime(2012, 7, 2, 10, 45)
201
207
self.conn.clear_expired_metering_data(3 * 60)
203
session = sqlalchemy_session.get_session()
209
session = self.conn._get_db_session()
204
210
self.assertEqual(session.query(sql_models.sourceassoc)
205
.filter(~sql_models.sourceassoc.c.meter_id.in_(
206
session.query(sql_models.Meter.id)
207
.group_by(sql_models.Meter.id)
211
.filter(~sql_models.sourceassoc.c.sample_id.in_(
212
session.query(sql_models.Sample.id)
213
.group_by(sql_models.Sample.id)
209
215
self.assertEqual(session.query(sql_models.sourceassoc)
210
216
.filter(~sql_models.sourceassoc.c.project_id.in_(