[Erp5-report] r45964 guillaume.bottex - in /slapos/trunk/util: slapos.tool.nosqltester_mana...

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jul 5 17:53:48 CEST 2011


Author: guillaume.bottex
Date: Tue Jul  5 17:53:48 2011
New Revision: 45964

URL: http://svn.erp5.org?rev=45964&view=rev
Log:
Put argparsing in NoSQLTesterManager class.

Modified:
    slapos/trunk/util/slapos.tool.nosqltester_manager.kumo/src/slapos/tool/nosqltester_manager/kumo/__init__.py
    slapos/trunk/util/slapos.tool.nosqltester_manager/src/slapos/tool/nosqltester_manager/__init__.py

Modified: slapos/trunk/util/slapos.tool.nosqltester_manager.kumo/src/slapos/tool/nosqltester_manager/kumo/__init__.py
URL: http://svn.erp5.org/slapos/trunk/util/slapos.tool.nosqltester_manager.kumo/src/slapos/tool/nosqltester_manager/kumo/__init__.py?rev=45964&r1=45963&r2=45964&view=diff
==============================================================================
--- slapos/trunk/util/slapos.tool.nosqltester_manager.kumo/src/slapos/tool/nosqltester_manager/kumo/__init__.py [utf8] (original)
+++ slapos/trunk/util/slapos.tool.nosqltester_manager.kumo/src/slapos/tool/nosqltester_manager/kumo/__init__.py [utf8] Tue Jul  5 17:53:48 2011
@@ -33,27 +33,20 @@ from slapos.tool.nosqltester_manager imp
 
 class KumoTesterManager(NoSQLTesterManager):
 
-  def __init__(self, params):
-    NoSQLTesterManager.__init__(self, params)
+  def __init__(self, *args):
+    NoSQLTesterManager.__init__(self, *args)
     
     self.node_type = "server"
-    self.host_address = params['address']
+    self.host_address = parameter_dict['address']
     
-    argv = sys.argv[16:]
-    
-    if argv.__len__() < 1:
-      self.nb_thread = 1
-    else:
-      self.nb_thread = argv[0]
-      
-    if argv.__len__() < 2:
-      self.nb_request = 1000
-    else:
-      self.nb_request = argv[1]
-
     self.max_manager = 1
     self.computer_guid_list = self.computer_partition.getConnectionParameter('computer_guid_list').split(':')
 
+  def _add_parser_arguments(self, parser):
+    NoSQLTesterManager._add_parser_arguments(parser)
+    parser.add_argument('nb_thread', help="Nb of memstrike's thread")
+    parser.add_argument('nb_request', help="Nb of memstrike's request")
+
   def do_scheduling(self, action):
     """
     Override the do_scheduling to add 1 minute sleep,

Modified: slapos/trunk/util/slapos.tool.nosqltester_manager/src/slapos/tool/nosqltester_manager/__init__.py
URL: http://svn.erp5.org/slapos/trunk/util/slapos.tool.nosqltester_manager/src/slapos/tool/nosqltester_manager/__init__.py?rev=45964&r1=45963&r2=45964&view=diff
==============================================================================
--- slapos/trunk/util/slapos.tool.nosqltester_manager/src/slapos/tool/nosqltester_manager/__init__.py [utf8] (original)
+++ slapos/trunk/util/slapos.tool.nosqltester_manager/src/slapos/tool/nosqltester_manager/__init__.py [utf8] Tue Jul  5 17:53:48 2011
@@ -49,43 +49,47 @@ class NoSQLTesterManager(object):
   NoSQLTesterManager class.
   """
   
-  def __init__(self, params):
+  def __init__(self, *args):
     """
     :func:`__init__` method of the NoSQLTester.
     
-    :param params: The name to use.
-    :type params: dict.
+    :param args: The name to use.
+    :type args: tuple.
     
     .. note::
     
-      The params dictionnary should contains the following values:
-      address, port, report_directory, server_url, nb_server_max,
-      nb_tester_max, key_file, cert_file, computer_id,
-      computer_partition_id, plugin_name, debug
+      The args tuple should be the program's argument.
       
     .. note::
     
       You may need to override this method in an inheritance class.
       
     """
