[CalendarServer-changes] [6238] CalendarServer/trunk/contrib/performance/event_delete.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Sep 3 11:59:40 PDT 2010
Revision: 6238
http://trac.macosforge.org/projects/calendarserver/changeset/6238
Author: exarkun at twistedmatrix.com
Date: 2010-09-03 11:59:39 -0700 (Fri, 03 Sep 2010)
Log Message:
-----------
Add a benchmark for event deletion
Added Paths:
-----------
CalendarServer/trunk/contrib/performance/event_delete.py
Added: CalendarServer/trunk/contrib/performance/event_delete.py
===================================================================
--- CalendarServer/trunk/contrib/performance/event_delete.py (rev 0)
+++ CalendarServer/trunk/contrib/performance/event_delete.py 2010-09-03 18:59:39 UTC (rev 6238)
@@ -0,0 +1,58 @@
+
+"""
+Benchmark a server's handling of event deletion.
+"""
+
+from itertools import count
+from urllib2 import HTTPDigestAuthHandler
+
+from twisted.internet import reactor
+from twisted.internet.defer import inlineCallbacks, returnValue
+from twisted.web.client import Agent
+from twisted.web.http_headers import Headers
+
+from httpauth import AuthHandlerAgent
+from httpclient import StringProducer
+
+from benchlib import initialize, sample
+from event import makeEvent
+
+ at inlineCallbacks
+def measure(host, port, dtrace, attendeeCount, samples):
+ user = password = "user01"
+ root = "/"
+ principal = "/"
+ calendar = "event-deletion-benchmark"
+
+ authinfo = HTTPDigestAuthHandler()
+ authinfo.add_password(
+ realm="Test Realm",
+ uri="http://%s:%d/" % (host, port),
+ user=user,
+ passwd=password)
+ agent = AuthHandlerAgent(Agent(reactor), authinfo)
+
+ # Set up the calendar first
+ yield initialize(agent, host, port, user, password, root, principal, calendar)
+
+ # An infinite stream of VEVENTs to PUT to the server.
+ events = ((i, makeEvent(i, attendeeCount)) for i in count(2))
+
+ # Create enough events to delete
+ uri = 'http://%s:%d/calendars/__uids__/%s/%s/foo-%%d.ics' % (
+ host, port, user, calendar)
+ headers = Headers({"content-type": ["text/calendar"]})
+ urls = []
+ for i, body in events:
+ urls.append(uri % (i,))
+ yield agent.request(
+ 'PUT', urls[-1], headers, StringProducer(body))
+ if len(urls) == samples:
+ break
+
+ # Now delete them all
+ samples = yield sample(
+ dtrace, samples,
+ agent, (('DELETE', url) for url in urls).next)
+ returnValue(samples)
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100903/5f91d740/attachment-0001.html>
More information about the calendarserver-changes
mailing list