[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