def setUp(self): self.alias_key = '_avg' config = {'blueflood': {'urls':["http://dummy.com"], 'tenant':'dummyTenant', 'submetric_aliases': {self.alias_key:'average', "_enum": 'enum' }}} self.finder = TenantBluefloodFinder(config) self.metric1 = "a.b.c" self.metric2 = "e.f.g" self.metric3 = "x.y.z" self.reader = TenantBluefloodReader(self.metric1, self.finder.tenant, self.finder.bf_query_endpoint, self.finder.enable_submetrics, self.finder.submetric_aliases, None) metric_with_enum1 = self.metric3 + '.' + 'v1' metric_with_enum2 = self.metric3 + '.' + 'v2' self.enum_reader1 = TenantBluefloodReader(metric_with_enum1, self.finder.tenant, self.finder.bf_query_endpoint, self.finder.enable_submetrics, self.finder.submetric_aliases, "v1") self.enum_reader2 = TenantBluefloodReader(metric_with_enum2, self.finder.tenant, self.finder.bf_query_endpoint, self.finder.enable_submetrics, self.finder.submetric_aliases, "v2") self.node1 = TenantBluefloodLeafNode(self.metric1, self.reader) self.node2 = TenantBluefloodLeafNode(self.metric2, self.reader) self.node3 = TenantBluefloodLeafNode(metric_with_enum1, self.enum_reader1) self.node4 = TenantBluefloodLeafNode(metric_with_enum2, self.enum_reader2) self.bfc = BluefloodClient(self.finder.bf_query_endpoint, self.finder.tenant, self.finder.enable_submetrics, self.finder.submetric_aliases) auth.set_auth(None)
def setUp(self): self.alias_key = '_avg' config = { 'blueflood': { 'urls': ["http://dummy.com"], 'tenant': 'dummyTenant', 'submetric_aliases': { self.alias_key: 'average' } } } self.finder = TenantBluefloodFinder(config) self.metric1 = "a.b.c" self.metric2 = "e.f.g" self.reader = TenantBluefloodReader(self.metric1, self.finder.tenant, self.finder.bf_query_endpoint, self.finder.enable_submetrics, self.finder.submetric_aliases) self.node1 = TenantBluefloodLeafNode(self.metric1, self.reader) self.node2 = TenantBluefloodLeafNode(self.metric2, self.reader) self.bfc = BluefloodClient(self.finder.bf_query_endpoint, self.finder.tenant, self.finder.enable_submetrics, self.finder.submetric_aliases) auth.set_auth(None)
def test_process_path(self): b = BluefloodClient("host", "tenant", False, None) step = 100 big_step = step * 1000 val_step = 12 first_time = 1385074800000 first_val = 48 second_time = first_time + big_step second_val = first_val + val_step third_time = second_time + big_step third_val = second_val + val_step data_key = NonNestedDataKey(u'average') values = [{ u'timestamp': first_time, u'average': first_val, u'numPoints': 97 }, { u'timestamp': second_time, u'average': second_val, u'numPoints': 3 }, { u'timestamp': third_time, u'average': third_val, u'numPoints': 3 }] enum_values = [{ u'timestamp': first_time, u'enum_values': { u'v1': first_val }, u'numPoints': 97 }, { u'timestamp': second_time, u'enum_values': { u'v1': second_val }, u'numPoints': 3 }, { u'timestamp': third_time, u'enum_values': { u'v1': third_val }, u'numPoints': 3 }] enum_data_key = NestedDataKey('enum_values', 'v1') start_time = first_time / 1000 end_time = third_time / 1000 + 1 #test that start and end time exactly match the datapoints ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual(ret, (first_val, second_val, third_val)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual(ret, (first_val, second_val, third_val)) ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual(ret, (first_val, second_val, third_val)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual(ret, (first_val, second_val, third_val)) #test end time past end of data end_time += 2 * step ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual( ret, (first_val, second_val, third_val, None, None)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual( ret, (first_val, second_val, third_val, None, None)) #test start time before beginning of data end_time -= 2 * step start_time -= 2 * step ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual( ret, (None, None, first_val, second_val, third_val)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual( ret, (None, None, first_val, second_val, third_val)) #test end time before beginning of data end_time -= 3 * step start_time -= 3 * step ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual(ret, (None, None, None, None, None)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual(ret, (None, None, None, None, None)) #test start and end outside of data and interpolation in the middle second_time = first_time + (3 * big_step) third_time = second_time + (3 * big_step) start_time = first_time - (2 * big_step) start_time /= 1000 end_time = third_time + (2 * big_step) end_time = (end_time / 1000) + 1 values = [{ u'timestamp': first_time, u'average': first_val, u'numPoints': 97 }, { u'timestamp': second_time, u'average': second_val, u'numPoints': 3 }, { u'timestamp': third_time, u'average': third_val, u'numPoints': 3 }] enum_values = [{ u'timestamp': first_time, u'enum_values': { u'v1': first_val }, u'numPoints': 97 }, { u'timestamp': second_time, u'enum_values': { u'v1': second_val }, u'numPoints': 3 }, { u'timestamp': third_time, u'enum_values': { u'v1': third_val }, u'numPoints': 3 }] ret = b.process_path(values, start_time, end_time, step, data_key) self.assertSequenceEqual( ret, (None, None, first_val, first_val + 4, first_val + 8, second_val, second_val + 4, second_val + 8, third_val, None, None)) ret = b.process_path(enum_values, start_time, end_time, step, enum_data_key) self.assertSequenceEqual( ret, (None, None, first_val, first_val + 4, first_val + 8, second_val, second_val + 4, second_val + 8, third_val, None, None))