[CalendarServer-changes] [15627] CalendarServer/trunk/contrib/performance/loadtest
source_changes at macosforge.org
source_changes at macosforge.org
Fri May 20 16:36:26 PDT 2016
Revision: 15627
http://trac.calendarserver.org//changeset/15627
Author: sagen at apple.com
Date: 2016-05-20 16:36:26 -0700 (Fri, 20 May 2016)
Log Message:
-----------
Sim operations that exceed responsetime thresholds count towards overall run failure.
Modified Paths:
--------------
CalendarServer/trunk/contrib/performance/loadtest/clients.plist
CalendarServer/trunk/contrib/performance/loadtest/ical.py
CalendarServer/trunk/contrib/performance/loadtest/profiles.py
CalendarServer/trunk/contrib/performance/loadtest/thresholds.json
Modified: CalendarServer/trunk/contrib/performance/loadtest/clients.plist
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/clients.plist 2016-05-20 19:45:30 UTC (rev 15626)
+++ CalendarServer/trunk/contrib/performance/loadtest/clients.plist 2016-05-20 23:36:26 UTC (rev 15627)
@@ -166,7 +166,7 @@
<!-- Percentage of time to attach a file -->
<key>fileAttachPercentage</key>
- <integer>5</integer>
+ <integer>1</integer>
<!-- Define the attachment size distribution. -->
<key>fileSizeDistribution</key>
@@ -175,7 +175,7 @@
<string>contrib.performance.stats.NormalDistribution</string>
<key>params</key>
<dict>
- <!-- mu gives the mean of the normal distribution (in seconds). -->
+ <!-- mu gives the mean of the normal distribution (in bytes). -->
<key>mu</key>
<integer>500000</integer>
@@ -379,7 +379,7 @@
<string>contrib.performance.stats.NormalDistribution</string>
<key>params</key>
<dict>
- <!-- mu gives the mean of the normal distribution (in seconds). -->
+ <!-- mu gives the mean of the normal distribution (in bytes). -->
<key>mu</key>
<integer>500000</integer>
@@ -603,7 +603,7 @@
<!-- Percentage of time to attach a file -->
<key>fileAttachPercentage</key>
- <integer>10</integer>
+ <integer>1</integer>
<!-- Define the attachment size distribution. -->
<key>fileSizeDistribution</key>
Modified: CalendarServer/trunk/contrib/performance/loadtest/ical.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/ical.py 2016-05-20 19:45:30 UTC (rev 15626)
+++ CalendarServer/trunk/contrib/performance/loadtest/ical.py 2016-05-20 23:36:26 UTC (rev 15627)
@@ -1566,7 +1566,7 @@
self.calendarHomeHref = calendarHome
yield self._checkCalendarsForEvents(calendarHome, firstTime=True)
returnValue(calendarHome)
- calendarHome = yield self._newOperation("startup: %s" % (self.title,), startup())
+ calendarHome = yield self._newOperation("startup", startup())
self.started = True
Modified: CalendarServer/trunk/contrib/performance/loadtest/profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2016-05-20 19:45:30 UTC (rev 15626)
+++ CalendarServer/trunk/contrib/performance/loadtest/profiles.py 2016-05-20 23:36:26 UTC (rev 15627)
@@ -727,7 +727,7 @@
def modifyEvent(self, _ignore_href, vevent):
length = max(5, int(self._titleLength.sample()))
vevent.replaceProperty(Property("SUMMARY", "Event" + "." * (length - 5)))
- return succeed("update{title}")
+ return succeed("update")
@@ -747,7 +747,7 @@
def modifyEvent(self, _ignore_href, vevent):
length = int(self._descriptionLength.sample())
vevent.replaceProperty(Property("DESCRIPTION", "." * length))
- return succeed("update{description}")
+ return succeed("update")
@@ -1209,6 +1209,8 @@
_LATENCY_REASON = "Median %(operation)s scheduling lag greater than %(cutoff)sms"
_FAILED_REASON = "Greater than %(cutoff).0f%% %(operation)s failed"
_PUSH_MISSING_REASON = "Push was configured but no pushes were received by clients"
+ _REASON_1 = "Greater than %(cutoff)g%% %(method)s exceeded "
+ _REASON_2 = "%g second response time"
def failures(self):
reasons = []
@@ -1224,6 +1226,24 @@
reasons.append(self._FAILED_REASON % dict(
operation=operation.upper(), cutoff=self._fail_cut_off))
+ for operation, times in self._perOperationTimes.iteritems():
+ overDurations = [0] * len(self._thresholds)
+ for success, duration in times:
+ for ctr, item in enumerate(self._thresholds):
+ threshold, _ignore_fail_at = item
+ if duration > threshold:
+ overDurations[ctr] += 1
+ checks = []
+ for ctr, item in enumerate(self._thresholds):
+ threshold, fail_at = item
+ fail_at = fail_at.get(operation, fail_at["default"])
+ checks.append(
+ (overDurations[ctr], fail_at, self._REASON_1 + self._REASON_2 % (threshold,))
+ )
+ for count, cutoff, reason in checks:
+ if count * 100.0 / len(times) > cutoff:
+ reasons.append(reason % dict(method=operation.upper(), cutoff=cutoff))
+
if self._fail_if_no_push and "push" not in self._perOperationTimes:
reasons.append(self._PUSH_MISSING_REASON)
Modified: CalendarServer/trunk/contrib/performance/loadtest/thresholds.json
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/thresholds.json 2016-05-20 19:45:30 UTC (rev 15626)
+++ CalendarServer/trunk/contrib/performance/loadtest/thresholds.json 2016-05-20 23:36:26 UTC (rev 15627)
@@ -4,27 +4,27 @@
"thresholds": {
"default" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
-
+
"GET{event}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
-
+
"PUT{event}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 0.5],
"PUT{update}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 0.5],
"PUT{attendee-small}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
- "PUT{attendee-medium}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
+ "PUT{attendee-medium}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
"PUT{attendee-large}" : [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 25.0],
"PUT{attendee-huge}" : [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0],
- "PUT{organizer-small}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
+ "PUT{organizer-small}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
"PUT{organizer-medium}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
"PUT{organizer-large}" : [ 100.0, 100.0, 100.0, 100.0, 100.0, 75.0, 25.0],
"PUT{organizer-huge}" : [ 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0],
-
+
"DELETE{event}" : [ 100.0, 100.0, 50.0, 25.0, 10.0, 5.0, 1.0],
-
+
"POST{fb-small}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
- "POST{fb-medium}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
- "POST{fb-large}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
- "POST{fb-huge}" : [ 100.0, 100.0, 100.0, 100.0, 75.0, 50.0, 25.0],
-
+ "POST{fb-medium}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
+ "POST{fb-large}" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 25.0, 5.0],
+ "POST{fb-huge}" : [ 100.0, 100.0, 100.0, 100.0, 75.0, 50.0, 25.0],
+
"PROPFIND{well-known}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"PROPFIND{find-principal}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"PROPFIND{principal}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
@@ -32,9 +32,9 @@
"PROPFIND{calendar}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"PROPFIND{notification}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"PROPFIND{notification-items}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
-
+
"PROPPATCH{calendar}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
-
+
"REPORT{pset}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"REPORT{expand}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
"REPORT{psearch}" : [ 100.0, 100.0, 100.0, 5.0, 1.0, 0.5, 0.0],
@@ -56,11 +56,13 @@
"accept" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
"create" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
- "update" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
+ "download" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
"invite" : [ 100.0, 100.0, 100.0, 100.0, 75.0, 50.0, 25.0],
"poll" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
"push" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
- "reply done" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0]
+ "reply done" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
+ "startup" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0],
+ "update" : [ 100.0, 100.0, 100.0, 75.0, 50.0, 10.0, 5.0]
}
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20160520/b329db98/attachment-0001.html>
More information about the calendarserver-changes
mailing list