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