def test_bad_description(self): with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', 123, None) with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', '', None) with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', None, None)
def test_bad_field_spec(self): with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', 'desc', ['abc']) with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', 'desc', ('abc', )) with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', 'desc', [123]) with self.assertRaises(errors.MetricDefinitionError): metrics.Metric('test', 'desc', [None])
def test_bad_target_type(self): with self.assertRaises(errors.MetricDefinitionError): field_spec = [metrics.StringField('string')] metrics.Metric('/foo', 'foo', field_spec, units='us', target_type=my_target_pb2.MyTarget()) with self.assertRaises(errors.MetricDefinitionError): field_spec = [metrics.StringField('string')] metrics.Metric('/foo', 'foo', field_spec, units='us', target_type=metrics.StringField)
def test_equality(self): field_spec = [metrics.StringField('string')] m = metrics.Metric('/foo', 'foo', field_spec, units='us', target_type=my_target_pb2.MyTarget) self.assertEqual(m, m)
def test_invalid_field_value(self): pb = metrics_pb2.MetricsData() m = metrics.Metric('test', fields={'pi': 3.14}) with self.assertRaises(errors.MonitoringInvalidFieldTypeError) as e: m._populate_fields(pb, m._normalized_fields) self.assertEquals(e.exception.metric, 'test') self.assertEquals(e.exception.field, 'pi') self.assertEquals(e.exception.value, 3.14)
def test_populate_field_values(self): pb1 = metrics_pb2.MetricsData() m1 = metrics.Metric('foo', fields={'asdf': 1}) m1._populate_fields(pb1, m1._normalized_fields) self.assertEquals(pb1.fields[0].name, 'asdf') self.assertEquals(pb1.fields[0].int_value, 1) pb2 = metrics_pb2.MetricsData() m2 = metrics.Metric('bar', fields={'qwer': True}) m2._populate_fields(pb2, m2._normalized_fields) self.assertEquals(pb2.fields[0].name, 'qwer') self.assertEquals(pb2.fields[0].bool_value, True) pb3 = metrics_pb2.MetricsData() m3 = metrics.Metric('baz', fields={'zxcv': 'baz'}) m3._populate_fields(pb3, m3._normalized_fields) self.assertEquals(pb3.fields[0].name, 'zxcv') self.assertEquals(pb3.fields[0].string_value, 'baz')
def test_properties(self): field_spec = [metrics.StringField('string')] m = metrics.Metric('/foo', 'foo', field_spec, units='us', target_type=my_target_pb2.MyTarget) self.assertEqual(m.name, 'foo') self.assertEqual(m.field_spec, field_spec) self.assertEqual(m.units, 'us') self.assertEqual(m.target_type, my_target_pb2.MyTarget)
def setUp(self): super(MetricStoreTestBase, self).setUp() self.mock_time = mock.create_autospec(time.time, spec_set=True) self.mock_time.return_value = 1234 self.state = stubs.MockState(store_ctor=self.create_store) mock.patch('infra_libs.ts_mon.common.interface.state', new=self.state).start() self.store = self.state.store self.metric = metrics.Metric('foo')
def setUp(self): super(MetricStoreTestBase, self).setUp() self.mock_time = mock.create_autospec(time.time, spec_set=True) self.mock_time.return_value = 1234 target = targets.TaskTarget('test_service', 'test_job', 'test_region', 'test_host') self.state = interface.State(store_ctor=self.create_store, target=target) mock.patch('infra_libs.ts_mon.common.interface.state', new=self.state).start() self.store = self.state.store self.metric = metrics.Metric('foo', 'desc', None)
def test_populate_fields(self): data = metrics_pb2.MetricsData() m = metrics.Metric('test', 'test', [ metrics.IntegerField('a'), metrics.BooleanField('b'), metrics.StringField('c'), ]) m._populate_fields(data, (1, True, 'test')) self.assertEqual(3, len(data.field)) self.assertEqual('a', data.field[0].name) self.assertEqual(1, data.field[0].int64_value) self.assertEqual('b', data.field[1].name) self.assertTrue(data.field[1].bool_value) self.assertEqual('c', data.field[2].name) self.assertEqual('test', data.field[2].string_value)
def test_populate_field_descriptors(self): data_set_pb = metrics_pb2.MetricsDataSet() m = metrics.Metric('test', 'test', [ metrics.IntegerField('a'), metrics.BooleanField('b'), metrics.StringField('c'), ]) m._populate_field_descriptors(data_set_pb) field_type = metrics_pb2.MetricsDataSet.MetricFieldDescriptor self.assertEqual(3, len(data_set_pb.field_descriptor)) self.assertEqual('a', data_set_pb.field_descriptor[0].name) self.assertEqual(field_type.INT64, data_set_pb.field_descriptor[0].field_type) self.assertEqual('b', data_set_pb.field_descriptor[1].name) self.assertEqual(field_type.BOOL, data_set_pb.field_descriptor[1].field_type) self.assertEqual('c', data_set_pb.field_descriptor[2].name) self.assertEqual(field_type.STRING, data_set_pb.field_descriptor[2].field_type)
def test_init_too_may_fields(self): fields = {str(i): str(i) for i in xrange(8)} with self.assertRaises(errors.MonitoringTooManyFieldsError) as e: metrics.Metric('test', fields=fields) self.assertEquals(e.exception.metric, 'test') self.assertEquals(len(e.exception.fields), 8)
def test_name_property(self): m1 = metrics.Metric('/foo', fields={'asdf': 1}) self.assertEquals(m1.name, 'foo')
def test_init_too_many_fields(self): fields = [metrics.StringField('field%d' % i) for i in xrange(13)] with self.assertRaises(errors.MonitoringTooManyFieldsError) as e: metrics.Metric('test', 'test', fields) self.assertEqual(e.exception.metric, 'test') self.assertEqual(len(e.exception.fields), 13)
def test_equality(self): field_spec = [metrics.StringField('string')] m = metrics.Metric('/foo', 'foo', field_spec, 'us') self.assertEquals(m, m)
def test_register_unregister(self): self.assertEqual(0, len(self.mock_state.metrics)) m = metrics.Metric('test', 'test', None) self.assertEqual(1, len(self.mock_state.metrics)) m.unregister() self.assertEqual(0, len(self.mock_state.metrics))
def test_register_unregister(self): self.assertEquals(0, len(self.mock_state.metrics)) m = metrics.Metric('test', fields={'pi': 3.14}) self.assertEquals(1, len(self.mock_state.metrics)) m.unregister() self.assertEquals(0, len(self.mock_state.metrics))
def test_properties(self): field_spec = [metrics.StringField('string')] m1 = metrics.Metric('/foo', 'foo', field_spec, 'us') self.assertEquals(m1.name, 'foo') self.assertEquals(m1.field_spec, field_spec) self.assertEquals(m1.units, 'us')