[CalendarServer-changes] [8242] CalendarServer/branches/users/glyph/parallel-sim/contrib/performance /loadtest/sim.py

source_changes at macosforge.org source_changes at macosforge.org
Tue Nov 1 17:50:44 PDT 2011


Revision: 8242
          http://trac.macosforge.org/projects/calendarserver/changeset/8242
Author:   glyph at apple.com
Date:     2011-11-01 17:50:44 -0700 (Tue, 01 Nov 2011)
Log Message:
-----------
make it possible to instantiate directly from a property list dict instead of from a command-line invocation.

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/parallel-sim/contrib/performance/loadtest/sim.py

Modified: CalendarServer/branches/users/glyph/parallel-sim/contrib/performance/loadtest/sim.py
===================================================================
--- CalendarServer/branches/users/glyph/parallel-sim/contrib/performance/loadtest/sim.py	2011-11-02 00:50:16 UTC (rev 8241)
+++ CalendarServer/branches/users/glyph/parallel-sim/contrib/performance/loadtest/sim.py	2011-11-02 00:50:44 UTC (rev 8242)
@@ -196,21 +196,31 @@
         except UsageError, e:
             raise SystemExit(str(e))
 
+        return cls.fromConfig(options.config, options['runtime'], output)
+
+
+    @classmethod
+    def fromConfig(cls, config, runtime=None, output=stdout):
+        """
+        Create a L{LoadSimulator} from a parsed instance of a configuration
+        property list.
+        """
+
         server = 'http://127.0.0.1:8008/'
-        if 'server' in options.config:
-            server = options.config['server']
+        if 'server' in config:
+            server = config['server']
 
-        if 'arrival' in options.config:
+        if 'arrival' in config:
             arrival = Arrival(
-                namedAny(options.config['arrival']['factory']), 
-                options.config['arrival']['params'])
+                namedAny(config['arrival']['factory']), 
+                config['arrival']['params'])
         else:
             arrival = Arrival(
                 SmoothRampUp, dict(groups=10, groupSize=1, interval=3))
 
         parameters = PopulationParameters()
-        if 'clients' in options.config:
-            for clientConfig in options.config['clients']:
+        if 'clients' in config:
+            for clientConfig in config['clients']:
                 parameters.addClient(
                     clientConfig["weight"],
                     ClientType(
@@ -225,21 +235,22 @@
                 1, ClientType(SnowLeopard, {}, [Eventer, Inviter, Accepter]))
 
         observers = []
-        if 'observers' in options.config:
-            for observerName in options.config['observers']:
+        if 'observers' in config:
+            for observerName in config['observers']:
                 observers.append(namedAny(observerName)())
 
         records = []
-        if 'accounts' in options.config:
-            loader = options.config['accounts']['loader']
-            params = options.config['accounts']['params']
+        if 'accounts' in config:
+            loader = config['accounts']['loader']
+            params = config['accounts']['params']
             records.extend(namedAny(loader)(**params))
             output.write("Loaded {0} accounts.\n".format(len(records)))
 
         return cls(server, arrival, parameters,
                    observers=observers, records=records,
-                   runtime=options['runtime'])
+                   runtime=runtime)
 
+
     @classmethod
     def _convertParams(cls, params):
         """
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111101/ff2e3917/attachment.html>


More information about the calendarserver-changes mailing list