Пример #1
0
def call_main(args):
    # Get output directory.
    try:
        if args.output_dir is not None:
            runtime.set_output_dir(args.output_dir)
    except ValueError as e:
        print str(e)
        raise

    # Set up logging.
    setup_logging(runtime.get_output_dir(), args.log_level, args.console_level)
    logger = logging.getLogger("zopkio")
    logger.info("Starting zopkio")

    try:
        utils.check_file_with_exception(args.testfile)
        utils.check_testfile_dir_structure(args.testfile)
        machines = utils.make_machine_mapping(args.machine_list)
        config_overrides = utils.parse_config_list(args.config_overrides)
    except ValueError as e:
        logger.error(str(e))
        print("Error in processing command line arguments:\n {0}".format(
            traceback.format_exc()))
        raise

    runtime.set_machines(machines)
    if args.user is not None:
        user = args.user
    else:
        user = getpass.getuser()
    if args.nopassword:
        password = ""
    else:
        password = getpass.getpass()
    runtime.set_user(user, password)

    try:
        testmodule = utils.load_module(args.testfile)
        ztestsuites = [
            getattr(testmodule, attr) for attr in dir(testmodule)
            if isinstance(getattr(testmodule, attr), ZTestSuite)
        ]
        if len(
                ztestsuites
        ) > 0:  #TODO(jehrlich) intelligently handle multiple test suites
            test_runner = TestRunner(ztestsuite=ztestsuites[0],
                                     testlist=args.test_list,
                                     config_overrides=config_overrides)
        else:
            test_runner = TestRunner(args.testfile, args.test_list,
                                     config_overrides)
    except BaseException as e:
        print("Error setting up testrunner:\n%s" % traceback.format_exc())
        raise ValueError(e.message)

    test_runner.run()

    logger.info("Exiting zopkio")
    return test_runner.success_count(), test_runner.fail_count()
Пример #2
0
def setup_suite():
    print "==> Starting tests for PYHK."

    runtime.set_user('root', '')

    global pyhk_deployer
    global tcp_server

    #  Set the server deployer.
    tcp_server = adhoc_deployer.SSHDeployer(
        "server",
        {'executable': runtime.get_active_config('pyhk_exec'),
         'extract': True,
         'start_command': runtime.get_active_config('tcp_server_cmd'),
         'stop_command': "ps ax | grep '[p]ython server' | awk '{print $1}' | xargs kill -9"})
    runtime.set_deployer("server", tcp_server)

    #  Provisioning the server.
    tcp_server.install("server1",
        {"hostname": "10.0.1.23",
         "install_path": runtime.get_active_config('pyhk_install')})

    #  Set the client deployer
    tcp_client = adhoc_deployer.SSHDeployer(
        "client",
        {'executable': runtime.get_active_config('pyhk_exec'),
         'extract': True,
         'start_command': runtime.get_active_config('tcp_client_cmd')})
    runtime.set_deployer("client", tcp_client)

    #  Provisioning the client.
    tcp_client.install("client1",
        {"hostname": "10.0.1.24",
         "install_path": runtime.get_active_config('pyhk_install')})

    #  Set general deployer.
    pyhk_deployer = adhoc_deployer.SSHDeployer(
        "pyhk",
        {'executable': runtime.get_active_config('pyhk_exec'),
         'extract': True,
         'start_command': runtime.get_active_config('pyhk_cmd')})
    runtime.set_deployer("pyhk", pyhk_deployer)

    #  Hostname 1
    pyhk_deployer.install(
        "machine1",
        {"hostname": runtime.get_active_config('pyhk_hostname1'),
         "install_path": runtime.get_active_config('pyhk_install')})

    #  Hostname 2
    pyhk_deployer.install(
        "machine2",
        {"hostname": runtime.get_active_config('pyhk_hostname2'),
         "install_path": runtime.get_active_config('pyhk_install')})
