[CalendarServer-changes] [9754] CalDAVTester/branches/users/cdaboo/recurrence-split

source_changes at macosforge.org source_changes at macosforge.org
Wed Aug 29 19:25:32 PDT 2012


Revision: 9754
          http://trac.macosforge.org/projects/calendarserver/changeset/9754
Author:   cdaboo at apple.com
Date:     2012-08-29 19:25:32 -0700 (Wed, 29 Aug 2012)
Log Message:
-----------
Checkpoint of work so far.

Modified Paths:
--------------
    CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-partitioning.xml
    CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-template.xml
    CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo.xml
    CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/sslserverinfo.xml
    CalDAVTester/branches/users/cdaboo/recurrence-split/src/caldavtest.py
    CalDAVTester/branches/users/cdaboo/recurrence-split/verifiers/multistatusItems.py

Added Paths:
-----------
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/1.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/2.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/3.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/4.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/5.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/6.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/1.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/2.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/3.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/1.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/2.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/3.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/4.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/5.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/6.ics
    CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/tests/CalDAV/recurrence_split.xml

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/1.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/1.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/1.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,65 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;COUNT=5
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0102T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-2
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0102T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-2
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0104T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-4
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0104T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-4
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/2.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/2.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/2.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,65 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;COUNT=5
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0102T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-2
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0102T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02-2
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0104T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-4
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0104T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02-4
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/3.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/3.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/3.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,51 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0103T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1-split
+RRULE:FREQ=DAILY;COUNT=3
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-split
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0104T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-4
+UID:event1-split
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0104T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-split-4
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/4.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/4.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/4.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,51 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;UNTIL=$now.year.0:0103T135959Z
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0102T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-2
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0102T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-2
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/5.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/5.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/5.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,51 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;UNTIL=$now.year.0:0103T135959Z
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0102T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-2
+UID:event1
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0102T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02-2
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/6.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/6.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/override-sharing/6.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,51 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0103T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1-split
+RRULE:FREQ=DAILY;COUNT=3
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0104T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1-4
+UID:event1-split
+RECURRENCE-ID;TZID=US/Eastern:$now.year.0:0104T090000
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02-4
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/1.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/1.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/1.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,32 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;COUNT=5
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/2.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/2.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/2.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,32 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0103T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1 modified
+UID:event1-split
+RRULE:FREQ=DAILY;COUNT=3
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/3.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/3.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple/3.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,32 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;UNTIL=$now.year.0:0103T135959Z
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/1.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/1.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/1.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;COUNT=5
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/2.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/2.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/2.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;COUNT=5
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/3.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/3.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/3.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0103T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1-split
+RRULE:FREQ=DAILY;COUNT=3
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01-split
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/4.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/4.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/4.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;UNTIL=$now.year.0:0103T135959Z
+BEGIN:VALARM
+DESCRIPTION:Event reminder user01
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/5.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/5.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/5.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0101T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1
+RRULE:FREQ=DAILY;UNTIL=$now.year.0:0103T135959Z
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/6.ics
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/6.ics	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/Resource/CalDAV/recurrence_split/simple-sharing/6.ics	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051228T232517Z
+DTSTART;TZID=US/Eastern:$now.year.0:0103T090000
+DURATION:PT1H
+LOCATION:Durham
+SUMMARY:Meeting 1
+UID:event1-split
+RRULE:FREQ=DAILY;COUNT=3
+BEGIN:VALARM
+DESCRIPTION:Event reminder user02
+TRIGGER:-PT8M
+ACTION:DISPLAY
+END:VALARM
+END:VEVENT
+END:VCALENDAR

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-partitioning.xml	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-partitioning.xml	2012-08-30 02:25:32 UTC (rev 9754)
@@ -76,6 +76,7 @@
 		<feature>proxy</feature>						<!-- calendar-user-proxy extension -->
 		<!-- <feature>proxy-authz</feature> -->			<!-- sudo user extension -->
 		<feature>query-extended</feature>				<!-- calendar-query-extended extension -->
+		<feature>recurrence-splitting</feature>			<!-- Supports POST to split recurrences -->
 		<feature>shared-calendars</feature>				<!-- Shared calendars extension -->
 		<feature>schedule-changes</feature>				<!-- schedule-changes property extension -->
 		<feature>split-calendars</feature>				<!-- Calendars are split by component type -->

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-template.xml	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo-template.xml	2012-08-30 02:25:32 UTC (rev 9754)
@@ -52,6 +52,7 @@
 		<feature>prefer-noroot</feature>				<!-- Prefer header depth-noroot -->
 		<feature>quota</feature>						<!-- WebDAV QUOTA -->
 		<!-- <feature>quota-on-resources</feature> -->	<!-- WebDAV QUOTA on calendar and address book object resources -->
