Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()