Пример #3
0
def call_main(args):
  # Get output directory.
  try:
    if args.output_dir is not None:
      runtime.set_output_dir(args.output_dir)
  except ValueError as e:
    print str(e)
    raise

  # Set up logging.
  setup_logging(runtime.get_output_dir(), args.log_level, args.console_level)
  logger = logging.getLogger("zopkio")
  logger.info("Starting zopkio")

  try:
    utils.check_file_with_exception(args.testfile)
    utils.check_testfile_dir_structure(args.testfile)
    machines = utils.make_machine_mapping(args.machine_list)
    config_overrides = utils.parse_config_list(args.config_overrides)
  except ValueError as e:
    logger.error(str(e))
    print("Error in processing command line arguments:\n {0}".format(traceback.format_exc()))
    raise

  runtime.set_machines(machines)
  if args.user is not None:
    user = args.user
  else:
    user = getpass.getuser()
  if args.nopassword:
    password = ""
  else:
    password = getpass.getpass()
  runtime.set_user(user, password)

  try:
    testmodule = utils.load_module(args.testfile)
    ztestsuites = [getattr(testmodule, attr)
               for attr in dir(testmodule)
               if isinstance(getattr(testmodule, attr), ZTestSuite)]
    if len(ztestsuites) > 0: #TODO(jehrlich) intelligently handle multiple test suites
      test_runner = TestRunner(ztestsuite=ztestsuites[0], testlist=args.test_list, config_overrides=config_overrides)
    else:
      test_runner = TestRunner(args.testfile, args.test_list, config_overrides)
  except BaseException as e:
    print("Error setting up testrunner:\n%s" % traceback.format_exc())
    raise ValueError(e.message)

  test_runner.run()

  logger.info("Exiting zopkio")
  return test_runner.success_count(), test_runner.fail_count()
