annotate importFromOpenMind/importer/check_ismi_transaction_log.py @ 50:1be17309db79

small fix.
author casties
date Thu, 23 Feb 2017 19:57:36 +0100
parents f8cd7db4178c
children 1f160e595167
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
2 # coding: utf-8
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
3
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
4 import sys, re
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
5
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
6 # max number of lines to read (for testing)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
7 maxLinecnt = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
8
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
9 # do not output deleted nodes
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
10 omitDeleted = True
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
11
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
12 # active log levels for logging
49
f8cd7db4178c output number of checked saves.
casties
parents: 44
diff changeset
13 #logLevels = {'DEBUG', 'INFO', 'WARNING', 'ERROR', 'SYSMSG'}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
14 #logLevels = {'INFO', 'WARNING', 'ERROR', 'SYSMSG'}
49
f8cd7db4178c output number of checked saves.
casties
parents: 44
diff changeset
15 logLevels = {'ERROR', 'SYSMSG'}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
16
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
17 def log(level, message):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
18 if level in logLevels:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
19 print("%s: %s"%(level, message))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
20
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
21
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
22 def prettyPrintNode(node):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
23 nt = node['node-type']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
24 att = ''
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
25 if nt == 'ENTITY':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
26 att = " %s=%s "%('oc',node['object-class'])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
27
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
28 elif nt == 'ATTRIBUTE':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
29 att = " %s=%s "%('name',node['name'])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
30
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
31 elif nt == 'RELATION':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
32 att = " %s=%s "%('oc',node['object-class'])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
33
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
34 s = "%s%s[%s]"%(nt, att, node)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
35 return s
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
36
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
37
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
38 nodeCsvFieldList = ['node_type', 'id', 'row_id', 'object_class', 'user', 'public', 'type',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
39 'version', 'modification_time', 'system_status', 'content_type',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
40 'source_id', 'source_modif', 'source_obj_class', 'target_id', 'target_modif', 'target_obj_class',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
41 'own_value_b64']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
42
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
43 nodeCsvFieldMap = {'node_type':'node-type', 'id':'id', 'row_id':'row-id', 'object_class':'object-class', 'user':'user',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
44 'public':'public', 'type':'type',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
45 'version':'version', 'modification_time':'mtime', 'system_status':'system-status', 'content_type':'content-type',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
46 'source_id':'source-id', 'source_modif':'source-mtime', 'source_obj_class':'source-oc',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
47 'target_id':'target-id', 'target_modif':'target-mtime', 'target_obj_class':'target-oc',
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
48 'own_value_b64':'b64-value'}
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
49
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
50
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
51 def printHeaderCsv(outFile):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
52 s = ""
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
53 for cf in nodeCsvFieldList:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
54 if s == "":
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
55 s += "%s"%cf
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
56 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
57 s += ",%s"%cf
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
58
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
59 print(s, file=outFile)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
60
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
61
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
62 def printNodeCsv(node, outFile):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
63 s = ""
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
64 for cf in nodeCsvFieldList:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
65 nf = nodeCsvFieldMap[cf]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
66 if s == "":
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
67 s += "%s"%(node.get(nf, ''))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
68 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
69 s += ",%s"%(node.get(nf, ''))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
70
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
71 print(s, file=outFile)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
72
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
73
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
74 def parseThread(line):
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
75 tm = re.match('(\d+-\d+-\d+ \d+:\d+:\d+),\d+ (\S+)', line)
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
76 if tm:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
77 tstamp = tm.group(1)
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
78 tid = tm.group(2)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
79
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
80 return {'time': tstamp, 'tid': tid}
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
81
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
82 return None
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
83
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
84
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
85 def parseStart(line):
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
86 pt = parseThread(line)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
87 tstamp = pt['time']
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
88 tid = pt['tid']
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
89
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
90 sm = re.search('START Saving (\w+) id=(\w+)', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
91 if sm:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
92 return {'tid': tid, 'time': tstamp, 'oc': sm.group(1), 'id': sm.group(2)}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
93
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
94 sm = re.search('START remove entity: user=\S+ entity=Entity\[rowId=\d+, id=(\d+)', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
95 if sm:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
96 return {'tid': tid, 'time': tstamp, 'id': sm.group(1)}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
97
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
98 sm = re.search('END Saving (\w+) id=(\w+)', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
99 if sm:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
100 return {'tid': tid, 'time': tstamp, 'oc': sm.group(1), 'id': sm.group(2)}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
101
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
102 sm = re.search('END remove entity: user=\S+ entity=Entity\[rowId=\d+, id=(\d+)', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
103 if sm:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
104 return {'tid': tid, 'time': tstamp, 'id': sm.group(1)}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
105
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
106 return None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
107
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
108
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
109 def parseSave(line):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
110 match = re.search('([A-Z]+)\[([^\]]+)\]', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
111 if match:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
112 data = {'node-type': match.group(1)}
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
113 segs = match.group(2).split(', ')
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
114 for seg in segs:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
115 k, v = seg.split('=', 1)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
116
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
117 data[k] = v.strip('"')
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
118
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
119 # normalize attribute's name to object-class
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
120 if k == 'name':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
121 data['object-class'] = v.strip('"')
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
122
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
123 return data
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
124
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
125 return None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
126
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
127
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
128 def equalNodes(prev, cur):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
129 #log("DEBUG", "compare: %s vs %s"%(prev, cur))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
130 if prev['id'] != cur['id']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
131 log("INFO", "node id mismatch!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
132 return False
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
133
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
134 if prev['node-type'] != cur['node-type']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
135 log("INFO", "node node-type mismatch!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
136 return False
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
137
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
138 if prev.get('source-id', None) != cur.get('source-id', None):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
139 log("INFO", "node source_id mismatch!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
140 return False
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
141
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
142 if prev.get('target-id', None) != cur.get('target-id', None):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
143 log("INFO", "node target_id mismatch!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
144 return False
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
145
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
146 if prev['b64-value'] != cur['b64-value']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
147 log("INFO", "node ownvalue mismatch!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
148 return False
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
149
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
150 return True
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
151
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
152
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
153 def getSimilarNode(prev, curList):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
154 nt = prev['node-type']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
155 if nt == 'ATTRIBUTE':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
156 for n in curList:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
157 if n['node-type'] == 'ATTRIBUTE' \
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
158 and prev['name'] == n['name']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
159 # attribute with same name
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
160 log("DEBUG", "similar attributes: %s vs %s"%(prev, n))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
161 return n
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
162
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
163 elif nt == 'RELATION':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
164 for n in curList:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
165 if n['node-type'] == 'RELATION' \
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
166 and prev['source-id'] == n['source-id'] \
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
167 and prev['target-id'] == n['target-id'] \
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
168 and prev['object-class'] == n['object-class']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
169 # relation with same source, target and type
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
170 log("DEBUG", "similar relations: %s vs %s"%(prev, n))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
171 return n
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
172
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
173 return None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
174
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
175
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
176 def compareNodeLists(prev, cur, ctx, lostFile=None):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
177 """compare list of previous and current nodes.
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
178
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
179 prints results to the log and output file.
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
180 """
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
181 prevNodes = {}
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
182 curNodes = {}
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
183
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
184 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
185 # read nodes
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
186 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
187 for n in prev:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
188 nid = n['id']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
189 if nid not in prevNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
190 prevNodes[nid] = n
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
191 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
192 log("DEBUG", "duplicate save of prev node id="+nid)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
193 if isinstance(prevNodes[nid], list):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
194 prevNodes[nid].append(n)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
195 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
196 prevNodes[nid] = [prevNodes[nid], n]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
197
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
198 for n in cur:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
199 nid = n['id']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
200 if nid not in curNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
201 curNodes[nid] = n
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
202 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
203 log("DEBUG", "duplicate save of cur node id="+nid)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
204 if isinstance(curNodes[nid], list):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
205 curNodes[nid].append(n)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
206 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
207 curNodes[nid] = [curNodes[nid], n]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
208
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
209 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
210 # compare nodes
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
211 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
212 curNodeUnchecked = set(curNodes.keys())
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
213 addPrevNodes = []
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
214 addCurNodes = []
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
215
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
216 for nid in prevNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
217 prevNode = prevNodes[nid]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
218 if isinstance(prevNode, list):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
219 log("DEBUG", "multi-save prev node: %s"%prevNode)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
220 # use the last version(?)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
221 prevNode = prevNode[-1]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
222
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
223 if nid not in curNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
224 if prevNode['node-type'] == 'ATTRIBUTE' and prevNode['b64-value'] == '':
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
225 # emtpy attribute - ignore
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
226 continue
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
227
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
228 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
229 log("DEBUG", "node %s not in cur saves! %s"%(nid,prevNode))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
230 addPrevNodes.append(prevNode)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
231 continue
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
232
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
233 curNode = curNodes[nid]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
234 if isinstance(curNode, list):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
235 log("DEBUG", "multi-save cur node: %s"%curNode)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
236 # use the last version?
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
237 curNode = curNode[-1]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
238
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
239 equalNodes(prevNode, curNode)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
240
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
241 curNodeUnchecked.remove(nid)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
242
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
243 # make list of additional current (=new) nodes
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
244 for nid in curNodeUnchecked:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
245 curNode = curNodes[nid]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
246 # list can contain lists
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
247 if isinstance(curNode, list):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
248 # use the last version(?)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
249 curNode = curNode[-1]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
250
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
251 addCurNodes.append(curNode)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
252 log("DEBUG", "new node %s"%curNodes[nid])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
253
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
254 # compare missing and new nodes
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
255 for n in addPrevNodes.copy():
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
256 sn = getSimilarNode(n, addCurNodes)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
257 if sn is not None:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
258 # similar is good enough
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
259 addPrevNodes.remove(n)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
260 addCurNodes.remove(sn)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
261
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
262 if len(addPrevNodes) > 0:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
263 #print("ERROR: lost nodes: %s"%[prettyPrintNode(n) for n in addPrevNodes])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
264 log("ERROR", "in %s"%ctx)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
265 for n in addPrevNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
266 log("ERROR","lost node: %s"%prettyPrintNode(n))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
267 if lostFile is not None:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
268 printNodeCsv(n, lostFile)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
269
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
270 if len(addCurNodes) > 0:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
271 #print("INFO: new nodes: %s"%[prettyPrintNode(n) for n in addCurNodes])
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
272 for n in addCurNodes:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
273 log("INFO", "new node: %s"%prettyPrintNode(n))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
274
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
275
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
276
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
277 def analyseLogfile(inFilename, outFilename=None):
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
278 outFile = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
279 if outFilename is not None:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
280 outFile = open(outFilename, mode='w')
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
281 printHeaderCsv(outFile)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
282
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
283 with open(inFilename) as f:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
284 linecnt = 0
49
f8cd7db4178c output number of checked saves.
casties
parents: 44
diff changeset
285 savecnt = 0
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
286 saving = 0
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
287 openSaves = {}
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
288 savingPrev = 0
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
289 deleting = 0
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
290 saveCtx = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
291 deleteCtx = None
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
292 prevSaves = {}
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
293 saves = {}
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
294
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
295 for line in f:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
296 linecnt += 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
297 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
298 # parsing lines in order of specific match, not order of operation!
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
299 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
300 if '*** START Saving' in line:
49
f8cd7db4178c output number of checked saves.
casties
parents: 44
diff changeset
301 savecnt += 1
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
302 saving += 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
303 # make sure delete is off
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
304 deleting = 0
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
305 log('DEBUG', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
306 # parse time and id
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
307 saveCtx = parseStart(line)
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
308 tid = saveCtx['tid']
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
309 saveId = "%s@%s"%(saveCtx['id'], tid)
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
310 if saveId in openSaves:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
311 log('ERROR', "Duplicate save for same id! %s"%saveCtx)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
312 # assume the first save was spurious
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
313 saving -= 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
314
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
315 openSaves[saveId] = saveCtx
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
316
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
317 if len(openSaves) > 1:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
318 log("ERROR", "Multiple open save (%s) in #%s of %s"%(saving, linecnt, line))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
319 # TODO: what now?
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
320
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
321 elif '*** END Saving' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
322 saving -= 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
323 saveCtx = parseStart(line)
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
324 tid = saveCtx['tid']
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
325 saveId = "%s@%s"%(saveCtx['id'], tid)
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
326 if saveId in openSaves:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
327 log('DEBUG', "End save matches start save: %s"%saveCtx)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
328 del openSaves[saveId]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
329
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
330 elif "null@%s"%saveCtx['tid'] in openSaves:
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
331 log('DEBUG', "Assume end save (of %s) matches start save null: %s"%(len(openSaves), saveCtx))
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
332 del openSaves["null@%s"%saveCtx['tid']]
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
333
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
334 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
335 log("ERROR", "End save without start save! %s"%saveCtx)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
336
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
337 # make sure delete is off
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
338 deleting = 0
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
339 log('DEBUG', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
340
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
341 if len(openSaves) > 0:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
342 log('WARNING', "Still open saves (%s) during end save in #%s of %s"%(saving, linecnt, line))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
343
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
344 elif saving < 0:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
345 log('ERROR', "Too many END saves!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
346 break
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
347
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
348 if tid not in saves:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
349 saves[tid] = []
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
350
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
351 if tid not in prevSaves:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
352 prevSaves[tid] = []
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
353
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
354 log("INFO", "saving %s"%saveCtx)
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
355 log("INFO", "prev saves: %s"%len(prevSaves[tid]))
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
356 log("INFO", "saves: %s"%len(saves[tid]))
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
357
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
358 if len(prevSaves[tid]) > 0:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
359 compareNodeLists(prevSaves[tid], saves[tid], saveCtx, outFile)
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
360
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
361 del prevSaves[tid]
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
362 del saves[tid]
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
363
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
364 elif '** START save entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
365 pass
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
366
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
367 elif '** END save entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
368 pass
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
369
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
370 elif '** START remove entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
371 deleting += 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
372 log('DEBUG', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
373 deleteCtx = parseStart(line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
374
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
375 if deleting > 1:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
376 log("ERROR", "Concurrent delete (%s) in #%s of %s"%(saving, linecnt, line))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
377 # TODO: what now?
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
378 break
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
379
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
380 elif '** END remove entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
381 deleting -= 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
382 log('DEBUG', line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
383 ctx = parseStart(line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
384 if deleteCtx['id'] != ctx['id']:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
385 log('ERROR', "END delete has different ID!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
386 break
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
387
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
388 if deleting > 1:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
389 log("ERROR", "Concurrent delete (%s) in #%s of %s"%(saving, linecnt, line))
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
390 # TODO: what now?
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
391 break
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
392
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
393 deleteCtx = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
394
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
395 elif '* START save entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
396 pass
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
397
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
398 elif '* START save previous' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
399 savingPrev += 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
400
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
401 elif '* ...END save entity' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
402 pass
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
403
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
404 elif '* END ...save previous' in line:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
405 savingPrev -= 1
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
406
50
1be17309db79 small fix.
casties
parents: 49
diff changeset
407 if savingPrev < 0:
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
408 log("ERROR", "Too many END save previous!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
409
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
410 elif 'save previous' in line:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
411 # check thread ID
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
412 td = parseThread(line)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
413 tid = td['tid']
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
414
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
415 data = parseSave(line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
416 if data is None:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
417 log("DEBUG", "Error parsing line: %s"%line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
418 continue
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
419
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
420 if omitDeleted and deleting > 0 and savingPrev > 0:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
421 # this should be a save prev from deleting
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
422 delId = deleteCtx['id']
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
423 # check if node is related to deleted id
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
424 if data.get('id', None) == delId or data.get('source-id', None) == delId \
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
425 or data.get('target-id', None) == delId:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
426 log('DEBUG', "intentionally deleted node: %s"%data)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
427
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
428 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
429 log('ERROR', "Node without matching id in delete! %s"%data)
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
430 if tid in prevSaves:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
431 prevSaves[tid].append(data)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
432
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
433 else:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
434 prevSaves[tid] = [data]
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
435
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
436 else:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
437 if tid in prevSaves:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
438 prevSaves[tid].append(data)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
439
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
440 else:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
441 prevSaves[tid] = [data]
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
442
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
443 elif 'save' in line:
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
444 # check thread ID
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
445 td = parseThread(line)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
446 tid = td['tid']
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
447
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
448 data = parseSave(line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
449 if data is None:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
450 log("DEBUG", "Error parsing line: %s"%line)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
451 continue
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
452
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
453 if tid in saves:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
454 saves[tid].append(data)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
455
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
456 else:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
457 saves[tid] = [data]
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
458
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
459 if maxLinecnt is not None and linecnt >= maxLinecnt:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
460 break
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
461
44
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
462 if len(saves) > 0:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
463 log('ERROR', "%s unprocessed saves!"%len(saves))
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
464 log('DEBUG', saves)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
465
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
466 if len(prevSaves) > 0:
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
467 log('ERROR', "%s unprocessed previous saves!"%len(prevSaves))
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
468 log('DEBUG', prevSaves)
4692e90215eb ISMI transaction log analyser follows thread IDs.
casties
parents: 43
diff changeset
469
49
f8cd7db4178c output number of checked saves.
casties
parents: 44
diff changeset
470 log("SYSMSG", "%s form saves in %s lines of logfile"%(savecnt, linecnt))
43
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
471
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
472
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
473 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
474 # public static void main :-)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
475 #
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
476
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
477 input_fn = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
478 output_fn = None
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
479
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
480 # parse command line parameters
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
481 if len(sys.argv) > 2:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
482 input_fn = sys.argv[1]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
483 output_fn = sys.argv[2]
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
484
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
485 # run analysis
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
486 analyseLogfile(input_fn, output_fn)
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
487
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
488 else:
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
489 print("ERROR: missing parameters!")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
490 print("use: check_ismi_log logfile csvfile")
bb5390f752fc new ISMI transaction log analyser.
casties
parents:
diff changeset
491 exit(1)