[CalendarServer-changes] [15105] CalendarServer/branches/users/sredmond/clientsim/contrib/ performance/loadtest/profiles.py

source_changes at macosforge.org source_changes at macosforge.org
Fri Sep 4 11:36:20 PDT 2015


Revision: 15105
          http://trac.calendarserver.org//changeset/15105
Author:   sredmond at apple.com
Date:     2015-09-04 11:36:20 -0700 (Fri, 04 Sep 2015)
Log Message:
-----------
Reworking profiles, adds emptier

Modified Paths:
--------------
    CalendarServer/branches/users/sredmond/clientsim/contrib/performance/loadtest/profiles.py

Modified: CalendarServer/branches/users/sredmond/clientsim/contrib/performance/loadtest/profiles.py
===================================================================
--- CalendarServer/branches/users/sredmond/clientsim/contrib/performance/loadtest/profiles.py	2015-09-04 18:35:34 UTC (rev 15104)
+++ CalendarServer/branches/users/sredmond/clientsim/contrib/performance/loadtest/profiles.py	2015-09-04 18:36:20 UTC (rev 15105)
@@ -665,18 +665,55 @@
     """
     A calendar user who deletes events at random
     """
-    def _deleteEvent(self):
+    def _deleteEvent(self, event):
+        # if self organized
+        d = self._client.deleteEvent(event.url)
+        return self._newOperation("delete{event}", d)
+        # if am attendee
+
+    def _deleteRandomEvent(self):
         event = self._getRandomEvent()
         if event is None:
             return succeed(None)
-        d = self._client.deleteEvent(event.url)
-        return self._newOperation("delete{event}", d)
+        return self._deleteEvent(event)
 
-    action = _deleteEvent
+    action = _deleteRandomEvent
 
+class Deduplicater(EventDeleter):
+    """
+    Profile that will cancel or remove any double- or more-booked events
+    """
+    # def 
 
 
+class Emptier(EventDeleter):
+    """
+    Behavior that keep events underneath capacity
+    """
+    MAX_RESOURCES_PER_COLLECTION = 10
+    MAX_PERCENT_FULL = 0.9
 
+    def run(self):
+        deferreds = []
+        for calendar in self._client._calendars.values():
+            deferreds = []
+            numToDelete = max(0, int(len(calendar.events) - self.MAX_PERCENT_FULL * self.MAX_RESOURCES_PER_COLLECTION))
+            events = calendar.events.values()
+            print(events)
+            eventsToDelete = events[:numToDelete]
+            if eventsToDelete:
+                print("*" * 16)
+                print("Deleting an event because of capacity")
+                for event in eventsToDelete:
+                    d = self._deleteEvent(event)
+                    deferreds.append(d)
+        if not deferreds:
+            return succeed(None)
+        return self._newOperation("empty{calendar}", DeferredList(deferreds))
+
+
+
+
 """ TEST """
 # class Intern(object):
 #     def __init__(self):
@@ -858,11 +895,13 @@
     def setDistributions(
         self,
         enabled=True,
-        acceptDelayDistribution=NormalDistribution(1200, 60)
+        acceptDelayDistribution=NormalDistribution(1200, 60),
+        acceptLikelihoodDistribution=BernoulliDistribution(1),
     ):
         self.enabled = enabled
         self._accepting = set()
         self._acceptDelayDistribution = acceptDelayDistribution
+        self._acceptLikelihood = acceptLikelihoodDistribution
 
 
     def run(self):
@@ -879,13 +918,14 @@
         except KeyError:
             return
 
-        if calendar.resourceType == caldavxml.schedule_inbox:
-            # Handle inbox differently
-            self.inboxEventChanged(calendar, href)
-        elif calendar.resourceType == caldavxml.calendar:
-            self.calendarEventChanged(calendar, href)
-        else:
-            return
+        if self._acceptLikelihood.sample():
+            if calendar.resourceType == caldavxml.schedule_inbox:
+                # Handle inbox differently
+                self.inboxEventChanged(calendar, href)
+            elif calendar.resourceType == caldavxml.calendar:
+                self.calendarEventChanged(calendar, href)
+            else:
+                return
 
 
     def calendarEventChanged(self, calendar, href):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150904/2c902dd1/attachment-0001.html>


More information about the calendarserver-changes mailing list