def get_subunit_results(build_uuid, dataset_name, sample_interval, db_uri, build_name='tempest-full', data_path=None, s3=None): engine = create_engine(db_uri) Session = sessionmaker(bind=engine) session = Session() runs = api.get_runs_by_key_value('build_uuid', build_uuid, session=session) results = [] for run in runs: # Check if we are interested in this build at all meta = api.get_run_metadata(run.uuid, session=session) build_names = [x.value for x in meta if x.key == 'build_name'] if len(build_names) >= 1: # Skip build_names that aren't selected if not build_name == build_names[0]: continue db_build_name = build_names[0] else: continue # NOTE(mtreinish): Only be concerned with single node to start if 'multinode' in db_build_name: continue result = _get_data_for_run(run, sample_interval, session, data_path=data_path, s3=s3) if result: results.append(result) session.close() return results
def test_get_runs_by_key_value(self): api.create_run() run_b = api.create_run() api.add_run_metadata({'not_a_key': 'not_a_value'}, run_b.id) found_runs = api.get_runs_by_key_value('not_a_key', 'not_a_value') self.assertEqual(1, len(found_runs)) self.assertEqual(run_b.id, found_runs[0].id) self.assertEqual(run_b.uuid, found_runs[0].uuid)
def get_runs_by_name(db_uri, build_name, session=None): if not session: engine = create_engine(db_uri) Session = sessionmaker(bind=engine) session = Session() runs = api.get_runs_by_key_value('build_name', build_name, session=session) fail = [x for x in runs if x.fails > 0] passes = [x for x in runs if x.fails == 0] out = list(itertools.chain.from_iterable(zip(fail, passes))) leftover = (len(out) / 2) + 1 full_out = out + passes[int(leftover):] return full_out
def _get_runs(change_id): """Returns the dict of run objects associated with a changeID When given the change_id of a Gerrit change, a connection will be made to the upstream subunit2sql db and query all run meta having that change_id :param change_id: the Gerrit change_id to query :return: a json dict of run_meta objects """ engine = create_engine('mysql://*****:*****@logstash.openstack.org' + ':3306/subunit2sql') Session = sessionmaker(bind=engine) session = Session() list_of_runs = api.get_runs_by_key_value(key="build_change", value=change_id, session=session) ret_list = [] for run in list_of_runs: ret_list.append(run.to_dict()) return ret_list
def find_metadata(self, metadata): session = self.session_factory() runs = db_api.get_runs_by_key_value('stestr_run_meta', metadata, session=session) return [x.uuid for x in runs]
def get_runs_from_build_name(build_name): with session_scope() as session: build_name = parse.unquote(build_name) db_runs = api.get_runs_by_key_value('build_name', build_name, session) runs = [run.to_dict() for run in db_runs] return jsonify({'runs': runs})
def get_runs_from_build_name(build_name): session = get_session() db_runs = api.get_runs_by_key_value('build_name', build_name, session) runs = [run.to_dict() for run in db_runs] return jsonify({'runs': runs})