def test_creation_OnUpdateSchedule_success_with_activation_metrics_some_object( self): ''' creating a OnUpdateSchedule object should succeed and find Metrics if activation_metrics != None ''' class MyObj: def __init__(self): self.metrics = [ metrics.Datasource('uri_ds'), metrics.Datapoint('uri_dp') ] self.ds_anom = metrics.Anomaly(metrics.Datasource('uri_ds')) self.dp_tag = metrics.Tag(metrics.Datapoint('uri_dp'), key='key', value='value') my_obj = MyObj() sc = schedules.OnUpdateSchedule(activation_metrics=my_obj) self.assertEqual(sc.exec_on_load, False) expected_metrics = [ metrics.Datasource('uri_ds'), metrics.Datapoint('uri_dp'), metrics.Anomaly(metrics.Datasource('uri_ds')), metrics.Tag(metrics.Datapoint('uri_dp'), key='key', value='value') ] self.assertEqual( sorted(sc.activation_metrics, key=lambda x: x.__hash__()), sorted(expected_metrics, key=lambda x: x.__hash__())) self.assertEqual(sc.meets(), False)
def test_create_Tag_from_Datapoint_success(self): ''' creating a Tag object should succeed, and it should behave as a standard Datapoint object ''' uri = 'uri' dp = metrics.Datapoint(uri) tag = metrics.Tag(dp, key='key', value='value') dp_tag = metrics.Datapoint(uri=tag.uri) self.assertEqual(tag, dp_tag) ds_tag = metrics.Datasource(uri=tag.uri) self.assertNotEqual(tag, ds_tag)
def __init__(self): self.metrics = [ metrics.Datasource('uri_ds'), metrics.Datapoint('uri_dp') ] self.ds_anom = metrics.Anomaly(metrics.Datasource('uri_ds')) self.dp_tag = metrics.Tag(metrics.Datapoint('uri_dp'), key='key', value='value')
def test_create_Tag_from_Datasource_success(self): ''' creating a Tag object should succeed, and it should behave as a standard Datapoint object ''' uri = 'uri' keys = ['my_key', '1-my_key1', '_', '-', 'My_KEY'] values = ['my_value', '1-my_value1', '_', '-', '_My_VALUE_12_'] for key in keys: for value in values: ds = metrics.Datasource(uri) tag = metrics.Tag(ds, key=key, value=value) dp_tag = metrics.Datapoint(uri=tag.uri) self.assertEqual(tag, dp_tag) ds_tag = metrics.Datasource(uri=tag.uri) self.assertNotEqual(tag, ds_tag)
def test_creation_OnUpdateSchedule_success_with_activation_metrics_a_dict_with_metrics( self): ''' creating a OnUpdateSchedule object should succeed and find Metrics if activation_metrics != None ''' activation_metrics = { '0': metrics.Datasource('uri_1'), '1': metrics.Datapoint('uri_2'), '2': metrics.Anomaly(metrics.Datasource('uri_3')), '3': metrics.Tag(metrics.Datasource('uri_4'), key='key', value='value') } sc = schedules.OnUpdateSchedule(activation_metrics=activation_metrics) self.assertEqual(sc.exec_on_load, False) expected_metrics = [ metrics.Datasource('uri_1'), metrics.Datapoint('uri_2'), metrics.Anomaly(metrics.Datasource('uri_3')), metrics.Tag(metrics.Datasource('uri_4'), key='key', value='value') ] self.assertEqual( sorted(sc.activation_metrics, key=lambda x: x.__hash__()), sorted(expected_metrics, key=lambda x: x.__hash__())) self.assertEqual(sc.meets(), False)
def test_create_Tag_failure_invalid_value(self): ''' creating a Tag object should fail if value is not a string with characters [a-zA-Z0-9\-_] ''' key = 'key' values = [ None, 1, 1.1, ['a', 'list'], {'set'}, { 'a': 'dict' }, uuid.uuid4() ] dp = metrics.Datapoint('uri') for value in values: with self.assertRaises(TypeError) as cm: tag = metrics.Tag(dp, key=key, value=value) self.assertEqual(str(cm.exception), 'value is not a string: ' + str(value)) values = [ 'not valid uri', '.uri', 'user:uri', 'uri\n', 'uri\r\n', 'uri\t', ':uri', '\turi', '\nuri', '\0uri' ] for value in values: with self.assertRaises(TypeError) as cm: tag = metrics.Tag(dp, key=key, value=value) self.assertEqual(str(cm.exception), 'value is not a valid uri level: ' + value)