[CalendarServer-changes] [6923] CalendarServer/trunk/contrib/performance/find_events.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon Feb 14 11:27:16 PST 2011
Revision: 6923
http://trac.macosforge.org/projects/calendarserver/changeset/6923
Author: exarkun at twistedmatrix.com
Date: 2011-02-14 11:27:15 -0800 (Mon, 14 Feb 2011)
Log Message:
-----------
Speed up (~50%) initialization for this benchmark by PUTing events in parallel.
Also fix the double / in the URL being PUT to.
Modified Paths:
--------------
CalendarServer/trunk/contrib/performance/find_events.py
Modified: CalendarServer/trunk/contrib/performance/find_events.py
===================================================================
--- CalendarServer/trunk/contrib/performance/find_events.py 2011-02-14 18:35:56 UTC (rev 6922)
+++ CalendarServer/trunk/contrib/performance/find_events.py 2011-02-14 19:27:15 UTC (rev 6923)
@@ -18,7 +18,8 @@
from urllib2 import HTTPDigestAuthHandler
from twisted.internet import reactor
-from twisted.internet.defer import inlineCallbacks, returnValue
+from twisted.internet.defer import inlineCallbacks, returnValue, gatherResults
+from twisted.internet.task import cooperate
from twisted.web.client import Agent
from twisted.web.http_headers import Headers
from twisted.web.http import MULTI_STATUS
@@ -40,6 +41,20 @@
</x0:propfind>
"""
+def uploadEvents(numEvents, agent, uri, cal):
+ def worker():
+ for i in range(numEvents):
+ event = makeEvent(i, 1, 0)
+ yield agent.request(
+ 'PUT',
+ '%s%s%d.ics' % (uri, cal, i),
+ Headers({"content-type": ["text/calendar"]}),
+ StringProducer(event))
+ worker = worker()
+ return gatherResults([
+ cooperate(worker).whenDone() for i in range(3)])
+
+
@inlineCallbacks
def measure(host, port, dtrace, numEvents, samples):
user = password = "user11"
@@ -61,17 +76,11 @@
"%s:%d" % (host, port),
user=user, password=password,
root=root, principal=principal)
- cal = "/calendars/users/%s/find-events/" % (user,)
- yield account.makeCalendar(cal)
+ cal = "calendars/users/%s/find-events/" % (user,)
+ yield account.makeCalendar("/" + cal)
# Create the indicated number of events on the calendar
- for i in range(numEvents):
- event = makeEvent(i, 1, 0)
- yield agent.request(
- 'PUT',
- '%s%s%d.ics' % (uri, cal, i),
- Headers({"content-type": ["text/calendar"]}),
- StringProducer(event))
+ yield uploadEvents(numEvents, agent, uri, cal)
body = StringProducer(PROPFIND)
params = (
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110214/8604db0b/attachment-0001.html>
More information about the calendarserver-changes
mailing list