[CalendarServer-changes] [7029] CalendarServer/trunk/contrib/performance/loadtest
source_changes at macosforge.org
source_changes at macosforge.org
Wed Feb 16 12:13:35 PST 2011
Revision: 7029
http://trac.macosforge.org/projects/calendarserver/changeset/7029
Author: exarkun at twistedmatrix.com
Date: 2011-02-16 12:13:34 -0800 (Wed, 16 Feb 2011)
Log Message:
-----------
When accepting an invitation, find the inbox event and delete it.
Modified Paths:
--------------
CalendarServer/trunk/contrib/performance/loadtest/ical.py
CalendarServer/trunk/contrib/performance/loadtest/profiles.py
CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py
Modified: CalendarServer/trunk/contrib/performance/loadtest/ical.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/ical.py 2011-02-16 19:46:17 UTC (rev 7028)
+++ CalendarServer/trunk/contrib/performance/loadtest/ical.py 2011-02-16 20:13:34 UTC (rev 7029)
@@ -86,10 +86,20 @@
_events = None
_calendars = None
+ def _setEvent(self, href, event):
+ self._events[href] = event
+ calendar, uid = href.rsplit('/', 1)
+ self._calendars[calendar + '/'].events[uid] = event
+
+
def addEvent(self, href, vcalendar):
raise NotImplementedError("%r does not implement addEvent" % (self.__class__,))
+ def deleteEvent(self, href):
+ raise NotImplementedError("%r does not implement deleteEvent" % (self.__class__,))
+
+
def addEventAttendee(self, href, attendee):
raise NotImplementedError("%r does not implement addEventAttendee" % (self.__class__,))
@@ -321,12 +331,6 @@
self.eventChanged(responseHref, etag, scheduleTag, body)
- def _setEvent(self, href, event):
- self._events[href] = event
- calendar, uid = href.rsplit('/', 1)
- self._calendars[calendar + '/'].events[uid] = event
-
-
def eventChanged(self, href, etag, scheduleTag, body):
event = self._events[href]
event.etag = etag
Modified: CalendarServer/trunk/contrib/performance/loadtest/profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2011-02-16 19:46:17 UTC (rev 7028)
+++ CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2011-02-16 20:13:34 UTC (rev 7029)
@@ -190,7 +190,17 @@
def _acceptInvitation(self, href, attendee):
self._accepting.remove(href)
accepted = self._makeAcceptedAttendee(attendee)
- self._client.changeEventAttendee(href, attendee, accepted)
+ d = self._client.changeEventAttendee(href, attendee, accepted)
+ def accepted(ignored):
+ # Find the corresponding event in the inbox and delete it.
+ uid = self._client._events[href].getUID()
+ for cal in self._client._calendars.itervalues():
+ if cal.resourceType == caldavxml.schedule_inbox:
+ for event in cal.events.itervalues():
+ if uid == event.getUID():
+ return self._client.deleteEvent(event.url)
+ d.addCallback(accepted)
+ return d
def _makeAcceptedAttendee(self, attendee):
Modified: CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py 2011-02-16 19:46:17 UTC (rev 7028)
+++ CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py 2011-02-16 20:13:34 UTC (rev 7029)
@@ -25,9 +25,10 @@
from twisted.trial.unittest import TestCase
from twisted.internet.task import Clock
+from twisted.internet.defer import succeed
from loadtest.profiles import Eventer, Inviter, Accepter
-from loadtest.ical import Calendar, Event
+from loadtest.ical import Calendar, Event, BaseClient
SIMPLE_EVENT = """\
BEGIN:VCALENDAR
@@ -163,7 +164,7 @@
-class StubClient(object):
+class StubClient(BaseClient):
def __init__(self, number):
self._events = {}
self._calendars = {}
@@ -175,6 +176,12 @@
self._events[href] = Event(href, None, vevent)
+ def deleteEvent(self, href):
+ event = self._events.pop(href)
+ calendar, uid = href.rsplit('/', 1)
+ del self._calendars[calendar + '/'].events[uid]
+
+
def addEventAttendee(self, href, attendee):
vevent = self._events[href].vevent
attendees = vevent.contents[u'vevent'][0].contents.setdefault(u'attendee', [])
@@ -186,9 +193,9 @@
attendees = vevent.contents[u'vevent'][0].contents.setdefault(u'attendee', [])
attendees.remove(old)
attendees.append(new)
+ return succeed(None)
-
class InviterTests(TestCase):
"""
Tests for loadtest.profiles.Inviter.
@@ -344,7 +351,6 @@
accepter.eventChanged('/some/calendar/1234.ics')
-
def test_ignoreNonCalendar(self):
"""
If an event is on a calendar which is not of type
@@ -410,20 +416,32 @@
"""
If the client is an attendee on an event and the PARTSTAT is
NEEDS-ACTION, a response is generated which accepts the
- invitation.
+ invitation and the corresponding event in the
+ I{schedule-inbox} is deleted.
"""
clock = Clock()
randomDelay = 7
vevent = list(readComponents(INVITED_EVENT))[0]
attendees = vevent.contents[u'vevent'][0].contents[u'attendee']
userNumber = int(attendees[1].params[u'CN'][0].split(None, 1)[1])
+ client = StubClient(userNumber)
+
calendarURL = '/some/calendar/'
calendar = Calendar(
caldavxml.calendar, u'calendar', calendarURL, None)
- client = StubClient(userNumber)
client._calendars[calendarURL] = calendar
+
+ inboxURL = '/some/inbox/'
+ inbox = Calendar(
+ caldavxml.schedule_inbox, u'the inbox', inboxURL, None)
+ client._calendars[inboxURL] = inbox
+
event = Event(calendarURL + u'1234.ics', None, vevent)
- client._events[event.url] = event
+ client._setEvent(event.url, event)
+
+ inboxEvent = Event(inboxURL + u'4321.ics', None, vevent)
+ client._setEvent(inboxEvent.url, inboxEvent)
+
accepter = Accepter(clock, client, userNumber)
accepter.random = Deterministic()
accepter.random.gauss = lambda mu, sigma: randomDelay
@@ -439,7 +457,10 @@
attendees[1].params[u'PARTSTAT'], [u'ACCEPTED'])
self.assertNotIn(u'RSVP', attendees[1].params)
+ self.assertNotIn(inboxEvent.url, client._events)
+ self.assertNotIn('4321.ics', inbox.events)
+
def test_reacceptInvitation(self):
"""
If a client accepts an invitation on an event and then is
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110216/d897dab4/attachment-0001.html>
More information about the calendarserver-changes
mailing list