def _get_recent_runs_data(run_metadata_key, value, detail=False): num_runs = flask.request.args.get('num_runs', 10) with session_scope() as session: results = api.get_recent_runs_by_key_value_metadata( run_metadata_key, value, num_runs, session) runs = [] for result in results: if detail: run = result.to_dict() else: if result.passes > 0 and result.fails == 0: status = 'success' elif result.fails > 0: status = 'fail' else: continue run = { 'id': result.uuid, 'status': status, 'start_date': result.run_at.isoformat(), 'link': result.artifacts, } run_meta = api.get_run_metadata(result.uuid, session) for meta in run_meta: if meta.key == 'build_name': run['build_name'] = meta.value break runs.append(run) return runs
def test_get_recent_runs_by_key_value_metadata(self): run_a = api.create_run() run_b = api.create_run() run_c = api.create_run() api.add_run_metadata({'a_key': 'a_value'}, run_a.id) api.add_run_metadata({'a_key': 'a_value'}, run_c.id) api.add_run_metadata({'a_key': 'b_value'}, run_b.id) result = api.get_recent_runs_by_key_value_metadata('a_key', 'a_value') self.assertEqual(2, len(result)) self.assertIn(run_a.id, [x.id for x in result]) self.assertNotIn(run_b.id, [x.id for x in result]) self.assertIn(run_c.id, [x.id for x in result])
def test_get_recent_runs_by_key_value_metadata_one_run(self): timestamp = datetime.datetime(1914, 6, 28, 10, 45, 0) run_a = api.create_run(run_at=timestamp) run_b = api.create_run() run_c = api.create_run() api.add_run_metadata({'a_key': 'a_value'}, run_a.id) api.add_run_metadata({'a_key': 'a_value'}, run_c.id) api.add_run_metadata({'a_key': 'b_value'}, run_b.id) result = api.get_recent_runs_by_key_value_metadata('a_key', 'a_value', num_runs=1) self.assertEqual(1, len(result)) self.assertNotIn(run_a.id, [x.id for x in result]) self.assertNotIn(run_b.id, [x.id for x in result]) self.assertIn(run_c.id, [x.id for x in result])