[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