def main(*args): parser = argparse.ArgumentParser() parser.add_argument("configuration_file", nargs=1, type=argparse.FileType(), help="Configuration file.") parser.add_argument('-c', '--console', action='store_true', help="Enable console output.") parser.add_argument('-l', '--logfile', help="Enable output into logfile.") if args: parsed_argument = parser.parse_args(list(args)) else: parsed_argument = parser.parse_args() logger_format = '%(asctime)s %(name)-13s: %(levelname)-8s %(message)s' formatter = logging.Formatter(logger_format) logging.basicConfig(level=logging.INFO, format=logger_format) logger = logging.getLogger('erp5testnode') if parsed_argument.console or parsed_argument.logfile: if parsed_argument.console: logger.addHandler(logging.StreamHandler()) logger.info('Activated console output.') if parsed_argument.logfile: file_handler = logging.handlers.RotatingFileHandler( filename=parsed_argument.logfile, maxBytes=20000000, backupCount=4) file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.info('Activated logfile %r output' % parsed_argument.logfile) CONFIG['log_file'] = parsed_argument.logfile else: logger.addHandler(logging.NullHandler()) CONFIG['logger'] = logger.info config = ConfigParser.SafeConfigParser() # do not change case of option keys config.optionxform = str config.readfp(parsed_argument.configuration_file[0]) for key in ('slapos_directory', 'working_directory', 'test_suite_directory', 'log_directory', 'run_directory', 'srv_directory', 'proxy_host', 'software_directory', 'proxy_port', 'git_binary', 'zip_binary', 'node_quantity', 'test_node_title', 'ipv4_address', 'ipv6_address', 'test_suite_master_url', 'slapgrid_partition_binary', 'slapgrid_software_binary', 'slapproxy_binary', 'httpd_ip', 'httpd_port', 'httpd_software_access_port', 'computer_id', 'server_url'): CONFIG[key] = config.get('testnode', key) for key in ('slapos_directory', 'working_directory', 'test_suite_directory', 'log_directory', 'run_directory', 'srv_directory', 'software_directory'): d = CONFIG[key] if not os.path.isdir(d): raise ValueError('Directory %r does not exists.' % d) CONFIG['master_url'] = 'http://%s:%s' % (CONFIG['proxy_host'], CONFIG['proxy_port']) CONFIG['httpd_url'] = 'https://[%s]:%s' % (CONFIG['httpd_ip'], CONFIG['httpd_port']) CONFIG['system_temp_folder'] = "/tmp" # generate vcs_repository_list if 'bot_environment' in config.sections(): bot_environment = dict(config.items('bot_environment')) else: bot_environment = {} CONFIG['bot_environment'] = bot_environment CONFIG['environment'] = dict(config.items('environment')) if 'instance_dict' in config.sections(): instance_dict = dict(config.items('instance_dict')) else: instance_dict = {} CONFIG['instance_dict'] = instance_dict if 'software_list' in config.sections(): CONFIG['software_list'] = filter( None, config.get("software_list", "path_list").split(",")) testnode = TestNode(logger.info, CONFIG) testnode.run()
def main(*args): parser = argparse.ArgumentParser() parser.add_argument("configuration_file", nargs=1, type=argparse.FileType(), help="Configuration file.") parser.add_argument('-c', '--console', action='store_true', help="Enable console output.") parser.add_argument('-l', '--logfile', help="Enable output into logfile.") if args: parsed_argument = parser.parse_args(list(args)) else: parsed_argument = parser.parse_args() logger_format = '%(asctime)s %(name)-13s: %(levelname)-8s %(message)s' formatter = logging.Formatter(logger_format) logging.basicConfig(level=logging.INFO, format=logger_format) logger = logging.getLogger('erp5testnode') if parsed_argument.console or parsed_argument.logfile: if parsed_argument.console: logger.addHandler(logging.StreamHandler()) logger.info('Activated console output.') if parsed_argument.logfile: file_handler = logging.handlers.RotatingFileHandler( filename=parsed_argument.logfile, maxBytes=20000000, backupCount=4) file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.info('Activated logfile %r output' % parsed_argument.logfile) CONFIG['log_file'] = parsed_argument.logfile else: logger.addHandler(logging.NullHandler()) CONFIG['logger'] = logger.info config = ConfigParser.SafeConfigParser() # do not change case of option keys config.optionxform = str config.readfp(parsed_argument.configuration_file[0]) for key in ('slapos_directory','working_directory','test_suite_directory', 'log_directory','run_directory', 'srv_directory', 'proxy_host', 'software_directory', 'proxy_port', 'git_binary','zip_binary','node_quantity', 'test_node_title', 'ipv4_address','ipv6_address','test_suite_master_url', 'slapgrid_partition_binary','slapgrid_software_binary', 'slapproxy_binary', 'httpd_ip', 'httpd_port', 'httpd_software_access_port', 'computer_id', 'server_url'): CONFIG[key] = config.get('testnode',key) for key in ('slapos_directory', 'working_directory', 'test_suite_directory', 'log_directory', 'run_directory', 'srv_directory', 'software_directory'): d = CONFIG[key] if not os.path.isdir(d): raise ValueError('Directory %r does not exists.' % d) CONFIG['master_url'] = 'http://%s:%s' % (CONFIG['proxy_host'], CONFIG['proxy_port']) CONFIG['httpd_url'] = 'https://[%s]:%s' % (CONFIG['httpd_ip'], CONFIG['httpd_port']) CONFIG['system_temp_folder'] = "/tmp" # generate vcs_repository_list if 'bot_environment' in config.sections(): bot_environment = dict(config.items('bot_environment')) else: bot_environment = {} CONFIG['bot_environment'] = bot_environment CONFIG['environment'] = dict(config.items('environment')) if 'instance_dict' in config.sections(): instance_dict = dict(config.items('instance_dict')) else: instance_dict = {} CONFIG['instance_dict'] = instance_dict if 'software_list' in config.sections(): CONFIG['software_list'] = filter(None, config.get("software_list", "path_list").split(",")) testnode = TestNode(logger.info, CONFIG) testnode.run()
def main(*args): parser = argparse.ArgumentParser() parser.add_argument("configuration_file", nargs=1, type=argparse.FileType(), help="Configuration file.") parser.add_argument('-c', '--console', action='store_true', help="Enable console output.") parser.add_argument('-l', '--logfile', help="Enable output into logfile.") if args: parsed_argument = parser.parse_args(list(args)) else: parsed_argument = parser.parse_args() logger_format = '%(asctime)s %(name)-13s: %(levelname)-8s %(message)s' formatter = logging.Formatter(logger_format) logging.basicConfig(level=logging.INFO, format=logger_format) logger = logging.getLogger('erp5testnode') if parsed_argument.console or parsed_argument.logfile: if parsed_argument.console: logger.addHandler(logging.StreamHandler()) logger.info('Activated console output.') if parsed_argument.logfile: file_handler = logging.FileHandler(filename=parsed_argument.logfile) file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.info('Activated logfile %r output' % parsed_argument.logfile) CONFIG['log_file'] = parsed_argument.logfile else: logger.addHandler(logging.NullHandler()) CONFIG['logger'] = logger.info config = ConfigParser.SafeConfigParser() # do not change case of option keys config.optionxform = str config.readfp(parsed_argument.configuration_file[0]) for key in ('slapos_directory', 'working_directory', 'test_suite_directory', 'log_directory', 'run_directory', 'proxy_host', 'proxy_port', 'git_binary', 'zip_binary', 'test_suite_title', 'test_node_title', 'test_suite', 'project_title', 'node_quantity', 'ipv4_address', 'ipv6_address', 'test_suite_master_url', 'slapgrid_partition_binary', 'slapgrid_software_binary', 'slapproxy_binary'): CONFIG[key] = config.get('testnode', key) for key in ('slapos_directory', 'working_directory', 'test_suite_directory', 'log_directory', 'run_directory'): d = CONFIG[key] if not os.path.isdir(d): raise ValueError('Directory %r does not exists.' % d) slapos_directory = CONFIG['slapos_directory'] CONFIG['software_root'] = software_root = os.path.join(slapos_directory, 'software') CONFIG['instance_root'] = instance_root = os.path.join(slapos_directory, 'instance') CONFIG['proxy_database'] = os.path.join(slapos_directory, 'proxy.db') CONFIG['slapos_config'] = slapos_config = os.path.join(slapos_directory, 'slapos.cfg') if not os.path.lexists(software_root): os.mkdir(software_root) CONFIG['master_url'] = 'http://%s:%s' % (CONFIG['proxy_host'], CONFIG['proxy_port']) open(slapos_config, 'w').write(pkg_resources.resource_string( 'erp5.util.testnode', 'template/slapos.cfg.in') % CONFIG) CONFIG['runTestSuite'] = os.path.join(instance_root, CONFIG['partition_reference'], 'bin', 'runTestSuite') # generate vcs_repository_list vcs_repository_list = [] for section in config.sections(): if section.startswith('vcs_repository'): vcs_repository_list.append(dict(config.items(section))) CONFIG['bt5_path'] = None if 'bt5_path' in config.options("testnode"): bt5_path = config.get("testnode", 'bt5_path') if bt5_path.lower() != "none": CONFIG['bt5_path'] = bt5_path CONFIG['vcs_repository_list'] = vcs_repository_list if 'bot_environment' in config.sections(): bot_environment = dict(config.items('bot_environment')) else: bot_environment = {} CONFIG['bot_environment'] = bot_environment CONFIG['environment'] = dict(config.items('environment')) if 'instance_dict' in config.sections(): instance_dict = dict(config.items('instance_dict')) else: instance_dict = {} CONFIG['instance_dict'] = instance_dict testnode = TestNode(logger.info, CONFIG) testnode.run()