def create_workload(name, kind='basic', where='local', check_name=True, **kwargs): if check_name: if name in [wl.name for wl in pluginloader.list_plugins('workload')]: 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.plugins_directory, name)) else: workload_dir = _d(os.path.join(where, name)) try: # Note: `create_funcs` mapping is listed below create_funcs[kind](workload_dir, name, kind, class_name, **kwargs) except KeyError: raise CommandError('Unknown workload type: {}'.format(kind)) # pylint: disable=superfluous-parens print('Workload created in {}'.format(workload_dir))
def setup(self, context): before_dirs = [ _d(os.path.join(context.output_directory, 'before', self._local_dir(d))) for d in self.paths ] after_dirs = [ _d(os.path.join(context.output_directory, 'after', self._local_dir(d))) for d in self.paths ] diff_dirs = [ _d(os.path.join(context.output_directory, 'diff', self._local_dir(d))) for d in self.paths ] self.device_and_host_paths = list(zip(self.paths, before_dirs, after_dirs, diff_dirs)) if self.use_tmpfs: for d in self.paths: before_dir = self.target.path.join(self.on_device_before, self.target.path.dirname(as_relative(d))) after_dir = self.target.path.join(self.on_device_after, self.target.path.dirname(as_relative(d))) if self.target.file_exists(before_dir): self.target.execute('rm -rf {}'.format(before_dir), as_root=True) self.target.execute('mkdir -p {}'.format(before_dir), as_root=True) if self.target.file_exists(after_dir): self.target.execute('rm -rf {}'.format(after_dir), as_root=True) self.target.execute('mkdir -p {}'.format(after_dir), as_root=True)
def create_uiauto_project(path, name): package_name = 'com.arm.wa.uiauto.' + name.lower() copy_tree(os.path.join(TEMPLATES_DIR, 'uiauto', 'uiauto_workload_template'), path) manifest_path = os.path.join(path, 'app', 'src', 'main') mainifest = os.path.join(_d(manifest_path), 'AndroidManifest.xml') with open(mainifest, 'w') as wfh: wfh.write(render_template(os.path.join('uiauto', 'uiauto_AndroidManifest.xml'), {'package_name': package_name})) build_gradle_path = os.path.join(path, 'app') build_gradle = os.path.join(_d(build_gradle_path), 'build.gradle') with open(build_gradle, 'w') as wfh: wfh.write(render_template(os.path.join('uiauto', 'uiauto_build.gradle'), {'package_name': package_name})) build_script = os.path.join(path, 'build.sh') with open(build_script, 'w') as wfh: wfh.write(render_template(os.path.join('uiauto', 'uiauto_build_script'), {'package_name': package_name})) os.chmod(build_script, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) source_file = _f(os.path.join(path, 'app', 'src', 'main', 'java', os.sep.join(package_name.split('.')[:-1]), 'UiAutomation.java')) with open(source_file, 'w') as wfh: wfh.write(render_template(os.path.join('uiauto', 'UiAutomation.java'), {'name': name, 'package_name': package_name}))
def create_workload(name, kind='basic', where='local', check_name=True, **kwargs): if check_name: if name in [wl.name for wl in pluginloader.list_plugins('workload')]: 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.plugins_directory, name)) else: workload_dir = _d(os.path.join(where, name)) try: # Note: `create_funcs` mapping is listed below create_funcs[kind](workload_dir, name, kind, class_name, **kwargs) except KeyError: raise CommandError('Unknown workload type: {}'.format(kind)) # pylint: disable=superfluous-parens print('Workload created in {}'.format(workload_dir))
def create_uiauto_project(path, name): package_name = 'com.arm.wa.uiauto.' + name.lower() copy_tree( os.path.join(TEMPLATES_DIR, 'uiauto', 'uiauto_workload_template'), path) manifest_path = os.path.join(path, 'app', 'src', 'main') mainifest = os.path.join(_d(manifest_path), 'AndroidManifest.xml') with open(mainifest, 'w') as wfh: wfh.write( render_template( os.path.join('uiauto', 'uiauto_AndroidManifest.xml'), {'package_name': package_name})) build_gradle_path = os.path.join(path, 'app') build_gradle = os.path.join(_d(build_gradle_path), 'build.gradle') with open(build_gradle, 'w') as wfh: wfh.write( render_template(os.path.join('uiauto', 'uiauto_build.gradle'), {'package_name': package_name})) build_script = os.path.join(path, 'build.sh') with open(build_script, 'w') as wfh: wfh.write( render_template(os.path.join('uiauto', 'uiauto_build_script'), {'package_name': package_name})) os.chmod(build_script, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) source_file = _f( os.path.join(path, 'app', 'src', 'main', 'java', os.sep.join(package_name.split('.')[:-1]), 'UiAutomation.java')) with open(source_file, 'w') as wfh: wfh.write( render_template(os.path.join('uiauto', 'UiAutomation.java'), { 'name': name, 'package_name': package_name }))
def try_get_resource(self, resource, remote_path, local_path): if not self.always_fetch: result = get_from_location(local_path, resource) if result: return result if not os.path.exists(local_path): return None if os.path.exists(remote_path): # Didn't find it cached locally; now check the remoted result = get_from_location(remote_path, resource) if not result: return result else: # remote path is not set return None # Found it remotely, cache locally, then return it local_full_path = os.path.join(_d(local_path), os.path.basename(result)) self.logger.debug('cp {} {}'.format(result, local_full_path)) shutil.copy(result, local_full_path) return result
def get(self, resource): basepath = settings.dependencies_directory directory = _d(os.path.join(basepath, resource.owner.name)) return get_from_location(directory, resource)
def dependencies_directory(self): return _d(os.path.join(settings.dependencies_directory, self.name))