예제 #1
0
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))
예제 #2
0
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}")