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

Reply via email to