-    self.log_directory = params['report_directory']
+    parameter_dict = vars(self._parse_arguments(argparse.ArgumentParser(
+    description='Manage scalability tester(s).',
+    # When adding arguments in the subclass having the same name, just
+    # override it
+    conflict_handler='resolve'), args[2:]))
+
+    
+    self.log_directory = parameter_dict['report_directory']
     self.work_directory = os.path.split(os.path.split(self.log_directory)[0])[0]
     self.tmp_directory = os.path.join(self.work_directory, 'tmp')
     self.tester_urls = []
     self.testers_status = []
     self.todo = 0
     self.reports = []
-    self.nb_init_server = params['nb_server_init']
-    self.nb_init_tester = params['nb_tester_init']
-    self.max_server = params['nb_server_max']
-    self.max_tester = params['nb_tester_max']
-    self.node_increment = params['node_increment']
-    self.software_release_url = params['software_release_url']
-    self.server_url = params['server_url']
-    self.key_file = params['key_file']
-    self.cert_file = params['cert_file']
-    self.computer_id = params['computer_id']
-    self.computer_partition_id = params['computer_partition_id']
+    self.nb_init_server = parameter_dict['nb_server_init']
+    self.nb_init_tester = parameter_dict['nb_tester_init']
+    self.max_server = parameter_dict['nb_server_max']
+    self.max_tester = parameter_dict['nb_tester_max']
+    self.node_increment = parameter_dict['node_increment']
+    self.software_release_url = parameter_dict['software_release_url']
+    self.server_url = parameter_dict['server_url']
+    self.key_file = parameter_dict['key_file']
+    self.cert_file = parameter_dict['cert_file']
+    self.computer_id = parameter_dict['computer_id']
+    self.computer_partition_id = parameter_dict['computer_partition_id']
 
     self.slap = slap.slap()
     self.slap.initializeConnection(self.server_url, self.key_file, self.cert_file)
@@ -99,12 +103,54 @@ class NoSQLTesterManager(object):
 
     # Logger initialization
     self.logger = logging.getLogger("slap.tool.nosqltester_manager")
-    if params['debug']:
+    if parameter_dict['debug']:
       self.logger.setLevel(logging.DEBUG)
     file_handler = logging.FileHandler(os.path.join(self.log_directory, "nosqltester_manager.log"))
     file_handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
     self.logger.addHandler(file_handler)
 
