示例#1
0
 def test_update_cq_stats_create(self):
     _clear_cq_stats()
     update_cq_stats(
         {
             'test-project': [
                 CountStats(name='test-count',
                            description='test-count-description',
                            count=123),
                 ListStats(name='test-list',
                           description='test-list-description',
                           unit='test-unit'),
             ],
         }, 60, datetime(2000, 1, 1, 1), datetime(2000, 1, 1, 2))
     self.assertEqual(1, CQStats.query().count())
     cq_stats = CQStats.query().get()
     self.assertEqual('test-project', cq_stats.project)
     self.assertEqual(60, cq_stats.interval_minutes)
     self.assertEqual(datetime(2000, 1, 1, 1), cq_stats.begin)
     self.assertEqual(datetime(2000, 1, 1, 2), cq_stats.end)
     self.assertEqual([
         CountStats(name='test-count',
                    description='test-count-description',
                    count=123),
     ], cq_stats.count_stats)
     self.assertEqual([
         ListStats(name='test-list',
                   description='test-list-description',
                   unit='test-unit'),
     ], cq_stats.list_stats)
示例#2
0
 def build_stats(self):  # pragma: no cover
   list_stats = ListStats(
     name=self._get_name(),
     description=self.description,
     unit=self.unit,
   )
   list_stats.set_from_points(self.points)
   return (list_stats,)
示例#3
0
 def create_list(name, description, unit, points):
     list_stats = ListStats(
         name=name,
         description=description,
         unit=unit,
     )
     list_stats.set_from_points(points)
     # Same hacks here as create_count().
     list_stats.put()
     list_stats.key = None
     return list_stats
示例#4
0
 def create_list(name, description, unit, points):
   list_stats = ListStats(
     name=name,
     description=description,
     unit=unit,
   )
   list_stats.set_from_points(points)
   # Same hacks here as create_count().
   list_stats.put()
   list_stats.key = None
   return list_stats
示例#5
0
def _reset_stats(): # pragma: no cover
  for cq_stats in CQStats.query():
    cq_stats.key.delete()
  assert CQStats.query().count() == 0
  cq_stats = CQStats(
    project='test',
    interval_minutes=1,
    begin=datetime.utcfromtimestamp(0),
    end=datetime.utcfromtimestamp(1),
    count_stats=[
      CountStats(
        name='test-count',
        description='Test count description',
        count=3,
        highest_100=[
          [2, {'data_point': 'c'}],
          [1, {'data_point': 'b'}],
          [0, {'data_point': 'a'}],
        ],
        lowest_100=[
          [0, {'data_point': 'a'}],
          [1, {'data_point': 'b'}],
          [2, {'data_point': 'c'}],
        ],
      ),
    ],
    list_stats=[
      ListStats(
        name='test-list',
        description='Test list description',
        unit='test_unit',
        highest_100=[
          [2, {'data_point': 'c'}],
          [1, {'data_point': 'b'}],
          [0, {'data_point': 'a'}],
        ],
        lowest_100=[
          [0, {'data_point': 'a'}],
          [1, {'data_point': 'b'}],
          [2, {'data_point': 'c'}],
        ],
      ),
    ],
  ).put()
  return cq_stats.id()
示例#6
0
    def test_query_names(self):  # pragma: no cover
        _clear_stats()
        _add_stats('project_a', 40, 789, [
            CountStats(name='match_a', description='', count=100),
            ListStats(name='match_b', description='', unit='in'),
            CountStats(name='mismatch_a', description='', count=0),
        ])
        _add_stats('project_b', 50, 1234, [
            CountStats(name='match_a', description='', count=200),
            ListStats(name='mismatch_b', description='', unit=''),
        ])
        _add_stats('project_c', 60, 5678, [
            CountStats(name='mismatch_c', description='', count=0),
            ListStats(name='mismatch_d', description='', unit=''),
        ])
        expectation = {
            'more':
            False,
            'results': [{
                'project':
                'project_b',
                'interval_minutes':
                50 * minutes_per_day,
                'begin':
                1234,
                'end':
                4321234,
                'stats': [{
                    'type': 'count',
                    'name': 'match_a',
                    'description': '',
                    'count': 200,
                }],
            }, {
                'project':
                'project_a',
                'interval_minutes':
                40 * minutes_per_day,
                'begin':
                789,
                'end':
                3456789,
                'stats': [{
                    'type': 'count',
                    'name': 'match_a',
                    'description': '',
                    'count': 100,
                }, {
                    'type': 'list',
                    'name': 'match_b',
                    'description': '',
                    'unit': 'in',
                    'sample_size': 0,
                    'min': 0,
                    'max': 0,
                    'mean': 0,
                    'percentile_10': 0,
                    'percentile_25': 0,
                    'percentile_50': 0,
                    'percentile_75': 0,
                    'percentile_90': 0,
                    'percentile_95': 0,
                    'percentile_99': 0,
                }],
            }],
        }

        response = self.test_app.get('/stats/query',
                                     params={
                                         'names': 'match_a,match_b',
                                     })
        self.assertEquals(expectation, _parse_body(response))

        response = self.test_app.get('/stats/query',
                                     params={
                                         'names': 'match_*',
                                     })
        self.assertEquals(expectation, _parse_body(response))