def test_aggregate_series_caching(self): gauged = Gauged(self.driver, block_size=10000, min_cache_interval=1) series = gauged.aggregate_series('foobar', Gauged.MEAN, start=0, end=60000, interval=10000) self.assertListEqual(series.values, []) with gauged.writer as writer: writer.add('bar', 50, timestamp=0) writer.add('foobar', 50, timestamp=10000) writer.add('foobar', 150, timestamp=15000) writer.add('foobar', 250, timestamp=20000) writer.add('foobar', 350, timestamp=40000) writer.add('foobar', 70, timestamp=60000) series = gauged.aggregate_series('foobar', Gauged.MEAN, start=0, end=60000, interval=10000) self.assertListEqual(series.values, [ None, 100, 250, None, 350, None ]) gauged = Gauged(self.driver, block_size=10000, overwrite_blocks=True, min_cache_interval=1) with gauged.writer as writer: writer.add('foobar', 150, timestamp=10000) writer.add('foobar', 253, timestamp=15000) writer.add('foobar', 351, timestamp=20000) writer.add('foobar', 450, timestamp=40000) writer.add('foobar', 170, timestamp=60000) series = gauged.aggregate_series('foobar', Gauged.MEAN, start=0, end=60000, interval=10000) self.assertListEqual(series.values, [ None, 100, 250, None, 350, None ]) series = gauged.aggregate_series('foobar', Gauged.MEAN, start=0, end=60000, interval=10000, cache=False) self.assertListEqual(series.values, [ None, 201.5, 351, None, 450, None ]) self.driver.remove_cache(0) series = gauged.aggregate_series('foobar', Gauged.MEAN, start=0, end=60000, interval=10000) self.assertListEqual(series.values, [ None, 201.5, 351, None, 450, None ]) self.assertListEqual(series.timestamps, [ 0, 10000, 20000, 30000, 40000, 50000 ])
def test_interval_size_error(self): gauged = Gauged(self.driver, resolution=1000, block_size=10000) with gauged.writer as writer: writer.add('likes', 10) with self.assertRaises(GaugedIntervalSizeError): gauged.value_series('likes', interval=1) with self.assertRaises(GaugedIntervalSizeError): gauged.aggregate_series('likes', Gauged.SUM, interval=1) with self.assertRaises(GaugedIntervalSizeError): gauged.aggregate_series('likes', Gauged.MEAN, interval=1)
def test_series_aggregate(self): gauged = Gauged(self.driver, block_size=10000) self.assertEqual( len(gauged.aggregate_series('foobar', Gauged.SUM).values), 0) with gauged.writer as writer: writer.add('foobar', 50, timestamp=10000) writer.add('foobar', 150, timestamp=15000) writer.add('foobar', 120, timestamp=20000) writer.add('foobar', 30, timestamp=25000) writer.add('foobar', 40, timestamp=30000) writer.add('foobar', 10, timestamp=35000) writer.add('bar', 10, timestamp=40000) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=40000, interval=10000) self.assertListEqual(series.values, [200, 150, 50]) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=40000, interval=10000, namespace=1) self.assertListEqual(series.values, []) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=32000, interval=10000) self.assertListEqual(series.values, [200, 150, 40]) series = gauged.aggregate_series('foobar', Gauged.COUNT, start=10000, end=50000, interval=10000) self.assertListEqual(series.values, [2, 2, 2, 0]) series = gauged.aggregate_series('foobar', Gauged.MIN, start=12000, end=42000, interval=10000) self.assertListEqual(series.values, [120, 30, 10]) series = gauged.aggregate_series('foobar', Gauged.MAX, start=12000, end=42000, interval=10000) self.assertListEqual(series.values, [150, 40, 10])
def test_series_aggregate(self): gauged = Gauged(self.driver, block_size=10000) self.assertEqual(len(gauged.aggregate_series('foobar', Gauged.SUM).values), 0) with gauged.writer as writer: writer.add('foobar', 50, timestamp=10000) writer.add('foobar', 150, timestamp=15000) writer.add('foobar', 120, timestamp=20000) writer.add('foobar', 30, timestamp=25000) writer.add('foobar', 40, timestamp=30000) writer.add('foobar', 10, timestamp=35000) writer.add('bar', 10, timestamp=40000) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=40000, interval=10000) self.assertListEqual(series.values, [200, 150, 50]) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=40000, interval=10000, namespace=1) self.assertListEqual(series.values, []) series = gauged.aggregate_series('foobar', Gauged.SUM, start=10000, end=32000, interval=10000) self.assertListEqual(series.values, [200, 150, 40]) series = gauged.aggregate_series('foobar', Gauged.COUNT, start=10000, end=50000, interval=10000) self.assertListEqual(series.values, [2, 2, 2, 0]) series = gauged.aggregate_series('foobar', Gauged.MIN, start=12000, end=42000, interval=10000) self.assertListEqual(series.values, [120, 30, 10]) series = gauged.aggregate_series('foobar', Gauged.MAX, start=12000, end=42000, interval=10000) self.assertListEqual(series.values, [150, 40, 10])
def test_no_data(self): gauged = Gauged(self.driver) self.assertEqual(len(gauged.namespaces()), 0) self.assertEqual(len(gauged.value_series('foo')), 0) self.assertEqual(len(gauged.aggregate_series('foo', Gauged.SUM)), 0) self.assertEqual(gauged.value('foo'), None) self.assertEqual(gauged.aggregate('foo', Gauged.SUM), None) self.assertEqual(len(gauged.keys()), 0) stats = gauged.statistics() for attr in ['data_points', 'byte_count']: self.assertEqual(getattr(stats, attr), 0)