mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| 
 | |
| # usage: ./munge.py ORIG/*.csv
 | |
| # munge CSV files into a format that asciidocFX understands
 | |
| 
 | |
| import csv, os, sys
 | |
| 
 | |
| snames = ["ntfs", "winfsp-t0", "winfsp-t1", "winfsp-tinf", "dokany"]
 | |
| file_tnames = [
 | |
|     "file_create_test",
 | |
|     "file_open_test",
 | |
|     "file_overwrite_test",
 | |
|     "file_list_test",
 | |
|     "file_delete_test"]
 | |
|     #"file_mkdir_test",
 | |
|     #"file_rmdir_test"]
 | |
| rdwr_tnames = [
 | |
|     "rdwr_cc_read_page_test",
 | |
|     "rdwr_cc_write_page_test",
 | |
|     "rdwr_nc_read_page_test",
 | |
|     "rdwr_nc_write_page_test",
 | |
|     "mmap_read_test",
 | |
|     "mmap_write_test"]
 | |
| tnames = file_tnames + rdwr_tnames
 | |
| aggregate = min
 | |
| 
 | |
| tests = {}
 | |
| for arg in sys.argv[1:]:
 | |
|     name = os.path.splitext(os.path.basename(arg))[0]
 | |
|     if name[-1].isdigit() and name[-2] == '-':
 | |
|         name = name[:-2]
 | |
|     with open(arg, "r") as fin:
 | |
|         for row in csv.reader(fin):
 | |
|             tests.\
 | |
|                 setdefault(row[0], {}).\
 | |
|                 setdefault(name, {}).\
 | |
|                 setdefault(int(row[1]), []).\
 | |
|                 append(float(row[2]))
 | |
| 
 | |
| if False:
 | |
|     for tname in (tnames if tnames else sorted(tests.keys())):
 | |
|         print "%s:" % tname
 | |
|         test = tests[tname]
 | |
|         for sname in (snames if snames else sorted(test.keys())):
 | |
|             if sname not in test:
 | |
|                 continue
 | |
|             print "    %s:" % sname
 | |
|             series = test[sname]
 | |
|             for param in sorted(series.keys()):
 | |
|                 print "        %s: %s -> %.2f" % (param, series[param], aggregate(series[param]))
 | |
| else:
 | |
|     for tname in (tnames if tnames else sorted(tests.keys())):
 | |
|         with open(tname + ".csv", "w") as fout:
 | |
|             test = tests[tname]
 | |
|             for sname in (snames if snames else sorted(test.keys())):
 | |
|                 if sname not in test:
 | |
|                     continue
 | |
|                 fout.write("//%s\r\n" % sname)
 | |
|                 series = test[sname]
 | |
|                 for param in sorted(series.keys()):
 | |
|                     fout.write("%s,%.2f\r\n" % (param, aggregate(series[param])))
 | |
|     def master_write(fname, tnames):
 | |
|         with open(fname + ".csv", "w") as fout:
 | |
|             for sname in snames:
 | |
|                 fout.write("//%s\r\n" % sname)
 | |
|                 for tname in (tnames if tnames else sorted(tests.keys())):
 | |
|                     test = tests[tname]
 | |
|                     if sname not in test:
 | |
|                         continue
 | |
|                     series = test[sname]
 | |
|                     param = max(series.keys())
 | |
|                     fout.write("%s,%.2f\r\n" % (tname, aggregate(series[param])))
 | |
|     master_write("file_tests", file_tnames)
 | |
|     master_write("rdwr_tests", rdwr_tnames)
 |