def test_register_global_metrics(self): metric = metrics.GaugeMetric('test', 'foo', None) interface.register_global_metrics([metric]) self.assertEqual(['test'], list(interface.state.global_metrics)) interface.register_global_metrics([metric]) self.assertEqual(['test'], list(interface.state.global_metrics)) interface.register_global_metrics([]) self.assertEqual(['test'], list(interface.state.global_metrics))
def test_serialize_with_units(self): t = targets.DeviceTarget('reg', 'role', 'net', 'host') m = metrics.GaugeMetric('test', units=metrics.MetricsDataUnits.SECONDS) m.set(1) p = metrics_pb2.MetricsCollection() m.serialize_to(p, 1234, (('bar', 1), ('baz', False)), m.get(), t) self.assertEquals(p.data[0].units, metrics.MetricsDataUnits.SECONDS) return str(p).splitlines()
def test_flush_different_target_fields_new(self): interface.state.metric_name_prefix = '/infra/test/' interface.state.global_monitor = mock.create_autospec(monitors.Monitor) interface.state.target = targets.TaskTarget('s', 'j', 'r', 'h') metric = metrics.GaugeMetric('m', 'desc', None) metric.set(123) metric.set(456, target_fields={'service_name': 'foo'}) interface.flush() self.assertEqual(1, interface.state.global_monitor.send.call_count) proto = interface.state.global_monitor.send.call_args[0][0] col = proto.metrics_collection self.assertEqual(2, len(col)) self.assertEqual(123, col[0].metrics_data_set[0].data[0].int64_value) self.assertEqual(456, col[1].metrics_data_set[0].data[0].int64_value) self.assertEqual('s', col[0].task.service_name) self.assertEqual('foo', col[1].task.service_name)
def test_non_int_raises(self): m = metrics.GaugeMetric('test') with self.assertRaises(errors.MonitoringInvalidValueTypeError): m.set(object())
def test_set(self): m = metrics.GaugeMetric('test') m.set(10) self.assertEquals(m.get(), 10) m.set(sys.maxint + 1) self.assertEquals(m.get(), sys.maxint + 1)
def test_populate_value(self): pb = metrics_pb2.MetricsData() m = metrics.GaugeMetric('test') m._populate_value(pb, 1, 1234) self.assertEquals(pb.gauge, 1)
def test_is_cumulative(self): m = metrics.GaugeMetric('test', 'test', None) self.assertFalse(m.is_cumulative())
def test_generate_proto(self): proto = self._test_proto(metrics.GaugeMetric('test', 'test', None), lambda m: m.set(5), metrics_pb2.INT64, metrics_pb2.GAUGE) self.assertEqual(5, proto.int64_value)