+  def _add_parser_arguments(self, parser):
+    parser = argparse.ArgumentParser(description='',
+                                     conflict_handler='resolve')
+
+    parser.add_argument('--address', '-a', default='127.0.0.1',
+                        help='Manager IP address')
+
+    parser.add_argument('--port', '-p', type=int, default=5000,
+                        help='Manager port')
+
+    parser.add_argument('--debug', '-d', type=bool, default=True,
+                        help='Enable debug messages')
+
+    parser.add_argument('--report-directory', '-r', default='/var/log',
+                        help='Report directory')
+
+    parser.add_argument('--nb-server-max', '-s', type=int, default=3,
+                        help='Maximum number of servers')
+
+    parser.add_argument('--nb-tester-max', '-t', type=int, default=3,
+                        help='Maximum number of testers')
+
+    parser.add_argument('--nb-server-init', '-n', type=int, default=1,
+                        help='Number of servers to start with')
+
+    parser.add_argument('--nb-tester-init', '-m', type=int, default=3,
+                        help='Number of testers to start with')
+
+    parser.add_argument('--node-increment', '-i', type=int, default=1,
+                        help='Number of nodes to add at the end of an iteration')
+
+    parser.add_argument('software_release_url', help='Software Release URL')
+    parser.add_argument('server_url', help='Server URL')
+    parser.add_argument('key_file', help='SSL key file')
+    parser.add_argument('cert_file', help='SSL certificate file')
+    parser.add_argument('computer_id', help='Computer ID')
+    parser.add_argument('computer_partition_id', help='Computer Partition ID')
+
+  def _parse_arguments(self, parser, *args):
+    self._add_parser_arguments(parser)
+    return parser.parse_args(args)
+
   def default_init(self):
     """
     Initialize a default server and tester configuration by
@@ -369,27 +415,7 @@ def scheduler_thread(scheduler, read):
     time.sleep(1)
   os.close(read)
 
-
-def go(params):
-  """
-  Actually starts the program.
-  """
-  
-  entry_point = iter_entry_points(group='slapos.tool.nosqltester_manager.plugin', name=params['plugin_name']).next()
-  plugin_class = entry_point.load()
-  scheduler = plugin_class(params)
-
-  scheduler.default_init()
-
-  r, w = os.pipe()
-  scheduler.setWritePipe(w)
-  
-  t = Thread(target=scheduler_thread, args=(scheduler, r,))
-  t.start()
-  
-  scheduler.waitForReports(host=params['address'], port=params['port'])
-
-def main(argv=None):
+def main():
   """
   Main function. It's the entry point for this program.
   
@@ -402,45 +428,20 @@ def main(argv=None):
   sys.modules[__name__].__file__ = get_distribution(__name__).location + \
                         '/slapos/tool/nosqltester_manager/__init__.pyc'
 
-  parser = argparse.ArgumentParser(description='',
-                                   conflict_handler='resolve')
-
-  parser.add_argument('--address', '-a', default='127.0.0.1',
-                      help='Manager IP address')
-
-  parser.add_argument('--port', '-p', type=int, default=5000,
-                      help='Manager port')
-
-  parser.add_argument('--debug', '-d', type=bool, default=True,
-                      help='Enable debug messages')
-
-  parser.add_argument('--report-directory', '-r', default='/var/log',
-                      help='Report directory')
-
-  parser.add_argument('--nb-server-max', '-s', type=int, default=3,
-                      help='Maximum number of servers')
-
-  parser.add_argument('--nb-tester-max', '-t', type=int, default=3,
-                      help='Maximum number of testers')
-
-  parser.add_argument('--nb-server-init', '-n', type=int, default=3,
-                      help='Number of servers to start with')
-
-  parser.add_argument('--nb-tester-init', '-m', type=int, default=3,
-                      help='Number of testers to start with')
+  entry_point = iter_entry_points(group='slapos.tool.nosqltester_manager.plugin', name=sys.argv[1]).next()
+  plugin_class = entry_point.load()
+  scheduler = plugin_class(sys.argv)
 
-  parser.add_argument('--node-increment', '-i', type=int, default=1,
-                      help='Number of nodes to add at the end of an iteration')
+  scheduler.default_init()
 
-  parser.add_argument('software_release_url', help='Software Release URL')
-  parser.add_argument('server_url', help='Server URL')
-  parser.add_argument('key_file', help='SSL key file')
-  parser.add_argument('cert_file', help='SSL certificate file')
-  parser.add_argument('computer_id', help='Computer ID')
-  parser.add_argument('computer_partition_id', help='Computer Partition ID')
-  parser.add_argument('plugin_name', help='Backend to use')
+  r, w = os.pipe()
+  scheduler.setWritePipe(w)
+  
+  t = Thread(target=scheduler_thread, args=(scheduler, r,))
+  t.start()
+  
+  scheduler.waitForReports(host=scheduler.parameter_dict['address'], port=scheduler.parameter_dict['port'])
 
-  go(vars(parser.parse_args()))
 
 if __name__ == "__main__":
-  main(sys.argv[1:])
+  main()



More information about the Erp5-report mailing list