[CalendarServer-changes] [7793] CalendarServer/trunk/contrib/performance/loadtest

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 14 09:46:53 PDT 2011


Revision: 7793
          http://trac.macosforge.org/projects/calendarserver/changeset/7793
Author:   sagen at apple.com
Date:     2011-07-14 09:46:52 -0700 (Thu, 14 Jul 2011)
Log Message:
-----------
Adds a record generator

Modified Paths:
--------------
    CalendarServer/trunk/contrib/performance/loadtest/sim.py
    CalendarServer/trunk/contrib/performance/loadtest/test_sim.py

Modified: CalendarServer/trunk/contrib/performance/loadtest/sim.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/sim.py	2011-07-14 16:31:56 UTC (rev 7792)
+++ CalendarServer/trunk/contrib/performance/loadtest/sim.py	2011-07-14 16:46:52 UTC (rev 7793)
@@ -42,6 +42,17 @@
         self.email = email
 
 
+def generateRecords(count, uidPattern="user%d", passwordPattern="user%d",
+    namePattern="User %d", emailPattern="user%d at example.com"):
+    for i in xrange(count):
+        i += 1
+        uid = uidPattern % (i,)
+        password = passwordPattern % (i,)
+        name = namePattern % (i,)
+        email = emailPattern % (i,)
+        yield _DirectoryRecord(uid, password, name, email)
+
+
 def recordsFromCSVFile(path):
     if path:
         pathObj = FilePath(path)

Modified: CalendarServer/trunk/contrib/performance/loadtest/test_sim.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/test_sim.py	2011-07-14 16:31:56 UTC (rev 7792)
+++ CalendarServer/trunk/contrib/performance/loadtest/test_sim.py	2011-07-14 16:46:52 UTC (rev 7793)
@@ -297,7 +297,62 @@
         self.assertEqual(sim.records[98].commonName, 'User 99')
         self.assertEqual(sim.records[98].email, 'user99 at example.com')
 
+    def test_generateRecordsDefaultPatterns(self):
+        """
+        L{LoadSimulator.fromCommandLine} takes an account loader from the
+        config file and uses it to generate user records for use in the
+        simulation.
+        """
+        config = VALID_CONFIG.copy()
+        config["accounts"] = {
+            "loader": "loadtest.sim.generateRecords",
+            "params": {
+                "count": 2
+            },
+        }
+        configpath = FilePath(self.mktemp())
+        configpath.setContent(writePlistToString(config))
+        sim = LoadSimulator.fromCommandLine(['--config', configpath.path])
+        self.assertEqual(2, len(sim.records))
+        self.assertEqual(sim.records[0].uid, 'user1')
+        self.assertEqual(sim.records[0].password, 'user1')
+        self.assertEqual(sim.records[0].commonName, 'User 1')
+        self.assertEqual(sim.records[0].email, 'user1 at example.com')
+        self.assertEqual(sim.records[1].uid, 'user2')
+        self.assertEqual(sim.records[1].password, 'user2')
+        self.assertEqual(sim.records[1].commonName, 'User 2')
+        self.assertEqual(sim.records[1].email, 'user2 at example.com')
 
+    def test_generateRecordsNonDefaultPatterns(self):
+        """
+        L{LoadSimulator.fromCommandLine} takes an account loader from the
+        config file and uses it to generate user records for use in the
+        simulation.
+        """
+        config = VALID_CONFIG.copy()
+        config["accounts"] = {
+            "loader": "loadtest.sim.generateRecords",
+            "params": {
+                "count": 3,
+                "uidPattern": "USER%03d",
+                "passwordPattern": "PASSWORD%03d",
+                "namePattern": "Test User %03d",
+                "emailPattern": "USER%03d at example2.com",
+            },
+        }
+        configpath = FilePath(self.mktemp())
+        configpath.setContent(writePlistToString(config))
+        sim = LoadSimulator.fromCommandLine(['--config', configpath.path])
+        self.assertEqual(3, len(sim.records))
+        self.assertEqual(sim.records[0].uid, 'USER001')
+        self.assertEqual(sim.records[0].password, 'PASSWORD001')
+        self.assertEqual(sim.records[0].commonName, 'Test User 001')
+        self.assertEqual(sim.records[0].email, 'USER001 at example2.com')
+        self.assertEqual(sim.records[2].uid, 'USER003')
+        self.assertEqual(sim.records[2].password, 'PASSWORD003')
+        self.assertEqual(sim.records[2].commonName, 'Test User 003')
+        self.assertEqual(sim.records[2].email, 'USER003 at example2.com')
+
     def test_specifyRuntime(self):
         """
         L{LoadSimulator.fromCommandLine} recognizes the I{--runtime} option to
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110714/a33d5d15/attachment-0001.html>


More information about the calendarserver-changes mailing list