Skip to content

Commit cb6d8f5

Browse files
committed
Test query_metric_stats and give it two assisting functions
1 parent a322f99 commit cb6d8f5

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

hawkular/metrics.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,4 +343,15 @@ def create_metric(metric_type, metric_id, data):
343343
data = [data]
344344

345345
return { 'type': metric_type,'id': metric_id, 'data': data }
346+
347+
def create_percentiles_filter(*percentiles):
348+
"""
349+
Create percentiles filter from a list of float64 percentile values
350+
"""
351+
return ','.join("%s" % p for p in percentiles)
346352

353+
def create_tags_filter(**tags):
354+
"""
355+
Transform a set of parameters to a tag query language filter
356+
"""
357+
return HawkularMetricsClient._transform_tags(**tags)

tests/test_metrics.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,28 @@ def test_query_options(self):
277277
d = self.client.query_metric(MetricType.Gauge, 'test.query.gauge.1', start=(t - 1000))
278278
self.assertEqual(1, len(d))
279279

280+
def test_stats_queries(self):
281+
self.client.create_metric_definition(MetricType.Gauge, 'test.buckets.1', units='bytes', env='unittest')
282+
self.client.create_metric_definition(MetricType.Gauge, 'test.buckets.2', units='bytes', env='unittest')
283+
284+
t = time_millis()
285+
dps = []
286+
287+
for i in range(0, 10):
288+
t = t - 1000
289+
val = 1.45 * i
290+
dps.append(create_datapoint(val, timestamp=t))
291+
292+
self.client.put(create_metric(MetricType.Gauge, 'test.buckets.1', dps))
293+
self.client.put(create_metric(MetricType.Gauge, 'test.buckets.2', [create_datapoint(2.4)]))
294+
295+
# Read single stats bucket
296+
bp = self.client.query_metric_stats(MetricType.Gauge, 'test.buckets.1', buckets=1, tags=create_tags_filter(units='bytes', env='unittest'), percentiles=create_percentiles_filter(90.0, 99.0))
297+
298+
self.assertEqual(1, len(bp), "Only one bucket was requested")
299+
self.assertEqual(10, bp[0]['samples'])
300+
self.assertEqual(2, len(bp[0]['percentiles']))
301+
280302
def test_tenant_changing(self):
281303
self.client.create_metric_definition(MetricType.Availability, 'test.tenant.avail.1')
282304
# Fetch metrics and check that it did appear

0 commit comments

Comments
 (0)