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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list