Changeset: 654eead2c112 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=654eead2c112 Modified Files: sql/test/sysmon/Tests/sys_queue_expand.SQL.py Branch: default Log Message:
On Windows, Python multiprocessing code cannot be at the top level, ie must be inside a function diffs (123 lines): diff --git a/sql/test/sysmon/Tests/sys_queue_expand.SQL.py b/sql/test/sysmon/Tests/sys_queue_expand.SQL.py --- a/sql/test/sysmon/Tests/sys_queue_expand.SQL.py +++ b/sql/test/sysmon/Tests/sys_queue_expand.SQL.py @@ -6,10 +6,8 @@ ### import pymonetdb -import os, sys +import os import multiprocessing as mp -import traceback -import time db = os.environ['TSTDB'] pt = int(os.environ['MAPIPORT']) @@ -32,55 +30,61 @@ def do_error(query, res, expected_res): print("query results:\n" + str(res)) print("expected:\n" + str(expected_res)) -mstdbh = None -try: - mstdbh = pymonetdb.connect(database=db, port=pt, autocommit=True) - mstcur = mstdbh.cursor() +def main(): + mstdbh = None + mstcur = None + try: + mstdbh = pymonetdb.connect(database=db, port=pt, autocommit=True) + mstcur = mstdbh.cursor() - query = 'create procedure sleep(i int) external name alarm.sleep;' - mstcur.execute(query) + query = 'create procedure sleep(i int) external name alarm.sleep;' + mstcur.execute(query) - query = 'select username, status, query from sys.queue() where status = \'running\' order by query' - expected_res = [('monetdb', 'running', 'select username, status, query from sys.queue() where status = \\\'running\\\' order by query\n;')] - rowcnt = mstcur.execute(query) - res = mstcur.fetchall() - if rowcnt != len(expected_res) or res != expected_res: - do_error(query, res, expected_res) + query = 'select username, status, query from sys.queue() where status = \'running\' order by query' + expected_res = [('monetdb', 'running', 'select username, status, query from sys.queue() where status = \\\'running\\\' order by query\n;')] + rowcnt = mstcur.execute(query) + res = mstcur.fetchall() + if rowcnt != len(expected_res) or res != expected_res: + do_error(query, res, expected_res) - # Setup a list of processes that we want to run - jobs = [mp.Process(target=worker_task, args=()) for x in range(3)] - # Run processes - [p.start() for p in jobs] + # Setup a list of processes that we want to run + jobs = [mp.Process(target=worker_task, args=()) for x in range(3)] + # Run processes + [p.start() for p in jobs] - # Check the long running query, but lets first wait for a moment for the - # workers to start with their queries - mstcur.execute('call sys.sleep(500)') - query = 'select username, status, query from sys.queue() where query like \'call sys.sleep(5000)%\' order by query' - expected_res = [ - ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;'), - ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;'), - ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;')] - rowcnt = mstcur.execute(query) - res = mstcur.fetchall() - if rowcnt != len(expected_res) or res != expected_res: - do_error(query, res, expected_res) + # Check the long running query, but lets first wait for a moment for the + # workers to start with their queries + mstcur.execute('call sys.sleep(500)') + query = 'select username, status, query from sys.queue() where query like \'call sys.sleep(5000)%\' order by query' + expected_res = [ + ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;'), + ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;'), + ('monetdb', 'running', 'call sys.sleep('+SLEEP_TIME+')\n;')] + rowcnt = mstcur.execute(query) + res = mstcur.fetchall() + if rowcnt != len(expected_res) or res != expected_res: + do_error(query, res, expected_res) - # Exit the completed processes - [p.join() for p in jobs] + # Exit the completed processes + [p.join() for p in jobs] - # sys.queue() should have been expanded from 4 to 8, so we should be able - # to have 7 queries in the queue - mstcur.execute('select 6') - mstcur.execute('select 7') - query = 'select count(*) from sys.queue()' - expected_res = 7 - rowcnt = mstcur.execute(query) - res = mstcur.fetchall() - if rowcnt != 1 or res[0][0] != expected_res: - do_error(query, res, expected_res) -except pymonetdb.exceptions.Error as e: - print(e) -finally: - if mstdbh is not None: - mstcur.execute('drop procedure sleep;') - mstdbh.close() + # sys.queue() should have been expanded from 4 to 8, so we should be able + # to have 7 queries in the queue + mstcur.execute('select 6') + mstcur.execute('select 7') + query = 'select count(*) from sys.queue()' + expected_res = 7 + rowcnt = mstcur.execute(query) + res = mstcur.fetchall() + if rowcnt != 1 or res[0][0] != expected_res: + do_error(query, res, expected_res) + except pymonetdb.exceptions.Error as e: + print(e) + finally: + if mstdbh is not None: + if mstcur is not None: + mstcur.execute('drop procedure sleep;') + mstdbh.close() + +if __name__ == "__main__": + main() _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list