[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