[CalendarServer-changes] [1653] CalDAVTester/trunk/src

source_changes at macosforge.org source_changes at macosforge.org
Mon Jul 9 11:41:59 PDT 2007


Revision: 1653
          http://trac.macosforge.org/projects/calendarserver/changeset/1653
Author:   cdaboo at apple.com
Date:     2007-07-09 11:41:59 -0700 (Mon, 09 Jul 2007)

Log Message:
-----------
New option to generate before/after memory usage stats for each test suite.

Modified Paths:
--------------
    CalDAVTester/trunk/src/caldavtest.py
    CalDAVTester/trunk/src/manager.py

Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py	2007-07-09 18:40:50 UTC (rev 1652)
+++ CalDAVTester/trunk/src/caldavtest.py	2007-07-09 18:41:59 UTC (rev 1653)
@@ -97,6 +97,8 @@
             ignored = len(suite.tests)
         else:
             self.manager.log(manager.LOG_HIGH, "")
+            if self.manager.memUsage:
+                start_usage = self.manager.getMemusage()
             for test in suite.tests:
                 result = self.run_test( test )
                 if result == "t":
@@ -105,6 +107,10 @@
                     failed += 1
                 else:
                     ignored += 1
+            if self.manager.memUsage:
+                end_usage = self.manager.getMemusage()
+                print start_usage, end_usage
+                self.manager.log(manager.LOG_HIGH, "Mem. Usage: RSS=%s%% VSZ=%s%%" % (str(((end_usage[1] - start_usage[1]) * 100)/start_usage[1]), str(((end_usage[0] - start_usage[0]) * 100)/start_usage[0]))) 
         self.manager.log(manager.LOG_HIGH, "Suite Results: %d PASSED, %d FAILED, %d IGNORED" % (ok, failed, ignored), before=1, indent=4)
         return (ok, failed, ignored)
             

Modified: CalDAVTester/trunk/src/manager.py
===================================================================
--- CalDAVTester/trunk/src/manager.py	2007-07-09 18:40:50 UTC (rev 1652)
+++ CalDAVTester/trunk/src/manager.py	2007-07-09 18:41:59 UTC (rev 1653)
@@ -40,7 +40,7 @@
     """
     Main class that runs test suites defined in an XML config file.
     """
-    __slots__  = ['server_info', 'populator', 'depopulate', 'tests', 'textMode', 'logLevel']
+    __slots__  = ['server_info', 'populator', 'depopulate', 'tests', 'textMode', 'pid', 'memUsage', 'logLevel']
 
     LOG_NONE    = 0
     LOG_LOW     = 1
@@ -53,6 +53,8 @@
         self.depopulate = False
         self.tests = []
         self.textMode = text
+        self.pid = 0
+        self.memUsage = None
         self.logLevel = level
     
     def log(self, level, str, indent = 0, indentStr = " ", after = 1, before = 0):
@@ -131,7 +133,8 @@
         fnames = []
         docroot = None
         all = False
-        options, args = getopt.getopt(sys.argv[1:], "s:p:dx:r:", ["all"])
+        pidfile = "../CalendarServer/logs/caldavd.pid"
+        options, args = getopt.getopt(sys.argv[1:], "s:p:dmx:r:", ["all", "pid=",])
         
         # Process single options
         for option, value in options:
@@ -147,6 +150,10 @@
                 docroot = value
             elif option == "--all":
                 all = True
+            elif option == "-m":
+                self.memUsage = True
+            elif option == "--pid":
+                pidfile = value
                 
         if all:
             files = os.listdir(dname)
@@ -164,10 +171,17 @@
         self.readXML(sname, pname, fnames, all)
         if docroot:
             self.server_info.serverfilepath = docroot
+            
+        if self.memUsage:
+            fd = open(pidfile, "r")
+            s = fd.read()
+            self.pid = int(s)
 
-    def runWithOptions(self, sname, pname, fnames, moresubs, all = False, depopulate = False):
+    def runWithOptions(self, sname, pname, fnames, moresubs, pid=0, memUsage=False, all = False, depopulate = False):
         self.depopulate = depopulate
         self.readXML(sname, pname, fnames, all, moresubs)
+        self.pid = pid
+        self.memUsage = memUsage
         return self.runAll()
 
     def runAll(self):
@@ -222,3 +236,17 @@
         
         return response.status, respdata
         
+    def getMemusage(self):
+        """
+        
+        @param pid: numeric pid of process to get memory usage for
+        @type pid:  int
+        @retrun:    tuple of (RSS, VSZ) values for the process
+        """
+        
+        fd = os.popen("ps -l -p %d" % (self.pid,))
+        data = fd.read()
+        lines = data.split("\n")
+        procdata = lines[1].split()
+        return int(procdata[6]), int(procdata[7])
+

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070709/83c31c60/attachment.html


More information about the calendarserver-changes mailing list