Esempio n. 1
0
 def test_accepting_data_as_string(self):
     gauged = Gauged(self.driver,
                     resolution=1000,
                     block_size=10000,
                     key_overflow=Gauged.IGNORE,
                     gauge_nan=Gauged.IGNORE)
     with gauged.writer as writer:
         writer.add('foo=123.456&bar=-15.98&qux=0&invalid=foobar\n',
                    timestamp=20000)
     self.assertAlmostEqual(123.456, gauged.value('foo', timestamp=20000),
                            5)
     self.assertAlmostEqual(-15.98, gauged.value('bar', timestamp=20000), 5)
     self.assertEqual(gauged.value('qux', timestamp=20000), 0)
     self.assertEqual(gauged.value('invalid', timestamp=20000), None)
     stats = gauged.statistics()
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     stats = gauged.statistics(end=25000)
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     gauged = Gauged(self.driver,
                     resolution=1000,
                     block_size=10000,
                     key_overflow=Gauged.IGNORE)
     with self.assertRaises(GaugedNaNError):
         with gauged.writer as writer:
             writer.add(u'foo=123.456&bar=-15.98&qux=0&invalid=foobar\n',
                        timestamp=20000)
Esempio n. 2
0
 def test_statistics(self):
     gauged = Gauged(self.driver, resolution=1000, block_size=10000)
     with gauged.writer as writer:
         writer.add('bar', 123, timestamp=10000)
         writer.add('bar', 123, timestamp=15000, namespace=1)
         writer.add({'foo': 123, 'bar': 456}, timestamp=20000)
     stats = gauged.statistics()
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     stats = gauged.statistics(end=20000)
     # note: statistics() rounds to the nearest block boundary
     self.assertEqual(stats.data_points, 1)
     self.assertEqual(stats.byte_count, 8)
     stats = gauged.statistics(namespace=1)
     self.assertEqual(stats.data_points, 1)
     self.assertEqual(stats.byte_count, 8)
Esempio n. 3
0
 def test_statistics(self):
     gauged = Gauged(self.driver, resolution=1000, block_size=10000)
     with gauged.writer as writer:
         writer.add('bar', 123, timestamp=10000)
         writer.add('bar', 123, timestamp=15000, namespace=1)
         writer.add({ 'foo': 123, 'bar': 456 }, timestamp=20000)
     stats = gauged.statistics()
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     stats = gauged.statistics(end=20000)
     # note: statistics() rounds to the nearest block boundary
     self.assertEqual(stats.data_points, 1)
     self.assertEqual(stats.byte_count, 8)
     stats = gauged.statistics(namespace=1)
     self.assertEqual(stats.data_points, 1)
     self.assertEqual(stats.byte_count, 8)
Esempio n. 4
0
 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)
Esempio n. 5
0
 def test_accepting_data_as_string(self):
     gauged = Gauged(self.driver, resolution=1000, block_size=10000,
         key_overflow=Gauged.IGNORE, gauge_nan=Gauged.IGNORE)
     with gauged.writer as writer:
         writer.add('foo=123.456&bar=-15.98&qux=0&invalid=foobar\n', timestamp=20000)
     self.assertAlmostEqual(123.456, gauged.value('foo', timestamp=20000), 5)
     self.assertAlmostEqual(-15.98, gauged.value('bar', timestamp=20000), 5)
     self.assertEqual(gauged.value('qux', timestamp=20000), 0)
     self.assertEqual(gauged.value('invalid', timestamp=20000), None)
     stats = gauged.statistics()
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     stats = gauged.statistics(end=25000)
     self.assertEqual(stats.data_points, 3)
     self.assertEqual(stats.byte_count, 24)
     gauged = Gauged(self.driver, resolution=1000, block_size=10000,
         key_overflow=Gauged.IGNORE)
     with self.assertRaises(GaugedNaNError):
         with gauged.writer as writer:
             writer.add(u'foo=123.456&bar=-15.98&qux=0&invalid=foobar\n', timestamp=20000)
Esempio n. 6
0
 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)
Esempio n. 7
0
measurements = options['number']
span = end_timestamp - start_timestamp
start = time()
with gauged.writer as writer:
    data = ['foobar', 0]
    gauges = [data]
    add = writer.add
    for timestamp in xrange(start_timestamp, end_timestamp,
                            span // measurements):
        data[1] = random()
        add(gauges, timestamp=timestamp*1000)
elapsed = time() - start

print 'Wrote %s measurements in %s seconds (%s/s)' % \
    (number, round(elapsed, 3), abbreviate_number(measurements / elapsed))

statistics = gauged.statistics()
byte_count = statistics.byte_count
print 'Gauge data uses %s (%s per measurement)' % \
    (abbreviate_bytes(byte_count),
     abbreviate_bytes(byte_count / float(measurements)))

# Read benchmarks
for aggregate in ('min', 'max', 'sum', 'count', 'mean', 'stddev', 'median'):
    start = time()
    gauged.aggregate('foobar', aggregate)
    elapsed = time() - start
    print '%s() in %ss (read %s measurements/s)' % \
        (aggregate, round(elapsed, 3),
         abbreviate_number(measurements / elapsed))
Esempio n. 8
0
print 'Spreading %s measurements to key "foobar" over %s days' % (number, options['days'])

# Benchmark writes
measurements = options['number']
span = end_timestamp - start_timestamp
start = time()
with gauged.writer as writer:
    data = [ 'foobar', 0 ]
    gauges = [ data ]
    add = writer.add
    for timestamp in xrange(start_timestamp, end_timestamp, span // measurements):
        data[1] = random()
        add(gauges, timestamp=timestamp)
elapsed = time() - start

print 'Wrote %s measurements in %s seconds (%s/s) (rss: %s)' % (number, round(elapsed, 3),
    abbreviate_number(measurements / elapsed), peak_rss())

statistics = gauged.statistics()
byte_count = statistics.byte_count
print 'Gauge data uses %s (%s per measurement)' % (abbreviate_bytes(byte_count),
    abbreviate_bytes(byte_count / float(measurements)))

# Read benchmarks
for aggregate in ( 'min', 'max', 'sum', 'count', 'mean', 'stddev', 'median' ):
    start = time()
    gauged.aggregate('foobar', aggregate)
    elapsed = time() - start
    print '%s() in %ss (read %s measurements/s) (rss: %s)' % (aggregate,
        round(elapsed, 3), abbreviate_number(measurements / elapsed), peak_rss())