Example #1
0
 def build_stats(self):  # pragma: no cover
   count_stats = CountStats(
     name=self._get_name(),
     description=self.description,
   )
   count_stats.set_from_tally(self.tally)
   return (count_stats,)
Example #2
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)
Example #3
0
 def test_update_stats_list_empty(self):
     test_list = [
         CountStats(name='a', description='a', count=1),
         CountStats(name='b', description='b', count=2),
     ]
     update_stats_list(test_list, {})
     self.assertEqual([
         CountStats(name='a', description='a', count=1),
         CountStats(name='b', description='b', count=2),
     ], test_list)
Example #4
0
 def create_count(name, description, tally):
     count_stats = CountStats(
         name=name,
         description=description,
     )
     count_stats.set_from_tally(tally)
     # Force JSON properties to get serialised
     count_stats.put()
     # Hide key for equality comparison
     count_stats.key = None
     return count_stats
Example #5
0
 def test_update_stats_list_add(self):
     test_list = [
         CountStats(name='a', description='a', count=1),
         CountStats(name='b', description='b', count=2),
     ]
     update_stats_list(
         test_list, {
             'c': CountStats(name='c', description='c', count=3),
             'd': CountStats(name='d', description='d', count=4),
         })
     self.assertEqual([
         CountStats(name='a', description='a', count=1),
         CountStats(name='b', description='b', count=2),
         CountStats(name='c', description='c', count=3),
         CountStats(name='d', description='d', count=4),
     ], test_list)
Example #6
0
 def create_count(name, description, tally):
   count_stats = CountStats(
     name=name,
     description=description,
   )
   count_stats.set_from_tally(tally)
   # Force JSON properties to get serialised
   count_stats.put()
   # Hide key for equality comparison
   count_stats.key = None
   return count_stats
Example #7
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()
Example #8
0
 def test_update_stats_list_replace(self):
     test_list = [
         CountStats(name='a', description='a', count=1),
         CountStats(name='b', description='b', count=2),
     ]
     update_stats_list(
         test_list, {
             'a': CountStats(name='a', description='a', count=10),
             'b': CountStats(name='b', description='b', count=20),
         })
     self.assertEqual([
         CountStats(name='a', description='a', count=10),
         CountStats(name='b', description='b', count=20),
     ], test_list)
Example #9
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))