Changeset: 0e37bcfca618 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0e37bcfca618
Added Files:
        sql/test/sysmon/Tests/sys_user_statistics.SQL.py
        sql/test/sysmon/Tests/sys_user_statistics.stable.err
        sql/test/sysmon/Tests/sys_user_statistics.stable.out
Modified Files:
        sql/test/sysmon/Tests/All
Branch: userstats
Log Message:

Added a test for sys.user_statistics()


diffs (121 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,3 +1,4 @@
 sysqueue
 sys_queue_rotate
 sys_queue_expand
+sys_user_statistics
diff --git a/sql/test/sysmon/Tests/sys_user_statistics.SQL.py 
b/sql/test/sysmon/Tests/sys_user_statistics.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/sysmon/Tests/sys_user_statistics.SQL.py
@@ -0,0 +1,65 @@
+import pymonetdb
+import os
+
+users = ['user1', 'user2', 'user3', 'user4', 'user5', 'user6', 'user7']
+try:
+    mdbdbh = pymonetdb.connect(database = os.environ['TSTDB'], port = 
int(os.environ['MAPIPORT']), hostname = os.environ['MAPIHOST'], autocommit=True)
+    #mdbdbh = pymonetdb.connect(database = 'usrstat', autocommit=True)
+    mdbcursor = mdbdbh.cursor()
+    rowcnt = mdbcursor.execute('create procedure sleep(i int) external name 
alarm.sleep')
+    rowcnt = mdbcursor.execute('call sys.sleep(1000)')
+    rowcnt = mdbcursor.execute('select querycount from sys.user_statistics() 
where username = \'monetdb\'')
+    mdbqrycnt = mdbcursor.fetchone()[0]
+
+    # create and run some user queries to populate the user_statistics table
+    for usr in users:
+        mdbcursor.execute('create user "{usr}" with password \'{usr}\' name 
\'{usr}\' schema "sys"'.format(usr=usr))
+        mdbcursor.execute('grant all on procedure sys.sleep to 
{usr}'.format(usr=usr))
+
+        try:
+            usrdbh = pymonetdb.connect(database = os.environ['TSTDB'], port = 
int(os.environ['MAPIPORT']), hostname = os.environ['MAPIHOST'], username=usr, 
password=usr, autocommit=True)
+            #usrdbh = pymonetdb.connect(database = 'usrstat', username=usr, 
password=usr, autocommit=True)
+            usrcursor = usrdbh.cursor()
+            usrcursor.execute('select current_user as myname')
+            usrcursor.execute('call sys.sleep(1000)')
+        except pymonetdb.exceptions.Error as e:
+            print(usr + ' query failed')
+            print(e)
+        finally:
+            usrdbh.close()
+
+    # now check user_statistics again
+    rowcnt = mdbcursor.execute('select username, querycount, maxquery from 
sys.user_statistics()')
+    records = mdbcursor.fetchall()
+    print("User statistics after: {cnt}".format(cnt=rowcnt))
+    for row in records:
+        if row[0] == 'monetdb':
+            print((row[0], int(row[1]) - mdbqrycnt, row[2]))
+        else:
+            print(row)
+except pymonetdb.exceptions.Error as e:
+    print(e)
+finally:
+    # clean up the created users and don't stop by an error
+    for usr in users:
+        try:
+            mdbcursor.execute('drop user {usr}'.format(usr=usr))
+        except pymonetdb.exceptions.Error as e:
+            print(e)
+    try:
+        mdbcursor.execute('drop procedure sleep')
+    except pymonetdb.exceptions.Error as e:
+        print(e)
+    mdbdbh.close()
+
+
+
+
+#import pymonetdb
+#import os
+#dbh = pymonetdb.connect(database = 'usrstat')
+#cur = dbh.cursor()
+#cur.execute('create user "user1" with password \'user1\' name \'user1\' 
schema "sys"')
+#dbh = pymonetdb.connect(database = 'usrstat', username='user1', 
password='user1')
+#cur = dbh.cursor()
+#cur.execute('select current_user')
diff --git a/sql/test/sysmon/Tests/sys_user_statistics.stable.err 
b/sql/test/sysmon/Tests/sys_user_statistics.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/sysmon/Tests/sys_user_statistics.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'sys_user_statistics` in directory 'sql/test/sysmon` itself:
+
+
+# 14:56:33 >  
+# 14:56:33 >  "/usr/bin/python3.6" "sys_user_statistics.SQL.py" 
"sys_user_statistics"
+# 14:56:33 >  
+
+
+# 14:56:33 >  
+# 14:56:33 >  "Done."
+# 14:56:33 >  
+
diff --git a/sql/test/sysmon/Tests/sys_user_statistics.stable.out 
b/sql/test/sysmon/Tests/sys_user_statistics.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/sysmon/Tests/sys_user_statistics.stable.out
@@ -0,0 +1,21 @@
+stdout of test 'sys_user_statistics` in directory 'sql/test/sysmon` itself:
+
+
+# 14:56:33 >  
+# 14:56:33 >  "/usr/bin/python3.6" "sys_user_statistics.SQL.py" 
"sys_user_statistics"
+# 14:56:33 >  
+
+User statistics after: 8
+('monetdb', 15, 'call sys.sleep(1000)\n;')
+('user1', 2, 'call sys.sleep(1000)\n;')
+('user2', 2, 'call sys.sleep(1000)\n;')
+('user3', 2, 'call sys.sleep(1000)\n;')
+('user4', 2, 'call sys.sleep(1000)\n;')
+('user5', 2, 'call sys.sleep(1000)\n;')
+('user6', 2, 'call sys.sleep(1000)\n;')
+('user7', 2, 'call sys.sleep(1000)\n;')
+
+# 14:56:33 >  
+# 14:56:33 >  "Done."
+# 14:56:33 >  
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to