def test_wait_for_content_return_when_file_created(): tmp_file = pj(tmp_dir, "toto.json") def cr_file(): post_json(tmp_file, "data") t = Timer(0.1, cr_file) t.start() assert wait_for_content(tmp_file) == "data"
def test_wait_for_content_remove_file_after_reading(): tmp_file = pj(tmp_dir, "toto.json") def cr_file(): post_json(tmp_file, "toto") t = Timer(0.1, cr_file) t.start() assert wait_for_content(tmp_file) == "toto" assert not exists(tmp_file)
def test_wait_for_file_return_only_when_file_is_closed(): tmp_file = pj(tmp_dir, "toto.json") big_data = dict((str(i), None) for i in range(10000)) # use big amount of data to slow down write process def cr_file(): post_json(tmp_file, big_data) t = Timer(0.2, cr_file) t.start() assert wait_for_content(tmp_file) == big_data
def test_server_delete(): answer_file = pj(tmp_dir, "answer.json") oas = OAServerFile("doofus", wdir) oas.start() oas.register(answer_file) del_pth = pj(wdir, wait_for_content(answer_file, NB)['args']['urldelete']) post_json(del_pth, dict()) oas.join() assert not exists(del_pth)
def test_server_full_life(): answer_file = pj(tmp_dir, "answer.json") oas = OAServerFile("doofus", wdir) oas.start() oas.register(answer_file) ans = wait_for_content(answer_file, NB) cpt_pth = pj(wdir, ans['args']['url']) ping_pth = pj(wdir, ans['args']['urlping']) del_pth = pj(wdir, ans['args']['urldelete']) res = [] for a in (1, 2): post_json(cpt_pth, dict(workflow="pycode:" + pycode, urldata="a = %d" % a, urlreturn=answer_file)) answer_ping = pj(tmp_dir, "answer_ping.json") post_json(ping_pth, dict(url=answer_ping)) ans = wait_for_content(answer_ping, NB) res.append(ans['id'] == "doofus") res.append(ans['state'] in ('running', 'waiting')) ans = wait_for_content(answer_file, NB) res.append(ans['result'] == a) res.append(ans['id'] == "doofus") answer_ping = pj(tmp_dir, "answer_ping.json") post_json(ping_pth, dict(url=answer_ping)) ans = wait_for_content(answer_ping, NB) res.append(ans['id'] == "doofus") res.append(ans['state'] == 'waiting') post_json(del_pth, dict()) oas.join()
def test_server_ping(): answer_file = pj(tmp_dir, "answer.json") oas = OAServerFile("doofus", wdir) oas.start() oas.register(answer_file) ping_pth = pj(wdir, get_json(answer_file)['args']['urlping']) remove(answer_file) post_json(ping_pth, dict(url=answer_file)) ans = wait_for_content(answer_file, NB) res = [ans['state'] == 'waiting', ans['id'] == "doofus"] oas.stop() oas.join() assert all(res) assert not exists(ping_pth)
def test_server_do_not_react_to_unknown_files(): answer_file = pj(tmp_dir, "answer.json") oas = OAServerFile("doofus", wdir) oas.start() oas.register(answer_file) post_json(pj(wdir, "takapouet.cmd"), dict(a=1)) ping_pth = pj(wdir, get_json(answer_file)['args']['urlping']) remove(answer_file) post_json(ping_pth, dict(url=answer_file)) ans = wait_for_content(answer_file, NB) res = [ans['state'] == 'waiting', ans['id'] == "doofus"] oas.stop() oas.join() assert all(res)
def test_server_compute(): answer_file = pj(tmp_dir, "answer.json") oas = OAServerFile("doofus", wdir) oas.start() oas.register(answer_file) cpt_pth = pj(wdir, get_json(answer_file)['args']['url']) remove(answer_file) post_json(cpt_pth, dict(workflow="pycode:def main(a): return a", urldata="a = 1", urlreturn=answer_file)) ans = wait_for_content(answer_file, NB) res = [ans['result'] == 1, ans['id'] == "doofus"] oas.stop() oas.join() assert all(res) assert not exists(cpt_pth)
def test_wait_for_content_raise_error_if_no_file_created(): assert_raises(UserWarning, lambda: wait_for_content(pj(tmp_dir, "tutu.txt")))