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)
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,)
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
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()
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))