+		<feature>recurrence-splitting</feature>			<!-- Supports POST to split recurrences -->
 		<feature>resource-id</feature>					<!-- WebDAV BIND DAV:resource-id property -->
 		<feature>sync-report</feature>					<!-- WebDAV collection sync REPORT -->
 		<feature>sync-report-home</feature>				<!-- WebDAV collection sync REPORT on Homes -->

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo.xml	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/serverinfo.xml	2012-08-30 02:25:32 UTC (rev 9754)
@@ -76,6 +76,7 @@
 		<feature>proxy</feature>						<!-- calendar-user-proxy extension -->
 		<!-- <feature>proxy-authz</feature> -->			<!-- sudo user extension -->
 		<feature>query-extended</feature>				<!-- calendar-query-extended extension -->
+		<feature>recurrence-splitting</feature>			<!-- Supports POST to split recurrences -->
 		<feature>shared-calendars</feature>				<!-- Shared calendars extension -->
 		<feature>schedule-changes</feature>				<!-- schedule-changes property extension -->
 		<feature>split-calendars</feature>				<!-- Calendars are split by component type -->

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/sslserverinfo.xml
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/sslserverinfo.xml	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/server/sslserverinfo.xml	2012-08-30 02:25:32 UTC (rev 9754)
@@ -77,6 +77,7 @@
 		<feature>proxy</feature>						<!-- calendar-user-proxy extension -->
 		<!-- <feature>proxy-authz</feature> -->			<!-- sudo user extension -->
 		<feature>query-extended</feature>				<!-- calendar-query-extended extension -->
+		<feature>recurrence-splitting</feature>			<!-- Supports POST to split recurrences -->
 		<feature>shared-calendars</feature>				<!-- Shared calendars extension -->
 		<feature>schedule-changes</feature>				<!-- schedule-changes property extension -->
 		<feature>split-calendars</feature>				<!-- Calendars are split by component type -->

