Fix broken statistics in sqlalchemy
When querying the samples for statistics calculations, the filtering is done without joining the Sample table. This patch fixes this. Closes-Bug: #1289325 Change-Id: I45edc974a6c054d27ac33d5287f760bcff08cf91
This commit is contained in:
parent
2e150c57db
commit
b530bc4fb2
@ -700,7 +700,8 @@ class Connection(base.Connection):
|
||||
group_attributes = [getattr(models.Sample, g) for g in groupby]
|
||||
select.extend(group_attributes)
|
||||
|
||||
query = session.query(*select)
|
||||
query = session.query(*select).filter(
|
||||
models.Meter.id == models.Sample.meter_id)
|
||||
|
||||
if groupby:
|
||||
query = query.group_by(*group_attributes)
|
||||
|
@ -1153,6 +1153,39 @@ class StatisticsTest(DBTestBase,
|
||||
secret='not-so-secret',
|
||||
)
|
||||
self.conn.record_metering_data(msg)
|
||||
for i in range(3):
|
||||
c = sample.Sample(
|
||||
'memory',
|
||||
'gauge',
|
||||
'MB',
|
||||
8 + i,
|
||||
'user-5',
|
||||
'project2',
|
||||
'resource-6',
|
||||
timestamp=datetime.datetime(2012, 9, 25, 10 + i, 30 + i),
|
||||
resource_metadata={},
|
||||
source='test',
|
||||
)
|
||||
msg = utils.meter_message_from_counter(
|
||||
c,
|
||||
secret='not-so-secret',
|
||||
)
|
||||
self.conn.record_metering_data(msg)
|
||||
|
||||
def test_by_meter(self):
|
||||
f = storage.SampleFilter(
|
||||
meter='memory'
|
||||
)
|
||||
results = list(self.conn.get_meter_statistics(f))[0]
|
||||
self.assertEqual(results.duration,
|
||||
(datetime.datetime(2012, 9, 25, 12, 32)
|
||||
- datetime.datetime(2012, 9, 25, 10, 30)).seconds)
|
||||
self.assertEqual(results.count, 3)
|
||||
self.assertEqual(results.unit, 'MB')
|
||||
self.assertEqual(results.min, 8)
|
||||
self.assertEqual(results.max, 10)
|
||||
self.assertEqual(results.sum, 27)
|
||||
self.assertEqual(results.avg, 9)
|
||||
|
||||
def test_by_user(self):
|
||||
f = storage.SampleFilter(
|
||||
|
Loading…
Reference in New Issue
Block a user