Пример #4
0
def setup_suite():
    # Set up authentication
    username = runtime.get_active_config("username")
    password = runtime.get_active_config("password")
    runtime.set_user(username, password)

    # Set up the target directories and properties
    userdir = os.path.join("/home", username)
    riaps_app_path = os.path.join(userdir,
                                  runtime.get_active_config("riaps_apps_path"))
    test_app_path = os.path.join(riaps_app_path,
                                 runtime.get_active_config('app_dir'))

    start_actor_path = "/opt/riaps/armhf/bin/"

    env = {
        "PATH": "/usr/local/bin/:" + start_actor_path + ":$PATH",
        "RIAPSHOME": "/usr/local/riaps",
        "RIAPSAPPS": "$HOME/riaps_apps",
        "LD_LIBRARY_PATH": "/opt/riaps/armhf/lib:" + test_app_path
    }

    #start_riaps_lang = "riaps_lang " + runtime.get_active_config('model_file')

    # Set up the sources
    model_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                              runtime.get_active_config('app_dir'),
                              runtime.get_active_config('model_file'))

    # Script to check discovery service
    discoCheckScript = "checkDiscoveryService.py"
    discoCheckScriptPath = "../../test_common"

    # Script to start the discovery
    discoStartScript = "startDiscovery.py"
    discoStartScriptPath = "../../test_common"

    # Script to stop the discovery
    discoStopScript = "stopDiscovery.py"
    discoStopScriptPath = "../../test_common"

    killRiapsScript = "killRiaps.py"
    killRiapsScriptPath = "../../test_common"

    # Deploy the riaps killer script
    for target in runtime.get_active_config('targets'):
        deployerId = "killer_" + target["host"]
        killscriptpath = os.path.abspath(
            os.path.join(os.path.dirname(os.path.abspath(__file__)),
                         killRiapsScriptPath, killRiapsScript))

        killDeployer = adhoc_deployer.SSHDeployer(
            deployerId, {
                'executable':
                killscriptpath,
                'install_path':
                riaps_app_path,
                'env':
                env,
                'hostname':
                target["host"],
                "start_command":
                "python3 " + os.path.join(riaps_app_path, killRiapsScript)
            })
        runtime.set_deployer(deployerId, killDeployer)
        killDeployer.install(deployerId)

        # Deploy the discovery starter script
    for target in runtime.get_active_config('targets'):
        deployerId = "discostart_" + target["host"]
        startscriptpath = os.path.abspath(
            os.path.join(os.path.dirname(os.path.abspath(__file__)),
                         discoStartScriptPath, discoStartScript))

        startDiscoveryDeployer = adhoc_deployer.SSHDeployer(
            deployerId, {
                'executable':
                startscriptpath,
                'install_path':
                riaps_app_path,
                'env':
                env,
                'hostname':
                target["host"],
                "start_command":
                "python3 " + os.path.join(riaps_app_path, discoStartScript)
            })
        runtime.set_deployer(deployerId, startDiscoveryDeployer)
        startDiscoveryDeployer.install(deployerId)

        # Deploy the discovery stop script
    for target in runtime.get_active_config('targets'):
        deployerId = "discostop_" + target["host"]
        stopscriptpath = os.path.abspath(
            os.path.join(os.path.dirname(os.path.abspath(__file__)),
                         discoStopScriptPath, discoStopScript))

        stopDiscoveryDeployer = adhoc_deployer.SSHDeployer(
            deployerId, {
                'executable':
                stopscriptpath,
                'install_path':
                riaps_app_path,
                'env':
                env,
                'hostname':
                target["host"],
                "start_command":
                "python3 " + os.path.join(riaps_app_path, discoStopScript)
            })
        runtime.set_deployer(deployerId, stopDiscoveryDeployer)
        stopDiscoveryDeployer.install(deployerId)

    # Deploy the riaps-disco checker script
    for target in runtime.get_active_config('targets'):
        deployerId = "disco" + target["host"]
        checkscriptpath = os.path.abspath(
            os.path.join(os.path.dirname(os.path.abspath(__file__)),
                         discoCheckScriptPath, discoCheckScript))

        checkDiscoDeployer = adhoc_deployer.SSHDeployer(
            deployerId, {
                'executable':
                checkscriptpath,
                'install_path':
                riaps_app_path,
                'env':
                env,
                'hostname':
                target["host"],
                "start_command":
                "python3 " +
                os.path.join(riaps_app_path, "checkDiscoveryService.py")
            })
        runtime.set_deployer(deployerId, checkDiscoDeployer)
        checkDiscoDeployer.install(deployerId)

    # Deploy the riaps-components/model file
    local_riaps_lang = "riaps_lang " + model_path
    local_test_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                  runtime.get_active_config('app_dir'))

    subprocess.call(local_riaps_lang, shell=True)

    move_cmd = "mv " + runtime.get_active_config(
        'app_dir') + '.json ' + local_test_dir
    subprocess.call(move_cmd, shell=True)

    local_model_json = os.path.join(
        local_test_dir,
        runtime.get_active_config('app_dir') + '.json')

    for target in runtime.get_active_config('targets'):
        model_deployer = adhoc_deployer.SSHDeployer(
            target["actor"],
            {
                'executable': local_model_json,
                'install_path': test_app_path,
                'hostname': target["host"],
                #'start_command': os.path.join(start_actor_path, "start_actor"),
                'start_command': "start_actor",

                #'args': [os.path.join(test_app_path, runtime.get_active_config('app_dir') + '.json'),
                #         target["actor"]],
                'env': env
                #'terminate_only': False,
                #'pid_keyword': model_path,
            })
        runtime.set_deployer(target["actor"], model_deployer)

        # Add test cases
        testcases = [
            "pubfirst_" + target["actor"], "subfirst_" + target["actor"]
        ]

        for testcase in testcases:
            model_deployer.install(
                testcase, {
                    'args': [
                        os.path.join(
                            test_app_path,
                            runtime.get_active_config('app_dir') + '.json'),
                        target["actor"], '--logfile="' + testcase + '.log"'
                    ]
                })

        for component in runtime.get_active_config('components_so'):
            localPath = os.path.join(
                os.path.dirname(os.path.abspath(__file__)),
                runtime.get_active_config('app_dir'), component)
            #localPath = os.path.join(os.path.dirname(os.path.abspath(__file__)),
            #                         runtime.get_active_config('app_dir'),
            #                         "lib",
            #                         component)

            #targetPath = target_path#os.path.join(riaps_app_path, runtime.get_active_config('app_dir'))
            component_deployer = adhoc_deployer.SSHDeployer(
                component,
                {
                    'executable': localPath,
                    'install_path': test_app_path,
                    'hostname': target["host"],
                    #'start_command': "start_actor",  #os.path.join(target_path, "start_actor"),
                    #'args': [runtime.get_active_config('app_dir'),
                    #         runtime.get_active_config('app_dir') + '.json',
                    #         target["actor"]],
                    'env': env,
                    #'terminate_only': True,
                    #'pid_keyword': component,
                })
            runtime.set_deployer(component, component_deployer)
            component_deployer.install(component)

    print("Deployment done.")
