Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #3
0
    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))