Changeset: 257d1cb16282 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=257d1cb16282 Added Files: sql/test/sysmon/Tests/sys_queue.sql sql/test/sysmon/Tests/sys_queue.test Removed Files: sql/test/sysmon/Tests/create_sleep.sql sql/test/sysmon/Tests/create_sleep.stable.err sql/test/sysmon/Tests/create_sleep.stable.out sql/test/sysmon/Tests/create_sleep.test sql/test/sysmon/Tests/drop_sleep.reqtests sql/test/sysmon/Tests/drop_sleep.sql sql/test/sysmon/Tests/drop_sleep.stable.err sql/test/sysmon/Tests/drop_sleep.stable.out sql/test/sysmon/Tests/drop_sleep.test sql/test/sysmon/Tests/sys_queue_expand.reqtests sql/test/sysmon/Tests/sys_queue_expand.stable.err sql/test/sysmon/Tests/sys_queue_expand.stable.out sql/test/sysmon/Tests/sys_user_statistics.reqtests sql/test/sysmon/Tests/sys_user_statistics.stable.err sql/test/sysmon/Tests/sys_user_statistics.stable.out sql/test/sysmon/Tests/sysqueue.sql sql/test/sysmon/Tests/sysqueue.test Modified Files: sql/test/sysmon/Tests/All sql/test/sysmon/Tests/sys_queue_expand.SQL.py sql/test/sysmon/Tests/sys_user_statistics.SQL.py Branch: mtest Log Message:
Cleaned up and converted sysmon tests diffs (truncated from 432 to 300 lines): diff --git a/sql/test/sysmon/Tests/All b/sql/test/sysmon/Tests/All --- a/sql/test/sysmon/Tests/All +++ b/sql/test/sysmon/Tests/All @@ -1,5 +1,3 @@ -sysqueue -create_sleep +sys_queue sys_queue_expand sys_user_statistics -drop_sleep diff --git a/sql/test/sysmon/Tests/create_sleep.sql b/sql/test/sysmon/Tests/create_sleep.sql deleted file mode 100644 --- a/sql/test/sysmon/Tests/create_sleep.sql +++ /dev/null @@ -1,1 +0,0 @@ -create procedure sleep(i int) external name alarm.sleep; diff --git a/sql/test/sysmon/Tests/create_sleep.stable.err b/sql/test/sysmon/Tests/create_sleep.stable.err deleted file mode 100644 --- a/sql/test/sysmon/Tests/create_sleep.stable.err +++ /dev/null @@ -1,12 +0,0 @@ -stderr of test 'create_sleep` in directory 'sql/test/sysmon` itself: - - -# 16:42:16 > -# 16:42:16 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21836" "--port=39319" -# 16:42:16 > - - -# 16:42:16 > -# 16:42:16 > "Done." -# 16:42:16 > - diff --git a/sql/test/sysmon/Tests/create_sleep.stable.out b/sql/test/sysmon/Tests/create_sleep.stable.out deleted file mode 100644 --- a/sql/test/sysmon/Tests/create_sleep.stable.out +++ /dev/null @@ -1,13 +0,0 @@ -stdout of test 'create_sleep` in directory 'sql/test/sysmon` itself: - - -# 16:42:16 > -# 16:42:16 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21836" "--port=39319" -# 16:42:16 > - -#create procedure sleep(i int) external name alarm.sleep; - -# 16:42:16 > -# 16:42:16 > "Done." -# 16:42:16 > - diff --git a/sql/test/sysmon/Tests/create_sleep.test b/sql/test/sysmon/Tests/create_sleep.test deleted file mode 100644 --- a/sql/test/sysmon/Tests/create_sleep.test +++ /dev/null @@ -1,4 +0,0 @@ -statement ok -create procedure sleep(i int) external name alarm.sleep - - diff --git a/sql/test/sysmon/Tests/drop_sleep.reqtests b/sql/test/sysmon/Tests/drop_sleep.reqtests deleted file mode 100644 --- a/sql/test/sysmon/Tests/drop_sleep.reqtests +++ /dev/null @@ -1,1 +0,0 @@ -create_sleep diff --git a/sql/test/sysmon/Tests/drop_sleep.sql b/sql/test/sysmon/Tests/drop_sleep.sql deleted file mode 100644 --- a/sql/test/sysmon/Tests/drop_sleep.sql +++ /dev/null @@ -1,1 +0,0 @@ -drop procedure sleep; diff --git a/sql/test/sysmon/Tests/drop_sleep.stable.err b/sql/test/sysmon/Tests/drop_sleep.stable.err deleted file mode 100644 --- a/sql/test/sysmon/Tests/drop_sleep.stable.err +++ /dev/null @@ -1,12 +0,0 @@ -stderr of test 'drop_sleep` in directory 'sql/test/sysmon` itself: - - -# 16:42:18 > -# 16:42:18 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21836" "--port=39319" -# 16:42:18 > - - -# 16:42:18 > -# 16:42:18 > "Done." -# 16:42:18 > - diff --git a/sql/test/sysmon/Tests/drop_sleep.stable.out b/sql/test/sysmon/Tests/drop_sleep.stable.out deleted file mode 100644 --- a/sql/test/sysmon/Tests/drop_sleep.stable.out +++ /dev/null @@ -1,13 +0,0 @@ -stdout of test 'drop_sleep` in directory 'sql/test/sysmon` itself: - - -# 16:42:18 > -# 16:42:18 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21836" "--port=39319" -# 16:42:18 > - -#drop procedure sleep; - -# 16:42:18 > -# 16:42:18 > "Done." -# 16:42:18 > - diff --git a/sql/test/sysmon/Tests/drop_sleep.test b/sql/test/sysmon/Tests/drop_sleep.test deleted file mode 100644 --- a/sql/test/sysmon/Tests/drop_sleep.test +++ /dev/null @@ -1,4 +0,0 @@ -statement ok -drop procedure sleep - - diff --git a/sql/test/sysmon/Tests/sysqueue.sql b/sql/test/sysmon/Tests/sys_queue.sql rename from sql/test/sysmon/Tests/sysqueue.sql rename to sql/test/sysmon/Tests/sys_queue.sql diff --git a/sql/test/sysmon/Tests/sysqueue.test b/sql/test/sysmon/Tests/sys_queue.test rename from sql/test/sysmon/Tests/sysqueue.test rename to sql/test/sysmon/Tests/sys_queue.test 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 @@ -1,53 +1,93 @@ +### +# Check that when a new query is executed while sys.queue() is still filled +# with unfinished queries (e.g. RUNNING, PAUZED and PREPARED(?)), sys.queue() +# will automatically expand the queue size +# Need multiprocessing for the long-running queries +### + import pymonetdb import os, sys import multiprocessing as mp import traceback import time -# The job for worker process -def exec_query(): +db = os.environ['TSTDB'] +pt = int(os.environ['MAPIPORT']) +SLEEP_TIME='5000' + +def worker_task(): dbh = None try: - dbh = pymonetdb.connect(database = os.environ['TSTDB'], port = int(os.environ['MAPIPORT']), hostname = os.environ['MAPIHOST'], autocommit=True) - #dbh = pymonetdb.connect(database = 'demo', autocommit=True) + dbh = pymonetdb.connect(database=db, port=pt, autocommit=True) cur = dbh.cursor() - cur.execute('call sys.sleep(3000)') + cur.execute('call sys.sleep('+SLEEP_TIME+')') except pymonetdb.exceptions.Error as e: print(e) finally: if dbh is not None: dbh.close() -if __name__ == '__main__': - mstdbh = None - try: - mstdbh = pymonetdb.connect(database = os.environ['TSTDB'], port = int(os.environ['MAPIPORT']), hostname = os.environ['MAPIHOST'], autocommit=True) - #mstdbh = pymonetdb.connect(database = 'demo', autocommit=True) - mstcur = mstdbh.cursor() +def do_error(query, res, expected_res): + print("query text:\n" + query) + 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() - rowcnt = mstcur.execute('select \'before\', username,status,query from sys.queue() where status = \'running\' order by status, query') - print("Before sleep: {no}".format(no=rowcnt)) - [print(row) for row in mstcur.fetchall()] + query = 'create procedure sleep(i int) external name alarm.sleep;' + mstcur.execute(query) - # Setup a list of processes that we want to run - jobs = [mp.Process(target=exec_query, args=()) for x in range(3)] - # Run processes - [p.start() for p in jobs] + 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] - time.sleep(1) - rowcnt = mstcur.execute('select \'during\', username,status,query from sys.queue() where status = \'running\' order by status, query') - print("\nDuring sleep: {no}".format(no=rowcnt)) - [print(row) for row in mstcur.fetchall()] + # 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] - rowcnt = mstcur.execute('select \'after\', username,status,query from sys.queue() where status = \'running\' order by status, query') - print("\nAfter sleep: {no}".format(no=rowcnt)) - [print(row) for row in mstcur.fetchall()] - - except pymonetdb.exceptions.Error as e: - print(e) - finally: - if mstdbh is not None: - 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 username, status, query from sys.queue() order by query' + expected_res = [ + ('monetdb', 'finished', 'call sys.sleep('+SLEEP_TIME+')\n;'), + ('monetdb', 'finished', 'call sys.sleep('+SLEEP_TIME+')\n;'), + ('monetdb', 'finished', 'call sys.sleep('+SLEEP_TIME+')\n;'), + ('monetdb', 'finished', 'select 6\n;'), + ('monetdb', 'finished', 'select 7\n;'), + ('monetdb', 'running', 'select username, status, query from sys.queue() order by query\n;'), + ('monetdb', 'finished', "select username, status, query from sys.queue() where query like \\'call sys.sleep(5000)%\\' 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) +except pymonetdb.exceptions.Error as e: + print(e) +finally: + if mstdbh is not None: + mstcur.execute('drop procedure sleep;') + mstdbh.close() diff --git a/sql/test/sysmon/Tests/sys_queue_expand.reqtests b/sql/test/sysmon/Tests/sys_queue_expand.reqtests deleted file mode 100644 --- a/sql/test/sysmon/Tests/sys_queue_expand.reqtests +++ /dev/null @@ -1,1 +0,0 @@ -create_sleep diff --git a/sql/test/sysmon/Tests/sys_queue_expand.stable.err b/sql/test/sysmon/Tests/sys_queue_expand.stable.err deleted file mode 100644 --- a/sql/test/sysmon/Tests/sys_queue_expand.stable.err +++ /dev/null @@ -1,12 +0,0 @@ -stderr of test 'sys_queue_expand` in directory 'sql/test/sysmon` itself: - - -# 18:07:00 > -# 18:07:00 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-31724" "--port=38231" -# 18:07:00 > - - -# 18:07:00 > -# 18:07:00 > "Done." -# 18:07:00 > - diff --git a/sql/test/sysmon/Tests/sys_queue_expand.stable.out b/sql/test/sysmon/Tests/sys_queue_expand.stable.out deleted file mode 100644 --- a/sql/test/sysmon/Tests/sys_queue_expand.stable.out +++ /dev/null @@ -1,23 +0,0 @@ -stdout of test 'sys_queue_expand` in directory 'sql/test/sysmon` itself: - - -# 18:07:00 > -# 18:07:00 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-31724" "--port=38231" -# 18:07:00 > - -Before sleep: 1 -('before', 'monetdb', 'running', "select \\'before\\', username,status,query from sys.queue() where status = \\'running\\' order by status, query\n;") - -During sleep: 4 -('during', 'monetdb', 'running', 'call sys.sleep(3000)\n;') -('during', 'monetdb', 'running', 'call sys.sleep(3000)\n;') -('during', 'monetdb', 'running', 'call sys.sleep(3000)\n;') -('during', 'monetdb', 'running', "select \\'during\\', username,status,query from sys.queue() where status = \\'running\\' order by status, query\n;") - -After sleep: 1 -('after', 'monetdb', 'running', "select \\'after\\', username,status,query from sys.queue() where status = \\'running\\' order by status, query\n;") - -# 16:54:22 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list