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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to