Changeset: f17ab4c9405d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f17ab4c9405d
Modified Files:
sql/test/mapi/Tests/clientinfo-mclient.SQL.py
Branch: Aug2024
Log Message:
Add tests for client_{info,application,remark} properties
diffs (116 lines):
diff --git a/sql/test/mapi/Tests/clientinfo-mclient.SQL.py
b/sql/test/mapi/Tests/clientinfo-mclient.SQL.py
--- a/sql/test/mapi/Tests/clientinfo-mclient.SQL.py
+++ b/sql/test/mapi/Tests/clientinfo-mclient.SQL.py
@@ -1,5 +1,6 @@
import os
import subprocess
+import urllib.parse
TSTDB = os.environ['TSTDB']
MAPIPORT = os.environ['MAPIPORT']
@@ -10,26 +11,27 @@ FROM sys.sessions
WHERE sessionid = current_sessionid()
"""
-cmd = [
- 'mclient',
- '-d', TSTDB,
- '-p', MAPIPORT,
- '-fexpanded',
- '-s', QUERY,
-]
-
-out = subprocess.check_output(cmd, encoding='latin1')
+def run_mclient(**extra_args):
+ url = f'monetdb://localhost:{MAPIPORT}/{TSTDB}'
+ if extra_args:
+ url += '?' + urllib.parse.urlencode(extra_args)
+ cmd = [ 'mclient', '-d', url, '-fexpanded', '-s', QUERY ]
+ out = subprocess.check_output(cmd, encoding='latin1')
+ fields = dict()
+ for line in out.splitlines()[1:]:
+ line = line.strip()
+ if line:
+ k, v = line.split('|', 1)
+ k = k.strip()
+ v = v.strip()
+ fields[k] = v
+ return fields
-# print(out)
-fields = dict()
-for line in out.splitlines()[1:]:
- line = line.strip()
- if line:
- k, v = line.split('|', 1)
- k = k.strip()
- v = v.strip()
- fields[k] = v
+#######################################################################
+# By default, most fields get filled in
+
+fields = run_mclient()
assert fields['language'] == 'sql',\
f'Found {fields["language"]!r}'
@@ -52,3 +54,59 @@ assert fields['clientpid'] != 'null' and
assert fields['remark'] == 'null',\
f'Found {fields["remark"]!r}'
+
+
+#######################################################################
+# client_info=off suppresses everything sent by the client.
+# Server still fills in language and peer
+
+fields = run_mclient(client_info='off')
+
+assert fields['language'] == 'sql',\
+ f'Found {fields["language"]!r}'
+
+assert fields['peer'] == '<UNIX SOCKET>' or ']:' in fields['peer'],\
+ f'Found {fields["peer"]!r}'
+
+assert fields['hostname'] == 'null',\
+ f'Found {fields["hostname"]!r}'
+
+# could be mclient-11.51.0, mclient.exe, or whatever
+assert fields['application'] == 'null',\
+ f'Found {fields["application"]!r}'
+
+assert fields['client'] == 'null',\
+ f'Found {fields["client"]!r}'
+
+assert fields['clientpid'] == 'null',\
+ f'Found {fields["clientpid"]!r}'
+
+assert fields['remark'] == 'null',\
+ f'Found {fields["remark"]!r}'
+
+#######################################################################
+# We can override application and remark
+
+fields = run_mclient(client_application='app', client_remark='mark')
+
+# could be mclient-11.51.0, mclient.exe, or whatever
+assert fields['application'] == 'app',\
+ f'Found {fields["application"]!r}'
+
+assert fields['remark'] == 'mark',\
+ f'Found {fields["remark"]!r}'
+
+
+#######################################################################
+# We can override application and remark, but client_info=off
+# suppresses that.
+
+fields = run_mclient(client_application='app', client_remark='mark',
client_info='off')
+
+# could be mclient-11.51.0, mclient.exe, or whatever
+assert fields['application'] == 'null',\
+ f'Found {fields["application"]!r}'
+
+assert fields['remark'] == 'null',\
+ f'Found {fields["remark"]!r}'
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]