def kw_fixtures(storage_socket): kw1 = ptl.models.KeywordSet(**{"values": {"something": "kwfixture"}}) ret = storage_socket.add_keywords([kw1]) yield list(ret['data']) r = storage_socket.del_keywords(ret['data'][0]) assert r == 1
def test_keywords_add(storage_socket): kw = ptl.models.KeywordSet(**{ "values": { "o": 5 }, "hash_index": "something_unique" }) ret = storage_socket.add_keywords([kw, kw.copy()]) assert len(ret["data"]) == 2 assert ret["meta"]["n_inserted"] == 1 assert ret["data"][0] == ret["data"][1] ret = storage_socket.add_keywords([kw]) assert ret["meta"]["n_inserted"] == 0 ret = storage_socket.get_keywords(hash_index="something_unique") ret_kw = ret["data"][0] assert ret["meta"]["n_found"] == 1 assert ret_kw.values == kw.values assert 1 == storage_socket.del_keywords(id=ret_kw.id)
def test_keywords_mixed_add_get(storage_socket): opts1 = ptl.models.KeywordSet(values={"o": 5}) id1 = storage_socket.add_keywords([opts1])["data"][0] opts2 = ptl.models.KeywordSet(values={"o": 6}) opts = storage_socket.get_add_keywords_mixed( [opts1, opts2, id1, bad_id1, bad_id2])["data"] assert opts[0].id == id1 assert opts[1].values["o"] == 6 assert opts[2].id == id1 assert opts[3] is None assert opts[4] is None assert 1 == storage_socket.del_keywords(id=id1) assert 1 == storage_socket.del_keywords(id=opts[1].id)
def storage_results(storage_socket): # Add two waters water = ptl.data.get_molecule("water_dimer_minima.psimol") water2 = ptl.data.get_molecule("water_dimer_stretch.psimol") mol_insert = storage_socket.add_molecules([water, water2]) kw1 = ptl.models.KeywordSet(**{"program": "a", "values": {}}) kwid1 = storage_socket.add_keywords([kw1])["data"][0] page1 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][0], "method": "M1", "basis": "B1", "keywords": kwid1, "program": "P1", "driver": "energy", "return_result": 5, "hash_index": 0, "status": 'COMPLETE' }) page2 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][1], "method": "M1", "basis": "B1", "keywords": kwid1, "program": "P1", "driver": "energy", "return_result": 10, "hash_index": 1, "status": 'COMPLETE' }) page3 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][0], "method": "M1", "basis": "B1", "keywords": kwid1, "program": "P2", "driver": "gradient", "return_result": 15, "hash_index": 2, "status": 'COMPLETE' }) page4 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][0], "method": "M2", "basis": "B1", "keywords": kwid1, "program": "P2", "driver": "gradient", "return_result": 15, "hash_index": 3, "status": 'COMPLETE' }) page5 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][1], "method": "M2", "basis": "B1", "keywords": kwid1, "program": "P1", "driver": "gradient", "return_result": 20, "hash_index": 4, "status": 'COMPLETE' }) page6 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][1], "method": "M3", "basis": "B1", "keywords": None, "program": "P1", "driver": "gradient", "return_result": 20, "hash_index": 5, "status": 'COMPLETE' }) results_insert = storage_socket.add_results( [page1, page2, page3, page4, page5, page6]) assert results_insert["meta"]["n_inserted"] == 6 yield storage_socket # Cleanup result_ids = [x for x in results_insert["data"]] ret = storage_socket.del_results(result_ids) assert ret == results_insert["meta"]["n_inserted"] ret = storage_socket.del_molecules(id=mol_insert["data"]) assert ret == mol_insert["meta"]["n_inserted"] all_tasks = storage_socket.get_queue()['data'] storage_socket.del_tasks(id=[task.id for task in all_tasks])
def test_results_add(storage_socket): # Add two waters water = ptl.data.get_molecule("water_dimer_minima.psimol") water2 = ptl.data.get_molecule("water_dimer_stretch.psimol") mol_insert = storage_socket.add_molecules([water, water2]) kw1 = ptl.models.KeywordSet(**{"program": "a", "values": {}}) kwid1 = storage_socket.add_keywords([kw1])["data"][0] page1 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][0], "method": "M1", "basis": "B1", "keywords": kwid1, "program": "P1", "driver": "energy", "extras": { "other_data": 5 }, "hash_index": 0, }) page2 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][1], "method": "M1", "basis": "B1", "keywords": kwid1, "program": "P1", "driver": "energy", "extras": { "other_data": 10 }, "hash_index": 1, }) page3 = ptl.models.ResultRecord( **{ "molecule": mol_insert["data"][1], "method": "M22", "basis": "B1", "keywords": None, "program": "P1", "driver": "energy", "extras": { "other_data": 10 }, "hash_index": 2, }) ids = [] ret = storage_socket.add_results([page1, page2]) assert ret["meta"]["n_inserted"] == 2 ids.extend(ret['data']) # add with duplicates: ret = storage_socket.add_results([page1, page2, page3]) assert ret["meta"]["n_inserted"] == 1 assert len(ret['data']) == 3 # first 2 found are None assert len(ret["meta"]['duplicates']) == 2 for res_id in ret['data']: if res_id is not None: ids.append(res_id) ret = storage_socket.del_results(ids) assert ret == 3 ret = storage_socket.del_molecules(id=mol_insert["data"]) assert ret == 2