srcanamdw_os/leavescan/test/LET/logdiff.py
changeset 0 83f4b4db085c
child 2 99082257a271
equal deleted inserted replaced
-1:000000000000 0:83f4b4db085c
       
     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