[CalendarServer-changes] [7087] CalendarServer/trunk/contrib/performance/benchmarks

source_changes at macosforge.org source_changes at macosforge.org
Tue Mar 1 07:16:49 PST 2011


Revision: 7087
          http://trac.macosforge.org/projects/calendarserver/changeset/7087
Author:   exarkun at twistedmatrix.com
Date:     2011-03-01 07:16:49 -0800 (Tue, 01 Mar 2011)
Log Message:
-----------
Add bounded and unbounded recurrence benchmarks including an autoaccept attendee.

Added Paths:
-----------
    CalendarServer/trunk/contrib/performance/benchmarks/bounded_recurrence_autoaccept.py
    CalendarServer/trunk/contrib/performance/benchmarks/unbounded_recurrence_autoaccept.py

Added: CalendarServer/trunk/contrib/performance/benchmarks/bounded_recurrence_autoaccept.py
===================================================================
--- CalendarServer/trunk/contrib/performance/benchmarks/bounded_recurrence_autoaccept.py	                        (rev 0)
+++ CalendarServer/trunk/contrib/performance/benchmarks/bounded_recurrence_autoaccept.py	2011-03-01 15:16:49 UTC (rev 7087)
@@ -0,0 +1,55 @@
+##
+# Copyright (c) 2011 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.
+##
+
+"""
+Benchmark a server's handling of events with a bounded recurrence.
+"""
+
+from uuid import uuid4
+from itertools import count
+from datetime import datetime, timedelta
+
+from _event_create import (
+    makeAttendees, makeVCalendar, formatDate, measure as _measure)
+
+def makeEvent(i, organizerSequence, attendeeCount):
+    """
+    Create a new half-hour long event that starts soon and recurs
+    daily for the next five days.
+    """
+    now = datetime.now()
+    start = now.replace(minute=15, second=0, microsecond=0) + timedelta(hours=i)
+    end = start + timedelta(minutes=30)
+    until = start + timedelta(days=5)
+    rrule = "RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=" + formatDate(until)
+    attendees = makeAttendees(attendeeCount)
+    attendees.append(
+        'ATTENDEE;CN="Resource 01";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=T\n'
+        ' RUE;SCHEDULE-STATUS="1.2":urn:uuid:resource01\n')
+    return makeVCalendar(
+        uuid4(), start, end, rrule, organizerSequence, attendees)
+
+
+def measure(host, port, dtrace, attendeeCount, samples):
+    calendar = "bounded-recurrence-autoaccept"
+    organizerSequence = 1
+
+    # An infinite stream of recurring VEVENTS to PUT to the server.
+    events = ((i, makeEvent(i, organizerSequence, attendeeCount)) for i in count(2))
+
+    return _measure(
+        calendar, organizerSequence, events,
+        host, port, dtrace, samples)

Added: CalendarServer/trunk/contrib/performance/benchmarks/unbounded_recurrence_autoaccept.py
===================================================================
--- CalendarServer/trunk/contrib/performance/benchmarks/unbounded_recurrence_autoaccept.py	                        (rev 0)
+++ CalendarServer/trunk/contrib/performance/benchmarks/unbounded_recurrence_autoaccept.py	2011-03-01 15:16:49 UTC (rev 7087)
@@ -0,0 +1,54 @@
+##
+# Copyright (c) 2011 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.
+##
+
+"""
+Benchmark a server's handling of events with an unbounded recurrence.
+"""
+
+from uuid import uuid4
+from itertools import count
+from datetime import datetime, timedelta
+
+from _event_create import (
+    makeAttendees, makeVCalendar, formatDate, measure as _measure)
+
+def makeEvent(i, organizerSequence, attendeeCount):
+    """
+    Create a new half-hour long event that starts soon and weekly for
+    as long the server allows.
+    """
+    now = datetime.now()
+    start = now.replace(minute=15, second=0, microsecond=0) + timedelta(hours=i)
+    end = start + timedelta(minutes=30)
+    attendees = makeAttendees(attendeeCount)
+    attendees.append(
+        'ATTENDEE;CN="Resource 01";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=T\n'
+        ' RUE;SCHEDULE-STATUS="1.2":urn:uuid:resource01\n')
+    return makeVCalendar(
+        uuid4(), start, end, "RRULE:FREQ=WEEKLY", organizerSequence, attendees)
+
+
+def measure(host, port, dtrace, attendeeCount, samples):
+    calendar = "unbounded-recurrence-autoaccept"
+    organizerSequence = 1
+
+    # An infinite stream of recurring VEVENTS to PUT to the server.
+    events = ((i, makeEvent(i, organizerSequence, attendeeCount)) for i in count(2))
+
+    return _measure(
+        calendar, organizerSequence, events,
+        host, port, dtrace, samples)
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110301/13d3ff78/attachment.html>


More information about the calendarserver-changes mailing list