Пример #5
0
def main():
  """
  Parse command line arguments and then run the test suite
  """
  parser = argparse.ArgumentParser(description='A distributed test framework')
  parser.add_argument('testfile',
      help='The file that is used to determine the test suite run')
  parser.add_argument('--test-only',
      nargs='*',
      dest='test_list',
      help='run only the named tests to help debug broken tests')
  parser.add_argument('--machine-list',
      nargs='*',
      dest='machine_list',
      help='''mapping of logical host names to physical names allowing the same
              test suite to run on different hardware, each argument is a pair
              of logical name and physical name separated by a =''')
  parser.add_argument('--config-overrides',
      nargs='*',
      dest='config_overrides',
      help='''config overrides at execution time, each argument is a config with
              its value separated by a =. This has the highest priority of all
              configs''')
  parser.add_argument('-d', '--output-dir',
      dest='output_dir',
      help='''Directory to write output files and logs. Defaults to the current
              directory.''')
  parser.add_argument("--log-level", dest="log_level", help="Log level (default INFO)", default="INFO")
  parser.add_argument("--console-log-level", dest="console_level", help="Console Log level (default ERROR)",
                      default="ERROR")
  parser.add_argument("--nopassword", action='store_true', dest="nopassword", help="Disable password prompt")
  parser.add_argument("--user", dest="user", help="user to run the test as (defaults to current user)")
  args = parser.parse_args()

  # Get output directory.
  try:
    if args.output_dir is not None:
      runtime.set_output_dir(args.output_dir)
  except ValueError as e:
    print str(e)
    sys.exit(1)

  # Set up logging.
  setup_logging(runtime.get_output_dir(), args.log_level, args.console_level)
  logger = logging.getLogger("zopkio")
  logger.info("Starting zopkio")

  try:
    utils.check_file_with_exception(args.testfile)
    utils.check_testfile_dir_structure(args.testfile)
    machines = utils.make_machine_mapping(args.machine_list)
    config_overrides = utils.parse_config_list(args.config_overrides)
  except ValueError as e:
    logger.error(str(e))
    print("Error in processing command line arguments:\n {0}".format(traceback.format_exc()))
    sys.exit(1)

  runtime.set_machines(machines)
  if args.user is not None:
    user = args.user
  else:
    user = getpass.getuser()
  if args.nopassword:
    password = ""
  else:
    password = getpass.getpass()
  runtime.set_user(user, password)

  try:
    testmodule = utils.load_module(args.testfile)
    ztestsuites = [getattr(testmodule, attr)
               for attr in dir(testmodule)
               if isinstance(getattr(testmodule, attr), ZTestSuite)]
    if len(ztestsuites) > 0: #TODO(jehrlich) intelligently handle multiple test suites
      test_runner = TestRunner(ztestsuite=ztestsuites[0], testlist=args.test_list, config_overrides=config_overrides)
    else:
      test_runner = TestRunner(args.testfile, args.test_list, config_overrides)
  except BaseException as e:
    print("Error setting up testrunner:\n%s" % traceback.format_exc())
    sys.exit(1)

  test_runner.run()

  logger.info("Exiting zopkio")
