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