Added: CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/tests/CalDAV/recurrence_split.xml
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/tests/CalDAV/recurrence_split.xml	                        (rev 0)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/scripts/tests/CalDAV/recurrence_split.xml	2012-08-30 02:25:32 UTC (rev 9754)
@@ -0,0 +1,630 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ 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.
+ -->
+
+<caldavtest>
+	<description>Test POST doing recurrence split in CalDAV</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+		<feature>recurrence-splitting</feature>
+	</require-feature>
+
+	<start>
+		<request user="$userid1:" pswd="$pswd1:">
+			<method>DELETEALL</method>
+			<ruri>$calendarpath1:/</ruri>
+			<ruri>$inboxpath1:/</ruri>
+			<ruri>$notificationpath1:/</ruri>
+		</request>
+		<request user="$userid2:" pswd="$pswd2:">
+			<method>DELETEALL</method>
+			<ruri>$calendarpath2:/</ruri>
+			<ruri>$inboxpath2:/</ruri>
+			<ruri>$notificationpath2:/</ruri>
+		</request>
+		<request user="$userid3:" pswd="$pswd3:">
+			<method>DELETEALL</method>
+			<ruri>$calendarpath2:/</ruri>
+			<ruri>$inboxpath2:/</ruri>
+			<ruri>$notificationpath3:/</ruri>
+		</request>
+	</start>
+	
+	<test-suite name='OPTIONS header' ignore='no'>
+		<test name='1'>
+			<description>Look for options header tag on principal</description>
+			<request print-response="no">
+				<method>OPTIONS</method>
+				<ruri>$principal1:</ruri>
+				<verify>
+					<callback>header</callback>
+					<arg>
+						<name>header</name>
+						<value>*DAV$.*calendarserver-recurrence-split.*</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Simple split - no sharing, no attendees' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>PUT recurring event without overrides</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/simple/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>POST to split</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarpath1:/1.ics?action=recurrence-split&amp;recurrence-id=$now.year.0:0103T140000Z</ruri>
+				<header>
+					<name>Prefer</name>
+					<value>return-representation</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/simple/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>totalcount</name>
+						<value>2</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Check original data</description>
+			<request print-response='no'>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple/3.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Check new data</description>
+			<request print-response='no'>
+				<method>GETOTHER</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple/2.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Shared simple split - no attendees' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>Setup shared calendar</description>
+			<request end-delete="no">
+				<method>MKCALENDAR</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/MKCALENDAR/sharedcalendar.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharinginvite2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>WAITCOUNT 1</method>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GETNEW</method>
+				<ruri>$notificationpath2:/</ruri>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
+					<variable>$inviteuid2:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>application/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharingreply2.xml</filepath>
+				</data>
+				<grabelement>
+					<name>{DAV:}href</name>
+					<variable>$sharedcalendar2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>PUT recurring event without overrides with alarm</description>
+			<request end-delete='no'>
+				<method>PUT</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/simple-sharing/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>Sharee adds alarm</description>
+			<request user="$userid2:" pswd="$pswd2:" end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/simple-sharing/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>POST to split</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/1.ics?action=recurrence-split&amp;recurrence-id=$now.year.0:0103T140000Z</ruri>
+				<header>
+					<name>Prefer</name>
+					<value>return-representation</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/simple-sharing/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>totalcount</name>
+						<value>2</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Check original data</description>
+			<request print-response='no'>
+				<method>GET</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple-sharing/4.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Check new data</description>
+			<request print-response='no'>
+				<method>GETOTHER</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple-sharing/3.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Check original shared data</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GET</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple-sharing/5.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8'>
+			<description>Check new shared data</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GETOTHER</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/simple-sharing/6.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='9'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETE</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+			</request>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+				<ruri>$notificationpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+				<ruri>$notificationpath3:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Shared overridde split - no attendees' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>Setup shared calendar</description>
+			<request end-delete="no">
+				<method>MKCALENDAR</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/MKCALENDAR/sharedcalendar.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharinginvite2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>WAITCOUNT 1</method>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GETNEW</method>
+				<ruri>$notificationpath2:/</ruri>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
+					<variable>$inviteuid2:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>application/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharingreply2.xml</filepath>
+				</data>
+				<grabelement>
+					<name>{DAV:}href</name>
+					<variable>$sharedcalendar2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>PUT recurring event without overrides with alarm</description>
+			<request end-delete='no'>
+				<method>PUT</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/override-sharing/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>Sharee adds alarm</description>
+			<request user="$userid2:" pswd="$pswd2:" end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/override-sharing/2.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>POST to split</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/1.ics?action=recurrence-split&amp;recurrence-id=$now.year.0:0103T140000Z</ruri>
+				<header>
+					<name>Prefer</name>
+					<value>return-representation</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/recurrence_split/override-sharing/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>totalcount</name>
+						<value>2</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Check original data</description>
+			<request print-response='no'>
+				<method>GET</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/override-sharing/4.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Check new data</description>
+			<request print-response='no'>
+				<method>GETOTHER</method>
+				<ruri>$calendarhome1:/shared/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/override-sharing/3.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Check original shared data</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GET</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/override-sharing/5.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8'>
+			<description>Check new shared data</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GETOTHER</method>
+				<ruri>$sharedcalendar2:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/recurrence_split/override-sharing/6.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>dataString</callback>
+					<arg>
+						<name>contains</name>
+						<value>RECURRENCE-SET</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='9'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETE</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+			</request>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+				<ruri>$notificationpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+				<ruri>$notificationpath3:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+
+	<end/>
+	
+</caldavtest>

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/src/caldavtest.py
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/src/caldavtest.py	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/src/caldavtest.py	2012-08-30 02:25:32 UTC (rev 9754)
@@ -1,5 +1,5 @@
 ##
-# Copyright (c) 2006-2011 Apple Inc. All rights reserved.
+# Copyright (c) 2006-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.
@@ -276,6 +276,12 @@
             self.dorequest( req, False, False, label=label )
 
     def dofindnew( self, collection, label = "" ):
+        """
+        Find the newest resource that is a child of the specified collection.
+        This does a PROPFIND on the specified collection and iterates over the results
+        ignoring the collection to find the newest child.
+        """
+
         hresult = ""
         req = request(self.manager)
         req.method = "PROPFIND"
@@ -344,6 +350,88 @@
 
         return hresult
 
