[CalendarServer-changes] [9207] CalendarServer/trunk/calendarserver/tools/calverify_diff.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Apr 26 19:35:54 PDT 2012
Revision: 9207
http://trac.macosforge.org/projects/calendarserver/changeset/9207
Author: cdaboo at apple.com
Date: 2012-04-26 19:35:54 -0700 (Thu, 26 Apr 2012)
Log Message:
-----------
Diff the output of two calverify runs to see what changed.
Added Paths:
-----------
CalendarServer/trunk/calendarserver/tools/calverify_diff.py
Added: CalendarServer/trunk/calendarserver/tools/calverify_diff.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/calverify_diff.py (rev 0)
+++ CalendarServer/trunk/calendarserver/tools/calverify_diff.py 2012-04-27 02:35:54 UTC (rev 9207)
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+# -*- test-case-name: calendarserver.tools.test.test_calverify -*-
+##
+# Copyright (c) 2012 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+import getopt
+import sys
+import os
+
+
+def analyze(fname):
+
+ lines = open(os.path.expanduser(fname)).read().splitlines()
+ total = len(lines)
+ ctr = 0
+ results = {
+ "table1": [],
+ "table2": [],
+ "table3": [],
+ "table4": [],
+ }
+
+ def _tableParser(ctr, tableName, parseFn):
+ ctr += 4
+ while ctr < total:
+ line = lines[ctr]
+ if line.startswith("+------"):
+ break
+ else:
+ results[tableName].append(parseFn(line))
+ ctr += 1
+ return ctr
+
+ while ctr < total:
+ line = lines[ctr]
+ if line.startswith("Events missing from Attendee's calendars"):
+ ctr = _tableParser(ctr, "table1", parseTableMissing)
+ elif line.startswith("Events mismatched between Organizer's and Attendee's calendars"):
+ ctr = _tableParser(ctr, "table2", parseTableMismatch)
+ elif line.startswith("Attendee events missing in Organizer's calendar"):
+ ctr = _tableParser(ctr, "table3", parseTableMissing)
+ elif line.startswith("Attendee events mismatched in Organizer's calendar"):
+ ctr = _tableParser(ctr, "table4", parseTableMismatch)
+ ctr += 1
+
+ return results
+
+def parseTableMissing(line):
+ splits = line.split("|")
+ organizer = splits[1].strip()
+ attendee = splits[2].strip()
+ uid = splits[3].strip()
+ resid = splits[4].strip()
+ return (organizer, attendee, uid, resid,)
+
+def parseTableMismatch(line):
+ splits = line.split("|")
+ organizer = splits[1].strip()
+ attendee = splits[2].strip()
+ uid = splits[3].strip()
+ organizer_resid = splits[4].strip()
+ attendee_resid = splits[7].strip()
+ return (organizer, attendee, uid, organizer_resid, attendee_resid,)
+
+def diff(results1, results2):
+
+ print "\n\nEvents missing from Attendee's calendars"
+ diffSets(results1["table1"], results2["table1"])
+
+ print "\n\nEvents mismatched between Organizer's and Attendee's calendars"
+ diffSets(results1["table2"], results2["table2"])
+
+ print "\n\nAttendee events missing in Organizer's calendar"
+ diffSets(results1["table3"], results2["table3"])
+
+ print "\n\nAttendee events mismatched in Organizer's calendar"
+ diffSets(results1["table4"], results2["table4"])
+
+def diffSets(results1, results2):
+
+ s1 = set(results1)
+ s2 = set(results2)
+
+ d = s1 - s2
+ print "\nIn first, not in second: (%d)" % (len(d),)
+ for i in d:
+ print i
+
+ d = s2 - s1
+ print "\nIn second, not in first: (%d)" % (len(d),)
+ for i in d:
+ print i
+
+def usage(error_msg=None):
+ if error_msg:
+ print error_msg
+
+ print """Usage: calverify_diff [options] FILE1 FILE2
+Options:
+ -h Print this help and exit
+
+Arguments:
+ FILE1 File containing calverify output to analyze
+ FILE2 File containing calverify output to analyze
+
+Description:
+ This utility will analyze the output of two calverify runs
+ and show what is different between the two.
+"""
+
+ if error_msg:
+ raise ValueError(error_msg)
+ else:
+ sys.exit(0)
+
+
+if __name__ == '__main__':
+
+ options, args = getopt.getopt(sys.argv[1:], "h", [])
+
+ for option, value in options:
+ if option == "-h":
+ usage()
+ else:
+ usage("Unrecognized option: %s" % (option,))
+
+ if len(args) != 2:
+ usage("Must have two arguments")
+ else:
+ fname1 = args[0]
+ fname2 = args[1]
+
+ print "*** CalVerify diff from %s to %s" % (
+ os.path.basename(fname1),
+ os.path.basename(fname2),
+ )
+ results1 = analyze(fname1)
+ results2 = analyze(fname2)
+ diff(results1, results2)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120426/5405f540/attachment.html>
More information about the calendarserver-changes
mailing list