Пример #6
0
def main():
    """
  Parse command line arguments and then run the test suite
  """
    parser = argparse.ArgumentParser(
        description='A distributed test framework')
    parser.add_argument(
        'testfile',
        help='The file that is used to determine the test suite run')
    parser.add_argument(
        '--test-only',
        nargs='*',
        dest='test_list',
        help='run only the named tests to help debug broken tests')
    parser.add_argument(
        '--machine-list',
        nargs='*',
        dest='machine_list',
        help='''mapping of logical host names to physical names allowing the same
              test suite to run on different hardware, each argument is a pair
              of logical name and physical name separated by a =''')
    parser.add_argument(
        '--config-overrides',
        nargs='*',
        dest='config_overrides',
        help=
        '''config overrides at execution time, each argument is a config with
              its value separated by a =. This has the highest priority of all
              configs''')
    parser.add_argument(
        '-d',
        '--output-dir',
        dest='output_dir',
        help='''Directory to write output files and logs. Defaults to the current
              directory.''')
    parser.add_argument("--log-level",
                        dest="log_level",
                        help="Log level (default INFO)",
                        default="INFO")
    parser.add_argument("--console-log-level",
                        dest="console_level",
                        help="Console Log level (default ERROR)",
                        default="ERROR")
    parser.add_argument("--nopassword",
                        action='store_true',
                        dest="nopassword",
                        help="Disable password prompt")
    args = parser.parse_args()

    # Get output directory.
    try:
        if args.output_dir is not None:
            runtime.set_output_dir(args.output_dir)
    except ValueError as e:
        print str(e)
        sys.exit(1)

    # Set up logging.
    runtime.set_init_time(time.time())
    setup_logging(runtime.get_output_dir(), args.log_level, args.console_level)
    logger = logging.getLogger("zopkio")
    logger.info("Starting zopkio")

    try:
        utils.check_file_with_exception(args.testfile)
        machines = utils.make_machine_mapping(args.machine_list)
        config_overrides = utils.parse_config_list(args.config_overrides)
    except ValueError as e:
        print("Error in processing command line arguments:\n %s".format(
            traceback.format_exc()))
        sys.exit(1)

    runtime.set_machines(machines)
    user = getpass.getuser()
    if args.nopassword:
        password = ""
    else:
        password = getpass.getpass()
    runtime.set_user(user, password)

    try:
        test_runner = TestRunner(args.testfile, args.test_list,
                                 config_overrides)
    except BaseException as e:
        print("Error setting up testrunner:\n%s" % traceback.format_exc())
        sys.exit(1)

    test_runner.run()

    logger.info("Exiting zopkio")
Пример #7
0
def main():
  """
  Parse command line arguments and then run the test suite
  """
  parser = argparse.ArgumentParser(description='A distributed test framework')
  parser.add_argument('testfile',
      help='The file that is used to determine the test suite run')
  parser.add_argument('--test-only',
      nargs='*',
      dest='test_list',
      help='run only the named tests to help debug broken tests')
  parser.add_argument('--machine-list',
      nargs='*',
      dest='machine_list',
      help='''mapping of logical host names to physical names allowing the same
              test suite to run on different hardware, each argument is a pair
              of logical name and physical name separated by a =''')
  parser.add_argument('--config-overrides',
      nargs='*',
      dest='config_overrides',
      help='''config overrides at execution time, each argument is a config with
              its value separated by a =. This has the highest priority of all
              configs''')
  parser.add_argument('-d', '--output-dir',
      dest='output_dir',
      help='''Directory to write output files and logs. Defaults to the current
              directory.''')
  args = parser.parse_args()

  # Get output directory.
  try:
    if args.output_dir is not None:
      runtime.set_output_dir(args.output_dir)
  except ValueError as e:
    print str(e)
    sys.exit(1)

  # Set up logging.
  runtime.set_init_time(time.time())
  setup_logging(runtime.get_output_dir())
  logger = logging.getLogger("zopkio")
  logger.info("Starting zopkio")

  try:
    utils.check_file_with_exception(args.testfile)
    machines = utils.make_machine_mapping(args.machine_list)
    config_overrides = utils.parse_config_list(args.config_overrides)
  except ValueError as e:
    print("Error in processing command line arguments:\n %s" %
          traceback.format_exc())
    sys.exit(1)

  runtime.set_machines(machines)
  user = getpass.getuser()
  password = getpass.getpass()
  runtime.set_user(user, password)

  try:
    test_runner = TestRunner(args.testfile, args.test_list, config_overrides)
  except BaseException as e:
    print("Error setting up testrunner:\n%s" % traceback.format_exc())
    sys.exit(1)

  test_runner.run()

  logger.info("Exiting zopkio")
