|
1 import sys |
|
2 import os |
|
3 from os import listdir |
|
4 from os.path import isdir |
|
5 import csv |
|
6 |
|
7 def check_argv(name): |
|
8 if not os.path.exists(name): |
|
9 print name,' doesn\'t exist.' |
|
10 return False |
|
11 if not os.path.isdir(name): |
|
12 print name,' is not a dir.' |
|
13 return False |
|
14 file_list = os.listdir(name) |
|
15 properDir = False |
|
16 for current_file in file_list: |
|
17 if current_file.endswith('.csv'): |
|
18 properDir =True |
|
19 break |
|
20 if not properDir: |
|
21 print name,' is not a LET log dir' |
|
22 return False |
|
23 return True |
|
24 |
|
25 def find_logfile(name): |
|
26 file_list = os.listdir(name) |
|
27 for current_file in file_list: |
|
28 if current_file.endswith('.csv'): |
|
29 return name+'\\'+current_file |
|
30 return None |
|
31 |
|
32 |
|
33 def get_result_map(csvfile): |
|
34 map = {} |
|
35 file = open(csvfile,"r") |
|
36 lines = csv.reader(file) |
|
37 skip_file_line = True |
|
38 for line in lines: |
|
39 if skip_file_line: |
|
40 skip_file_line=False |
|
41 else: |
|
42 case_name = line[0] |
|
43 test_result = line[3] |
|
44 if map.has_key(case_name): |
|
45 print 'Duplicate casename:',case_name,' ignored' |
|
46 else: |
|
47 map[case_name] = test_result |
|
48 return map |
|
49 |
|
50 def diff_result(map_old, map_new): |
|
51 keys_new = map_new.keys() |
|
52 for key_new in keys_new: |
|
53 item_new = map_new[key_new] |
|
54 value_new = item_new |
|
55 if map_old.has_key(key_new): |
|
56 value_old = map_old[key_new] |
|
57 if not value_old == value_new: |
|
58 print 'CHANGE:',key_new,value_old,'-->',value_new |
|
59 else: |
|
60 print 'ADD:',key_new,value_new |
|
61 keys_old = map_old.keys() |
|
62 for key_old in map_old: |
|
63 item_old = map_old[key_old] |
|
64 value_old = item_old |
|
65 if not map_new.has_key(key_old): |
|
66 print 'REMOVE:',key_old,value_old |
|
67 |
|
68 if __name__ == '__main__': |
|
69 argv = sys.argv[1:] |
|
70 if len(argv)<2: |
|
71 print 'usage: logdiff base_log_dir derived_log_dir' |
|
72 else : |
|
73 old_file = argv[0] |
|
74 new_file = argv[1] |
|
75 if check_argv(old_file) and check_argv(new_file): |
|
76 new_map = get_result_map(find_logfile(new_file)) |
|
77 old_map = get_result_map(find_logfile(old_file)) |
|
78 diff_result(old_map,new_map) |
|
79 |
|
80 |