[CalendarServer-changes] [7045] CalendarServer/trunk/contrib/performance/loadtest
source_changes at macosforge.org
source_changes at macosforge.org
Fri Feb 18 07:31:39 PST 2011
Revision: 7045
http://trac.macosforge.org/projects/calendarserver/changeset/7045
Author: exarkun at twistedmatrix.com
Date: 2011-02-18 07:31:36 -0800 (Fri, 18 Feb 2011)
Log Message:
-----------
Avoid freaking out if we stumble across an event that already has as many attendees as we can give it.
Modified Paths:
--------------
CalendarServer/trunk/contrib/performance/loadtest/profiles.py
CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py
Modified: CalendarServer/trunk/contrib/performance/loadtest/profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2011-02-18 03:06:58 UTC (rev 7044)
+++ CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2011-02-18 15:31:36 UTC (rev 7045)
@@ -31,7 +31,7 @@
from protocol.caldav.definitions import caldavxml
from twisted.python.log import msg
-from twisted.internet.defer import succeed
+from twisted.internet.defer import succeed, fail
from twisted.internet.task import LoopingCall
@@ -56,7 +56,13 @@
if cal.resourceType == calendarType]
+class CannotAddAttendee(Exception):
+ """
+ Indicates no new attendees can be invited to a particular event.
+ """
+
+
class Inviter(ProfileBase):
"""
A Calendar user who invites and de-invites other users to events.
@@ -77,11 +83,13 @@
for att in attendees:
invitees.add(att.value)
- while True:
+ for i in range(10):
invitee = max(1, int(self.random.gauss(self._number, 3)))
uuid = u'urn:uuid:user%02d' % (invitee,)
if uuid not in invitees:
break
+ else:
+ return fail(CannotAddAttendee("Can't find uninvited user to invite."))
user = u'User %02d' % (invitee,)
email = u'user%02d at example.com' % (invitee,)
@@ -138,10 +146,11 @@
attendees = event.contents['vevent'][0].contents.get('attendee', [])
d = self._addAttendee(event, attendees)
- d.addCallback(
+ d.addCallbacks(
lambda attendee:
self._client.addEventAttendee(
- href, attendee))
+ href, attendee),
+ lambda reason: reason.trap(CannotAddAttendee))
return d
Modified: CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py 2011-02-18 03:06:58 UTC (rev 7044)
+++ CalendarServer/trunk/contrib/performance/loadtest/test_profiles.py 2011-02-18 15:31:36 UTC (rev 7045)
@@ -336,7 +336,25 @@
u'RSVP': [u'TRUE']})
+ def test_everybodyInvitedAlready(self):
+ """
+ If the first so-many randomly selected users we come across
+ are already attendees on the event, the invitation attempt is
+ abandoned.
+ """
+ selfNumber = 1
+ vevent, event, calendar, client = self._simpleAccount(
+ selfNumber, INVITED_EVENT)
+ inviter = Inviter(None, client, selfNumber)
+ inviter.random = Deterministic()
+ # Always return a user number which has already been invited.
+ inviter.random.gauss = lambda mu, sigma: 2
+ inviter._invite()
+ attendees = vevent.contents[u'vevent'][0].contents[u'attendee']
+ self.assertEquals(len(attendees), 2)
+
+
class AccepterTests(TestCase):
"""
Tests for loadtest.profiles.Accepter.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110218/efd85ece/attachment.html>
More information about the calendarserver-changes
mailing list