| 
					
				 | 
			
			
				@@ -0,0 +1,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import re 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Regular expressions to match the relevant log lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+insert_stats_regex = r"===== Insert Stats =====\n(\d+) messages sent\n(\d+) message bytes sent\n(\d+) Lamport clock \(latencies\)\n(\d+) local AES operations\n(\d+) milliseconds wall clock time\n\{(\d+);(\d+);(\d+)\} nanoseconds \{real;user;system\}\nMem: (\d+) KiB" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+extract_stats_regex = r"===== Extract Min Stats =====\n(\d+) messages sent\n(\d+) message bytes sent\n(\d+) Lamport clock \(latencies\)\n(\d+) local AES operations\n(\d+) milliseconds wall clock time\n\{(\d+);(\d+);(\d+)\} nanoseconds \{real;user;system\}\nMem: (\d+) KiB" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Function to parse insert and extract stats 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def parse_logs(log_file): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    with open(log_file, "r") as file: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_data = file.read() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    insert_stats = re.findall(insert_stats_regex, log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    extract_stats = re.findall(extract_stats_regex, log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return insert_stats, extract_stats 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Function to print stats table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def print_stats_table(stats): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print("Messages Sent | Message Bytes Sent | Lamport Clock | Local AES Operations | Wall Clock Time (ms) | Real Time | User Time | System Time | Memory (KiB)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print("-" * 117) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for stat in stats: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print("{:14} | {:19} | {:13} | {:21} | {:21} | {:10} | {:9} | {:12} | {:12}".format(*stat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if len(sys.argv) != 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print("Usage: python log_parser.py <log_file>") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sys.exit(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+log_file = sys.argv[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Parse logs and print stats table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+insert_stats, extract_stats = parse_logs(log_file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+print("Insert Stats:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+print_stats_table(insert_stats) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+print("Extract Min Stats:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+print_stats_table(extract_stats) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |