[CalendarServer-changes] [11687] CalendarServer/trunk/twext/web2/test/test_metafd.py

source_changes at macosforge.org source_changes at macosforge.org
Thu Sep 12 18:17:48 PDT 2013


Revision: 11687
          http://trac.calendarserver.org//changeset/11687
Author:   glyph at apple.com
Date:     2013-09-12 18:17:48 -0700 (Thu, 12 Sep 2013)
Log Message:
-----------
Refactor test implementation to make testing of MaxRequests enforcement easier.

Modified Paths:
--------------
    CalendarServer/trunk/twext/web2/test/test_metafd.py

Modified: CalendarServer/trunk/twext/web2/test/test_metafd.py
===================================================================
--- CalendarServer/trunk/twext/web2/test/test_metafd.py	2013-09-13 01:17:42 UTC (rev 11686)
+++ CalendarServer/trunk/twext/web2/test/test_metafd.py	2013-09-13 01:17:48 UTC (rev 11687)
@@ -169,6 +169,7 @@
         builder = LimiterBuilder(self)
         builder.fillUp()
         self.assertEquals(builder.port.reading, False) # sanity check
+        self.assertEquals(builder.highestLoad(), builder.requestsPerSocket)
         builder.loadDown()
         self.assertEquals(builder.port.reading, True)
 
@@ -182,6 +183,7 @@
         builder = LimiterBuilder(self)
         builder.fillUp()
         self.assertEquals(builder.port.reading, False)
+        self.assertEquals(builder.highestLoad(), builder.requestsPerSocket)
         builder.processRestart()
         self.assertEquals(builder.port.reading, True)
 
@@ -193,6 +195,7 @@
         """
         builder = LimiterBuilder(self)
         builder.fillUp(acknowledged=False)
+        self.assertEquals(builder.highestLoad(), builder.requestsPerSocket)
         self.assertEquals(builder.port.reading, False)
         builder.processRestart()
         self.assertEquals(builder.port.reading, True)
@@ -215,19 +218,33 @@
     for a given unit test.
     """
 
-    def __init__(self, test, maxReq=3):
-        self.limiter = ConnectionLimiter(2, maxRequests=maxReq)
+    def __init__(self, test, requestsPerSocket=3, socketCount=2):
+        # Similar to MaxRequests in the configuration.
+        self.requestsPerSocket = requestsPerSocket
+        # Similar to ProcessCount in the configuration.
+        self.socketCount = socketCount
+        self.limiter = ConnectionLimiter(
+            2, maxRequests=requestsPerSocket * socketCount
+        )
         self.dispatcher = self.limiter.dispatcher
         self.dispatcher.reactor = ReaderAdder()
         self.service = Service()
         self.limiter.addPortService("TCP", 4321, "127.0.0.1", 5,
                                     self.serverServiceMakerMaker(self.service))
-        self.dispatcher.addSocket()
+        for ignored in xrange(socketCount):
+            self.dispatcher.addSocket()
         # Has to be running in order to add stuff.
         self.limiter.startService()
         self.port = self.service.myPort
 
 
+    def highestLoad(self):
+        return max(
+            skt.status.effective()
+            for skt in self.limiter.dispatcher._subprocessSockets
+        )
+
+
     def serverServiceMakerMaker(self, s):
         """
         Make a serverServiceMaker for use with
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130912/ce1d236a/attachment.html>


More information about the calendarserver-changes mailing list