Пример #8
0
def main():
    """
  Parse command line arguments and then run the test suite
  """
    parser = argparse.ArgumentParser(
        description='A distributed test framework')
    parser.add_argument(
        'testfile',
        help='The file that is used to determine the test suite run')
    parser.add_argument(
        '--test-only',
        nargs='*',
        dest='test_list',
        help='run only the named tests to help debug broken tests')
    parser.add_argument(
        '--machine-list',
        nargs='*',
        dest='machine_list',
        help='''mapping of logical host names to physical names allowing the same
              test suite to run on different hardware, each argument is a pair
              of logical name and physical name separated by a =''')
    parser.add_argument(
        '--config-overrides',
        nargs='*',
        dest='config_overrides',
        help=
        '''config overrides at execution time, each argument is a config with
              its value separated by a =. This has the highest priority of all
              configs''')
    parser.add_argument(
        '-d',
        '--output-dir',
        dest='output_dir',
        help='''Directory to write output files and logs. Defaults to the current
              directory.''')
    parser.add_argument("--log-level",
                        dest="log_level",
                        help="Log level (default INFO)",
                        default="INFO")
    parser.add_argument("--console-log-level",
                        dest="console_level",
                        help="Console Log level (default ERROR)",
                        default="ERROR")
    parser.add_argument("--nopassword",
                        action='store_true',
                        dest="nopassword",
                        help="Disable password prompt")
    parser.add_argument(
        "--user",
        dest="user",
        help="user to run the test as (defaults to current user)")
    parser.add_argument(
        "--reporter",
        dest="reporter",
        help="reporter type that will be use to generate report)")
    args = parser.parse_args()

    # Get output directory.
    try:
        if args.output_dir is not None:
            runtime.set_output_dir(args.output_dir)
    except ValueError as e:
        print str(e)
        sys.exit(1)

    # Set up logging.
    setup_logging(runtime.get_output_dir(), args.log_level, args.console_level)
    logger = logging.getLogger("zopkio")
    logger.info("Starting zopkio")

    try:
        utils.check_file_with_exception(args.testfile)
        utils.check_testfile_dir_structure(args.testfile)
        machines = utils.make_machine_mapping(args.machine_list)
        config_overrides = utils.parse_config_list(args.config_overrides)
    except ValueError as e:
        logger.error(str(e))
        print("Error in processing command line arguments:\n {0}".format(
            traceback.format_exc()))
        sys.exit(1)

    runtime.set_machines(machines)
    if args.user is not None:
        user = args.user
    else:
        user = getpass.getuser()
    if args.nopassword:
        password = ""
    else:
        password = getpass.getpass()
    runtime.set_user(user, password)

    try:
        testmodule = utils.load_module(args.testfile)
        ztestsuites = [
            getattr(testmodule, attr) for attr in dir(testmodule)
            if isinstance(getattr(testmodule, attr), ZTestSuite)
        ]
        # reporter_type = runtime.get_active_config('zopkio_reporter')
        reporter_type = None
        if args.reporter is not None:
            reporter_type = args.reporter
        if len(
                ztestsuites
        ) > 0:  #TODO(jehrlich) intelligently handle multiple test suites
            test_runner = TestRunner(ztestsuite=ztestsuites[0],
                                     testlist=args.test_list,
                                     config_overrides=config_overrides,
                                     reporter_type=reporter_type)
        else:
            test_runner = TestRunner(args.testfile,
                                     args.test_list,
                                     config_overrides,
                                     reporter_type=reporter_type)

    except BaseException as e:
        print("Error setting up testrunner:\n%s" % traceback.format_exc())
        sys.exit(1)
    print "CONFIG_OVERRIDE: %s" % (config_overrides, )
    test_runner.run()

    logger.info("Exiting zopkio")