+    def dofindother( self, sibling, label = "" ):
+        """
+        Find the newest resource that is a sibling of the specified resource (not the specified resource itself).
+        This does a PROPFIND on the parent of the specified resource and iterates over the results ignoring the parent
+        and specified resource to find the newest sibling.
+        """
+
+        hresult = ""
+        sibling = list(sibling)
+        notthis = sibling[0]
+        sibling[0] = "/".join(notthis.split("/")[:-1]) + "/"
+        req = request(self.manager)
+        
+        req.ruri = notthis
+        notthis_uri = req.getURI( self.manager.server_info )
+        
+        req.method = "PROPFIND"
+        req.ruris.append(sibling[0])
+        req.ruri = sibling[0]
+        req.headers["Depth"] = "1"
+        if len(sibling[1]):
+            req.user = sibling[1]
+        if len(sibling[2]):
+            req.pswd = sibling[2]
+        req.data = data()
+        req.data.value = """<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getetag/>
+<D:getlastmodified/>
+</D:prop>
+</D:propfind>
+"""
+        req.data.content_type = "text/xml"
+        result, _ignore_resulttxt, response, respdata = self.dorequest( req, False, False, label="%s | %s" % (label, "FINDNEW") )
+        if result and (response is not None) and (response.status == 207) and (respdata is not None):
+            try:
+                tree = ElementTree(file=StringIO(respdata))
+            except Exception:
+                return hresult
+
+            latest = 0
+            request_uri = req.getURI( self.manager.server_info )
+            for response in tree.findall("{DAV:}response" ):
+    
+                # Get href for this response
+                href = response.findall("{DAV:}href")
+                if len(href) != 1:
+                    return False, "           Wrong number of DAV:href elements\n"
+                href = href[0].text
+                if href not in (request_uri, notthis_uri,):
+
+                    # Get all property status
+                    propstatus = response.findall("{DAV:}propstat")
+                    for props in propstatus:
+                        # Determine status for this propstat
+                        status = props.findall("{DAV:}status")
+                        if len(status) == 1:
+                            statustxt = status[0].text
+                            status = False
+                            if statustxt.startswith("HTTP/1.1 ") and (len(statustxt) >= 10):
+                                status = (statustxt[9] == "2")
+                        else:
+                            status = False
+                        
+                        # Get properties for this propstat
+                        prop = props.findall("{DAV:}prop")
+                        for el in prop:
+
+                            # Get properties for this propstat
+                            glm = el.findall("{DAV:}getlastmodified")
+                            if len(glm) != 1:
+                                continue
+                            value = glm[0].text
+                            value = rfc822.parsedate(value)
+                            value = time.mktime(value)
+                            if value > latest:
+                                hresult = href
+                                latest = value
+
+        return hresult
+
     def dowaitcount( self, collection, count, label = ""):
         
         for _ignore in range(30):
@@ -472,6 +560,13 @@
             req.method = "GET"
             req.ruri = "$"
             
+        # Special for GETOTHER
+        elif req.method == "GETOTHER":
+            collection = (req.ruri, req.user, req.pswd)
+            self.grabbedlocation = self.dofindother(collection, label=label)
+            req.method = "GET"
+            req.ruri = "$"
+            
         # Special check for WAITCOUNT
         elif req.method.startswith("WAITCOUNT"):
             count = int(req.method[10:])

Modified: CalDAVTester/branches/users/cdaboo/recurrence-split/verifiers/multistatusItems.py
===================================================================
--- CalDAVTester/branches/users/cdaboo/recurrence-split/verifiers/multistatusItems.py	2012-08-30 02:19:02 UTC (rev 9753)
+++ CalDAVTester/branches/users/cdaboo/recurrence-split/verifiers/multistatusItems.py	2012-08-30 02:25:32 UTC (rev 9754)
@@ -1,5 +1,5 @@
 ##
-# Copyright (c) 2006-2010 Apple Inc. All rights reserved.
+# Copyright (c) 2006-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.
@@ -19,6 +19,7 @@
 are returned with appropriate status codes.
 """
 
+from urlparse import urlsplit
 from xml.etree.ElementTree import ElementTree
 from StringIO import StringIO
 
@@ -45,7 +46,7 @@
         if len(prefix):
             prefix = prefix[0] if prefix[0] != "-" else ""
         else:
-            prefix = uri
+            prefix = urlsplit(uri)[2]
         okhrefs = [prefix + i for i in okhrefs]
         nohrefs = [prefix + i for i in nohrefs]
         badhrefs = [prefix + i for i in badhrefs]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120829/b7774cfc/attachment-0001.html>


More information about the calendarserver-changes mailing list