Path: blob/master/AndroidRunner/NativeExperiment.py
629 views
import os.path as op1import time23from . import Tests4from .Experiment import Experiment5from .util import ConfigError678class NativeExperiment(Experiment):9def __init__(self, config, progress, restart):10self.package = None11self.duration = Tests.is_integer(config.get('duration', 0)) / 100012super(NativeExperiment, self).__init__(config, progress, restart)13self.pre_installed_apps = config.get('apps', [])14for apk in config.get('paths', []):15if not op.isfile(apk):16raise ConfigError('File %s not found' % apk)1718def cleanup(self, device):19super(NativeExperiment, self).cleanup(device)20if self.package in device.get_app_list() and self.package not in self.pre_installed_apps:21device.uninstall(self.package)2223def before_experiment(self, device, *args, **kwargs):24super(NativeExperiment, self).before_experiment(device)2526def before_run_subject(self, device, path, *args, **kwargs):27super(NativeExperiment, self).before_run_subject(device, path)28if path in self.pre_installed_apps:29self.package = path30else:31filename = op.basename(path)32self.logger.info('APK: %s' % filename)33if filename not in device.get_app_list():34device.install(path)35self.package = op.splitext(op.basename(path))[0]363738def before_run(self, device, path, run, *args, **kwargs):39super(NativeExperiment, self).before_run(device, path, run)40device.configure_settings_device(self.package, enable=True)41device.launch_package(self.package)42time.sleep(1)43self.after_launch(device, path, run)4445def start_profiling(self, device, path, run, *args, **kwargs):46self.profilers.start_profiling(device, app=self.package)4748def interaction(self, device, path, run, *args, **kwargs):49super(NativeExperiment, self).interaction(device, path, run, *args, **kwargs)50time.sleep(self.duration)5152def after_run(self, device, path, run, *args, **kwargs):53self.before_close(device, path, run)54device.force_stop(self.package)55if self.clear_cache == True:56device.clear_app_data(self.package)57device.configure_settings_device(self.package, enable=False)58time.sleep(3)59super(NativeExperiment, self).after_run(device, path, run)6061def after_last_run(self, device, path, *args, **kwargs):62super(NativeExperiment, self).after_last_run(device, path)63if self.package in device.get_app_list() and self.package not in self.pre_installed_apps:64device.uninstall(self.package)65self.package = None6667def after_experiment(self, device, *args, **kwargs):68super(NativeExperiment, self).after_experiment(device)697071