gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-grid5k] 105/189: work towards parsing logs


From: gnunet
Subject: [taler-grid5k] 105/189: work towards parsing logs
Date: Thu, 28 Apr 2022 10:47:55 +0200

This is an automated email from the git hooks/post-receive script.

marco-boss pushed a commit to branch master
in repository grid5k.

commit aa3db1687911d3eb624d27b4aeb578e9eb7e2dea
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Tue Mar 22 17:34:57 2022 +0100

    work towards parsing logs
---
 additional/explain-visualizer/explain.py | 104 ++++++++++++++++++++-----------
 1 file changed, 66 insertions(+), 38 deletions(-)

diff --git a/additional/explain-visualizer/explain.py 
b/additional/explain-visualizer/explain.py
index b3f147f..5a8e838 100755
--- a/additional/explain-visualizer/explain.py
+++ b/additional/explain-visualizer/explain.py
@@ -59,10 +59,9 @@ partitioned_re = compile('(.*)_([0-9]+|default)')
 
 args = None
 
-
-def get_explain() -> dict:
-    args.sql = args.sql.replace("\n", "").replace('"', "")
-    sql = "EXPLAIN (ANALYZE, VERBOSE, BUFFERS, FORMAT JSON) " + args.sql + ";"
+def get_explain(sql) -> dict:
+    sql = sql.replace("\n", "").replace('"', "")
+    sql = "EXPLAIN (ANALYZE, VERBOSE, BUFFERS, FORMAT JSON) " + sql + ";"
     try:
         analyze_json = check_output(args=['psql',
                                           '-U', args.db_user,
@@ -154,9 +153,8 @@ def print_non_indexed():
     print(f"(Total: {total})")
 
 
-def run():
-    explain = get_explain()
-    plan = explain['Plan']
+def visualize(analyze_json):
+    plan = analyze_json['Plan']
 
     print("General:\n")
     print(f"Estimated Rows:          {plan['Plan Rows']}")
@@ -180,41 +178,71 @@ def run():
         plan.print()
 
 
+def analyze_from_query():
+    explain = get_explain(args.sql)
+    visualize(explain)
+
+
+def analyze_from_logs():
+    global plans
+    plans = {}
+    with open(args.file, 'r') as logs:
+        print(logs)
+
+
 def main():
     parser = argparse.ArgumentParser(description='Summarize Explain Analyze of 
GNU Taler Database')
-    parser.add_argument('-U', '--user',
-                        dest='db_user',
-                        type=str,
-                        default="",
-                        help='Database user, default current user')
-    parser.add_argument('-P', '--password',
-                        dest='db_pw',
-                        type=str,
-                        default="",
-                        help='Database password, default ""')
-    parser.add_argument('-H', '--host',
-                        dest='db_host',
-                        type=str,
-                        default="",
-                        help='Database host, default unix socket')
-    parser.add_argument('-d', '--database',
-                        dest='db_name',
-                        type=str,
-                        default="",
-                        help='Database name, default current user')
-    parser.add_argument('-p', '--port',
-                        dest='db_port',
-                        type=str,
-                        default="",
-                        help='Database port, default 5432')
-    parser.add_argument(dest='sql',
-                        metavar='sql',
-                        type=str,
-                        help='The query to run and analyze')
+
+    global_args = argparse.ArgumentParser(add_help=False)
+    global_args.add_argument('-U', '--user',
+                             dest='db_user',
+                             type=str,
+                             default="",
+                             help='Database user, default current user')
+    global_args.add_argument('-P', '--password',
+                             dest='db_pw',
+                             type=str,
+                             default="",
+                             help='Database password, default ""')
+    global_args.add_argument('-H', '--host',
+                             dest='db_host',
+                             type=str,
+                             default="",
+                             help='Database host, default unix socket')
+    global_args.add_argument('-d', '--database',
+                             dest='db_name',
+                             type=str,
+                             default="",
+                             help='Database name, default current user')
+    global_args.add_argument('-p', '--port',
+                             dest='db_port',
+                             type=str,
+                             default="",
+                             help='Database port, default 5432')
+
+    s_p = parser.add_subparsers()
+
+    log_p = s_p.add_parser('logs',  
+                           parents=[global_args],
+                           help='Execute queries from a log file (postgres 
must have set log_statement=all)')
+    log_p.add_argument(metavar='FILE',
+                       dest='file',
+                       type=str,
+                       help='Log file to parse and execute queries')
+    log_p.set_defaults(func=analyze_from_logs)
+
+    sql_p = s_p.add_parser('query',
+                           parents=[global_args],
+                           help='Execute a specified query')
+    sql_p.add_argument(metavar='SQL',
+                       dest='sql',
+                       type=str,
+                       help='The query to run and analyze')
+    sql_p.set_defaults(func=analyze_from_query)
+
     global args
     args = parser.parse_args()
-
-    run()
+    args.func()
 
 
 if __name__ == '__main__':

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]