Exemplo n.º 1
0
def create_workload(name,
                    kind='basic',
                    where='local',
                    check_name=True,
                    **kwargs):
    if check_name:
        extloader = ExtensionLoader(packages=settings.extension_packages,
                                    paths=settings.extension_paths)
        if name in [wl.name for wl in extloader.list_workloads()]:
            raise CommandError(
                'Workload with name "{}" already exists.'.format(name))

    class_name = get_class_name(name)
    if where == 'local':
        workload_dir = _d(
            os.path.join(settings.environment_root, 'workloads', name))
    else:
        workload_dir = _d(os.path.join(where, name))

    if kind == 'basic':
        create_basic_workload(workload_dir, name, class_name, **kwargs)
    elif kind == 'uiauto':
        create_uiautomator_workload(workload_dir, name, class_name, **kwargs)
    elif kind == 'android':
        create_android_benchmark(workload_dir, name, class_name, **kwargs)
    elif kind == 'android_uiauto':
        create_android_uiauto_benchmark(workload_dir, name, class_name,
                                        **kwargs)
    else:
        raise CommandError('Unknown workload type: {}'.format(kind))

    print 'Workload created in {}'.format(workload_dir)
Exemplo n.º 2
0
def get_sdk_path():
    sdk_path = os.getenv('ANDROID_HOME')
    if not sdk_path:
        raise CommandError(
            'Please set ANDROID_HOME environment variable to point to ' +
            'the locaton of Android SDK')
    return sdk_path
Exemplo n.º 3
0
 def execute(self, args):
     for subcmd in self.subcommands:
         if subcmd.name == args.what:
             subcmd.execute(args)
             break
     else:
         raise CommandError('Not a valid create parameter: {}'.format(args.name))
Exemplo n.º 4
0
def create_uiauto_project(path, name, target='1'):
    sdk_path = get_sdk_path()
    android_path = os.path.join(sdk_path, 'tools', 'android')
    package_name = 'com.arm.wlauto.uiauto.' + name.lower()

    # ${ANDROID_HOME}/tools/android create uitest-project -n com.arm.wlauto.uiauto.linpack -t 1 -p ../test2
    command = '{} create uitest-project --name {} --target {} --path {}'.format(android_path,
                                                                                package_name,
                                                                                target,
                                                                                path)
    try:
        check_output(command, shell=True)
    except subprocess.CalledProcessError as e:
        if 'is is not valid' in e.output:
            message = 'No Android SDK target found; have you run "{} update sdk" and download a platform?'
            raise CommandError(message.format(android_path))

    build_script = os.path.join(path, 'build.sh')
    with open(build_script, 'w') as wfh:
        template = string.Template(UIAUTO_BUILD_SCRIPT)
        wfh.write(template.substitute({'package_name': package_name}))
    os.chmod(build_script, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)

    source_file = _f(os.path.join(path, 'src',
                                  os.sep.join(package_name.split('.')[:-1]),
                                  'UiAutomation.java'))
    with open(source_file, 'w') as wfh:
        wfh.write(render_template('UiAutomation.java', {'name': name, 'package_name': package_name}))
Exemplo n.º 5
0
 def create_extensions_package(self, location, name, setup_template_path, overwrite=False):
     package_path = os.path.join(location, name)
     if os.path.exists(package_path):
         if overwrite:
             self.logger.info('overwriting existing "{}"'.format(package_path))
             shutil.rmtree(package_path)
         else:
             raise CommandError('Location "{}" already exists.'.format(package_path))
     actual_package_path = os.path.join(package_path, name)
     os.makedirs(actual_package_path)
     setup_text = render_template(setup_template_path, {'package_name': name, 'user': getpass.getuser()})
     with open(os.path.join(package_path, 'setup.py'), 'w') as wfh:
         wfh.write(setup_text)
     touch(os.path.join(actual_package_path, '__init__.py'))