示例#1
0
    def search_value(self,
                     metrics,
                     query,
                     from_timestamp=None,
                     to_timestamp=None,
                     aggregation='mean',
                     granularity=None):
        granularity = granularity or []
        predicate = storage.MeasureQuery(query)

        results = self._map_in_thread(
            self._find_measure,
            [(metric, aggregation, gran, predicate, from_timestamp,
              to_timestamp) for metric in metrics for gran in granularity or (
                  defin.granularity
                  for defin in metric.archive_policy.definition)])
        result = collections.defaultdict(list)
        for r in results:
            for metric, metric_result in six.iteritems(r):
                result[metric].extend(metric_result)

        # Sort the result
        for metric, r in six.iteritems(result):
            # Sort by timestamp asc, granularity desc
            r.sort(key=lambda t: (t[0], -t[1]))

        return result
示例#2
0
 def test_math(self):
     q = storage.MeasureQuery(
         {
             u"and": [
                 # v+5 is bigger 0
                 {u"≥": [{u"+": 5}, 0]},
                 # v-6 is not 5
                 {u"≠": [5, {u"-": 6}]},
             ],
         }
     )
     self.assertTrue(q(5))
     self.assertTrue(q(10))
     self.assertFalse(q(11))
    def search_value(self,
                     metrics,
                     query,
                     from_timestamp=None,
                     to_timestamp=None,
                     aggregation='mean'):
        results = {}
        predicate = storage.MeasureQuery(query)

        for metric in metrics:
            measures = self.get_measures(metric, from_timestamp, to_timestamp,
                                         aggregation)
            results[metric] = [(timestamp, granularity, value)
                               for timestamp, granularity, value in measures
                               if predicate(value)]
        return results
示例#4
0
 def test_empty(self):
     q = storage.MeasureQuery({})
     self.assertFalse(q(5))
     self.assertFalse(q(10))
示例#5
0
 def test_modulo(self):
     q = storage.MeasureQuery({"=": [{"%": 5}, 0]})
     self.assertTrue(q(5))
     self.assertTrue(q(10))
     self.assertFalse(q(-1))
     self.assertFalse(q(6))
示例#6
0
 def test_or(self):
     q = storage.MeasureQuery({"or": [{"=": 4}, {"=": 10}]})
     self.assertTrue(q(4))
     self.assertTrue(q(10))
     self.assertFalse(q(-1))
示例#7
0
 def test_and(self):
     q = storage.MeasureQuery({"and": [{">": 4}, {"<": 10}]})
     self.assertTrue(q(5))
     self.assertFalse(q(40))
     self.assertFalse(q(1))
示例#8
0
 def test_gt(self):
     q = storage.MeasureQuery({">": 4})
     self.assertTrue(q(40))
     self.assertFalse(q(4))
示例#9
0
    def test_find_measures(self):
        metric2, __ = self._create_metric()
        self.incoming.add_measures(self.metric.id, [
            incoming.Measure(datetime64(
                2014,
                1,
                1,
                12,
                0,
                1,
            ), 69),
            incoming.Measure(datetime64(2014, 1, 1, 12, 7, 31), 42),
            incoming.Measure(datetime64(2014, 1, 1, 12, 5, 31), 8),
            incoming.Measure(datetime64(2014, 1, 1, 12, 9, 31), 4),
            incoming.Measure(datetime64(2014, 1, 1, 12, 12, 45), 42),
        ])

        self.incoming.add_measures(metric2.id, [
            incoming.Measure(datetime64(2014, 1, 1, 12, 0, 5), 9),
            incoming.Measure(datetime64(2014, 1, 1, 12, 7, 31), 2),
            incoming.Measure(datetime64(2014, 1, 1, 12, 9, 31), 6),
            incoming.Measure(datetime64(2014, 1, 1, 12, 13, 10), 2),
        ])
        self.trigger_processing([str(self.metric.id), str(metric2.id)])

        self.assertEqual([
            (datetime64(2014, 1, 1), numpy.timedelta64(1, 'D'), 33),
        ],
                         self.storage.find_measure(
                             self.metric, storage.MeasureQuery({u"≥": 30}),
                             numpy.timedelta64(1, 'D')))

        self.assertEqual(
            [(datetime64(2014, 1, 1, 12), numpy.timedelta64(5, 'm'), 69),
             (datetime64(2014, 1, 1, 12, 10), numpy.timedelta64(5, 'm'), 42)],
            self.storage.find_measure(self.metric,
                                      storage.MeasureQuery({u"≥": 30}),
                                      numpy.timedelta64(5, 'm')))

        self.assertEqual([],
                         self.storage.find_measure(
                             metric2, storage.MeasureQuery({u"≥": 30}),
                             numpy.timedelta64(5, 'm')))

        self.assertEqual([],
                         self.storage.find_measure(
                             self.metric,
                             storage.MeasureQuery(
                                 {u"∧": [{
                                     u"eq": 100
                                 }, {
                                     u"≠": 50
                                 }]}), numpy.timedelta64(5, 'm')))

        self.assertEqual([],
                         self.storage.find_measure(
                             metric2,
                             storage.MeasureQuery(
                                 {u"∧": [{
                                     u"eq": 100
                                 }, {
                                     u"≠": 50
                                 }]}), numpy.timedelta64(5, 'm')))