Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | |
| 3 | import os |
| 4 | import sys |
| 5 | |
| 6 | class BreakPoint: |
| 7 | def __init__(self, bp_name): |
| 8 | self.name = bp_name |
| 9 | self.values = {} |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 10 | self.var_values = {} |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 11 | |
| 12 | def recordArgument(self, arg_name, value): |
| 13 | self.values[arg_name] = value |
| 14 | |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 15 | def recordVariable(self, var_name, var_value): |
| 16 | self.var_values[var_name] = var_value |
| 17 | |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 18 | def __repr__(self): |
| 19 | print self.name |
| 20 | items = self.values.items() |
| 21 | for i in range(len(items)): |
| 22 | print items[i][0]," = ",items[i][1] |
| 23 | return '' |
| 24 | |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 25 | def compare_args(self, other): |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 26 | return cmp(self.values, other.values) |
| 27 | |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 28 | def compare_vars(self, other): |
| 29 | return cmp(self.var_values, other.var_values) |
| 30 | |
| 31 | def __cmp__(self, other): |
| 32 | return cmp(self.values, other.values) |
| 33 | |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 34 | def read_input(filename, dict): |
| 35 | f = open(filename, "r") |
| 36 | lines = f.readlines() |
| 37 | for l in range(len(lines)): |
| 38 | c = lines[l].split() |
| 39 | if c[0] == "#Argument": |
| 40 | bp = dict.get(c[2]) |
| 41 | if bp is None: |
| 42 | bp = BreakPoint(c[1]) |
| 43 | dict[c[2]] = bp |
| 44 | bp.recordArgument(c[3], c[4]) |
| 45 | |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 46 | if c[0] == "#Variables": |
| 47 | bp = dict.get(c[2]) |
| 48 | if bp is None: |
| 49 | bp = BreakPoint(c[1]) |
| 50 | dict[c[2]] = bp |
| 51 | bp.recordVariable(c[3], c[4]) |
| 52 | |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 53 | f.close() |
| 54 | return |
| 55 | |
| 56 | f1_breakpoints = {} |
| 57 | read_input(sys.argv[1], f1_breakpoints) |
| 58 | f1_items = f1_breakpoints.items() |
| 59 | |
| 60 | f2_breakpoints = {} |
| 61 | read_input(sys.argv[2], f2_breakpoints) |
| 62 | f2_items = f2_breakpoints.items() |
| 63 | |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 64 | arg_mismatch = 0 |
| 65 | var_mismatch = 0 |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 66 | for f2bp in range(len(f2_items)): |
| 67 | id = f2_items[f2bp][0] |
| 68 | bp = f2_items[f2bp][1] |
| 69 | bp1 = f1_breakpoints.get(id) |
| 70 | if bp1 is None: |
| 71 | print "bp is missing" |
| 72 | else: |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 73 | if bp1.compare_args(bp): |
| 74 | arg_mismatch = arg_mismatch + 1 |
| 75 | if bp1.compare_vars(bp): |
| 76 | var_mismatch = var_mismatch + 1 |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 77 | |
| 78 | l2 = len(f2_items) |
| 79 | print "==========" |
| 80 | if l2 != 0: |
Devang Patel | 7dddad5 | 2010-12-09 23:18:58 +0000 | [diff] [blame] | 81 | print sys.argv[3]," Argument success rate is", (l2-arg_mismatch)*100/l2,"%" |
| 82 | print sys.argv[3]," Variable success rate is", (l2-var_mismatch)*100/l2,"%" |
Devang Patel | 8802f0b | 2010-12-07 00:34:59 +0000 | [diff] [blame] | 83 | else: |
| 84 | print sys.argv[3]," success rate is 100%" |
| 85 | print "==========" |