def testCqStats(self): project = 'chromium' cron_app = webtest.TestApp( webapp2.WSGIApplication([ ('/check-cq', cron.CheckCQHandler), ])) cron_app.get('/check-cq') cq_data = self._make_api_call( 'cq_stats_get', params={ 'project': project }, ).json generated = {} for name, klass in (('single_run_data', models.CqStat), ('queue_time_data', models.CqTimeInQueueForPatchStat), ('total_time_data', models.CqTotalTimeForPatchStat)): generated[name] = [ protojson.decode_message(klass.ProtoModel(), json.dumps(x)) for x in cq_data[name] ] expected = controller.get_cq_stats(project) for key in expected: expected[key] = [x.ToMessage() for x in expected[key]] self.assertEqual(generated, expected)
def testCqStats(self): project = 'chromium' cron_app = webtest.TestApp( webapp2.WSGIApplication([ ('/check-cq', cron.CheckCQHandler), ]) ) cron_app.get('/check-cq') cq_data = self._make_api_call( 'cq_stats_get', params={'project': project}, ).json generated = {} for name, klass in (('single_run_data', models.CqStat), ('queue_time_data', models.CqTimeInQueueForPatchStat), ('total_time_data', models.CqTotalTimeForPatchStat)): generated[name] = [ protojson.decode_message(klass.ProtoModel(), json.dumps(x)) for x in cq_data[name]] expected = controller.get_cq_stats(project) for key in expected: expected[key] = [x.ToMessage() for x in expected[key]] self.assertEqual(generated, expected)
def cq_stats_get(self, request): cq_stats = controller.get_cq_stats(request.project) single_run_data = [x.ToMessage() for x in cq_stats['single_run_data']] queue_time_data = [x.ToMessage() for x in cq_stats['queue_time_data']] total_time_data = [x.ToMessage() for x in cq_stats['total_time_data']] return CqProjectStats( single_run_data=single_run_data, queue_time_data=queue_time_data, total_time_data=total_time_data, )
def get(self, project): cq_data = controller.get_cq_stats(project) length_cols = ['timestamp', 'length'] length_rows = [ [calendar.timegm(stat.timestamp.timetuple()), stat.length] for stat in cq_data['single_run_data']] length_data = { 'cols': length_cols, 'rows': length_rows, 'unit': 'count', } self.response.headers['Content-Type'] = 'application/json' self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.write(json.dumps(length_data))