def test_update_table_column(): ctx = reload.context() fn = "/tmp/ssd1.csv" fn2 = "/tmp/ssd2.csv" csv1 = [[i, i] for i in range(10)] csv2 = [[i, i + 1] for i in range(1, 11)] n = len(csv1) n2 = len(csv2) write_csv(fn, ["ProposalID", "siteNumber"], csv1) write_csv(fn2, ["ProposalID", "siteNumber"], csv2) try: reload._updateDataIntoTableColumn(ctx, "SiteInformation", "ProposalID", fn, {}) rows = reload.readDataFromTable(ctx, "SiteInformation") assert (bag_contains(rows, [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv1])) reload._updateDataIntoTableColumn(ctx, "SiteInformation", "ProposalID", fn2, {}) rows = reload.readDataFromTable(ctx, "SiteInformation") assert (bag_contains(rows, [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv1 if row[0] not in list(map(lambda x: x[0], csv2))] + [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv2])) finally: reload.clearDatabase(ctx) reload.createTables(ctx) os.unlink(fn) os.unlink(fn2)
def do_test_post_table(verb1, verb2, src, cnttype, tablename, kvp1, kvp2, content1, content2, has_comments=False): print("cwd =", os.getcwd()) ctx = reload.context() pServer = Process(target=server.server, args=[ctx], kwargs={}) pServer.start() time.sleep(WAIT_PERIOD) pWorker = Process(target=reload.startWorker) pWorker.start() time.sleep(WAIT_PERIOD) try: print("get " + tablename) resp = requests.get("http://localhost:5000/table/" + tablename) assert (resp.json() == []) print("post " + tablename) resp = do_request_table(verb1, tablename, kvp1, src, cnttype, has_comments=has_comments) print(resp.text) assert resp.status_code == 200 taskid = resp.json() assert isinstance(taskid, str) wait_for_task_to_finish(taskid) print("get " + tablename) resp = requests.get("http://localhost:5000/table/" + tablename) respjson = resp.json() assert (bag_contains(respjson, content1)) print("post " + tablename) resp = do_request_table(verb2, tablename, kvp2, src, cnttype, has_comments=has_comments) assert resp.status_code == 200 taskid = resp.json() assert isinstance(taskid, str) wait_for_task_to_finish(taskid) print("get " + tablename) resp = requests.get("http://localhost:5000/table/" + tablename) respjson = resp.json() assert (bag_contains(respjson, content2)) finally: pWorker.terminate() pServer.terminate() reload.clearTasks() reload.clearDatabase(ctx) reload.createTables(ctx)
def do_test_insert_table(src, kvp, has_comments=False): ctx = reload.context() n = countrows(src, "text/csv") - (1 if has_comments else 0) try: reload.insertDataIntoTable(ctx, "SiteInformation", src, kvp) rows = reload.readDataFromTable(ctx, "SiteInformation") assert (bag_contains(rows, [{ "siteNumber": str(i), **kvp } for i in range(1, n + 1)])) reload.insertDataIntoTable(ctx, "SiteInformation", src, kvp) rows = reload.readDataFromTable(ctx, "SiteInformation") assert (bag_contains(rows, [{ "siteNumber": str(i), **kvp } for i in range(1, n + 1)] * 2)) finally: reload.clearDatabase(ctx) reload.createTables(ctx)
def test_post_table_column(): ctx = reload.context() fn = "/tmp/ssd1.csv" fn2 = "/tmp/ssd2.csv" csv1 = [[i, i] for i in range(10)] csv2 = [[i, i + 1] for i in range(1, 11)] n = len(csv1) n2 = len(csv2) write_csv(fn, ["ProposalID", "siteNumber"], csv1) write_csv(fn2, ["ProposalID", "siteNumber"], csv2) tablename = "SiteInformation" column = "ProposalID" kvp1 = kvp2 = {} cnttype = "text/csv" verb1 = verb2 = requests.post content1 = [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv1] content2 = [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv1 if row[0] not in list(map(lambda x: x[0], csv2)) ] + [{ "siteNumber": str(row[1]), "ProposalID": str(row[0]) } for row in csv2] pServer = Process(target=server.server, args=[ctx], kwargs={}) pServer.start() time.sleep(WAIT_PERIOD) pWorker = Process(target=reload.startWorker) pWorker.start() time.sleep(WAIT_PERIOD) try: resp = do_request_table_column(verb1, tablename, column, kvp1, fn, cnttype) assert resp.status_code == 200 taskid = resp.json() assert isinstance(taskid, str) wait_for_task_to_finish(taskid) print("get " + tablename) resp = requests.get("http://localhost:5000/table/" + tablename) respjson = resp.json() assert (bag_contains(respjson, content1)) print("post " + tablename) resp = do_request_table_column(verb2, tablename, column, kvp2, fn2, cnttype) assert resp.status_code == 200 taskid = resp.json() assert isinstance(taskid, str) wait_for_task_to_finish(taskid) print("get " + tablename) resp = requests.get("http://localhost:5000/table/" + tablename) respjson = resp.json() assert (bag_contains(respjson, content2)) finally: pWorker.terminate() pServer.terminate() reload.clearTasks() reload.clearDatabase(ctx) reload.createTables(ctx)