def load_csv_data_once( tmp_path_factory, pytestconfig, worker_id, conn_pool: ConnectionPool, space: str, ): root_tmp_dir = tmp_path_factory.getbasetemp().parent fn = root_tmp_dir / f"csv-data-{space}" is_file = True with FileLock(str(fn) + ".lock"): if not fn.is_file(): data_dir = os.path.join(CURR_PATH, "data", space) user = pytestconfig.getoption("user") password = pytestconfig.getoption("password") sess = conn_pool.get_session(user, password) space_desc = load_csv_data(pytestconfig, sess, data_dir) sess.release() fn.write_text(json.dumps(space_desc.__dict__)) is_file = False else: space_desc = SpaceDesc.from_json(json.loads(fn.read_text())) if is_file: logging.info(f"session-{worker_id} need not to load {space} csv data") yield space_desc else: logging.info(f"session-{worker_id} load {space} csv data") yield space_desc os.remove(str(fn))
def load_csv_data_once(space: str): with open(SPACE_TMP_PATH, "r") as f: for sp in json.loads(f.readline()): if sp.get("name", None) == space: return SpaceDesc.from_json(sp) raise ValueError(f"Invalid space name: {space}")