def __init__(self, device_id=None, package=None, interval=None): RuntimeData.top_dir = os.getcwd() if "android" in RuntimeData.top_dir: RuntimeData.top_dir = FileUtils.get_top_dir() logger.debug("RuntimeData.top_dir:" + RuntimeData.top_dir) self.config_dic = self.parse_data_from_config() RuntimeData.config_dic = self.config_dic self.serialnum = device_id if device_id != None else self.config_dic[ 'serialnum'] #代码中重新传入device_id 则会覆盖原来配置文件config.conf的值,主要为了debug方便 self.packages = package if package != None else self.config_dic[ 'package'] #代码中重新传入package 则会覆盖原来配置文件config.conf的值,为了debug方便 self.frequency = interval if interval != None else self.config_dic[ 'frequency'] #代码中重新传入interval 则会覆盖原来配置文件config.conf的值,为了debug方便 self.timeout = self.config_dic['timeout'] self.exceptionlog_list = self.config_dic["exceptionlog"] self.device = AndroidDevice(self.serialnum) # 如果config文件中 packagename为空,就获取前台进程,匹配图兰朵,测的app太多,支持配置文件不传package if not self.packages: # 进程名不会有#,转化为list self.packages = self.device.adb.get_foreground_process().split("#") RuntimeData.packages = self.packages #与终端交互有关 self.keycode = '' self.pid = 0 self._init_queue() self.monitors = [] self.logcat_monitor = None
def __init__(self, device_id, packages, interval = 1.0, timeout=24 * 60 * 60, mem_queue = None): self.device = AndroidDevice(device_id, ) if not packages: packages = self.device.adb.get_foreground_process().split("#") self.packages = packages # self.meminfo_collector = MemInfoCollector(self.device, interval) self.meminfo_package_collector = MemInfoPackageCollector(self.device, self.packages, interval, timeout, mem_queue)
def __init__(self, device_id, package_name=None, frequency=1.0, timeout=24 * 60 * 60, fps_queue=None, jank_threshold=166, use_legacy=False): '''构造器 :param str device_id: 设备id :param float frequency: 帧率统计频率,默认1秒 :param int jank_threshold: 计算jank值的阈值,单位毫秒,默认10个时钟周期,166ms :param bool use_legacy: 当指定该参数为True时总是使用page_flip统计帧率,此时反映的是全屏内容的刷新帧率。 当不指定该参数时,对4.1以上的系统将统计当前获得焦点的Activity的刷新帧率 ''' self.use_legacy = use_legacy self.frequency = frequency # 取样频率 self.jank_threshold = jank_threshold self.device = AndroidDevice(device_id) self.timeout = timeout if not package_name: package_name = self.device.adb.get_foreground_process() self.package = package_name self.fpscollector = SurfaceStatsCollector(self.device, self.frequency, package_name, fps_queue, self.jank_threshold, self.use_legacy)
def __init__(self, device_id, interval=1.0, timeout=24 * 60 * 60, power_queue=None): self.device = AndroidDevice(device_id) self.power_collector = PowerCollector(self.device, interval, timeout, power_queue)
def __init__(self, device_id, packagename, interval=1.0, timeout=24 * 60 * 60, thread_queue=None): self.device = AndroidDevice(device_id) if not packagename: packagename = self.device.adb.get_foreground_process() self.thread_package_collector = ThreadNumPackageCollector( self.device, packagename, interval, timeout, thread_queue)
def __init__(self, device_id, packages, interval=1.0, timeout=24 * 60 * 60, cpu_queue=None): self.device = AndroidDevice(device_id) if not packages: packages = self.device.adb.get_foreground_process().split("#") self.cpu_collector = CpuCollector(self.device, packages, interval, timeout, cpu_queue)
def __init__(self, device_id, packagename, interval=1.0, timeout=10 * 60, traffic_queue=None): self.device = AndroidDevice(device_id) self.stop_event = threading.Event() self.package = packagename self.traffic_colloctor = TrafficCollecor(self.device, packagename, interval, timeout, traffic_queue)
def __init__(self, device_id, package=None,timeout=1200000000): '''构造器 :param str device_id: 设备id :param str process : monkey测试的包名 :param timeout : monkey时长 单位 分钟 默认无穷大 ''' self.package = package self.device = AndroidDevice(device_id) # 设备 self.running = False # monkey监控器的启动状态(启动/结束) self.timeout = timeout self._stop_event = threading.Event()
def __init__(self, device_id, packagename, interval = 1.0,main_activity=[],activity_list=[],event=None,activity_queue = None): '''' :param list main_activity 指定模块的主入口 :param list activity_list : 限制默认范围的activity列表,默认为空,则不限制 ''' self.uninstall_flag = event self.device = AndroidDevice(device_id) self.packagename = packagename self.interval = interval self.main_activity = main_activity self.activity_list = activity_list self.stop_event = threading.Event() self.activity_queue = activity_queue self.current_activity = None
def __init__(self, device_id, package=None, **regx_config): '''构造器 :param str device_id: 设备id :param list package : 监控的进程列表,列表为空时,监控所有进程 :param dict regx_config : 日志匹配配置项{conf_id = regx},如:AutoMonitor=ur'AutoMonitor.*:(.*), cost=(\d+)' ''' super(LogcatMonitor, self).__init__(**regx_config) self.package = package # 监控的进程列表 self.device_id = device_id self.device = AndroidDevice(device_id) # 设备 self.running = False # logcat监控器的启动状态(启动/结束) self.launchtime = LaunchTime(self.device_id, self.package) self.exception_log_list = [] self.start_time = None self.append_log_line_num = 0 self.file_log_line_num = 0 self.log_file_create_time = None
def __init__(self, device_id, packages, interval=5, timeout=24 * 60 * 60): self.device = AndroidDevice(device_id) self.packages = packages self.cpu_collector = CpuCollector(self.device, packages, interval, timeout)
except: logger.error("an exception hanpend in monkey thread, reason unkown!") s = traceback.format_exc() logger.debug(s) def save(self, save_file_path, loglist): monkey_file = os.path.join(save_file_path) with open(monkey_file, 'a+', encoding="utf-8") as log_f: for log in loglist: log_f.write(log + "\n") if __name__ == "__main__": test_pacakge_list = ["com.alibaba.ailabs.genie.musicplayer","com.alibaba.ailabs.genie.contacts","com.alibaba.ailabs.genie.launcher", "com.alibaba.ailabs.genie.shopping","com.youku.iot"] device = AndroidDevice() # device.adb.kill_process("monkey") # for i in range(0, 10): # for package in test_pacakge_list: # monkey = Monkey("",package,1200000000) # monkey.start(TimeUtils.getCurrentTimeUnderline()) # time.sleep(60*60*2) # monkey.stop() start_time = TimeUtils.getCurrentTimeUnderline() logger.debug(start_time) RuntimeData.top_dir = FileUtils.get_top_dir() RuntimeData.package_save_path = os.path.join(RuntimeData.top_dir, 'results', "com.alibaba.ailabs.genie.contacts", start_time) main_activity = ["com.alibaba.ailabs.genie.contacts.MainActivity"] activity_list = ["com.alibaba.ailabs.genie.contacts.MainActivity", "com.alibaba.ailabs.genie.contacts.cmd.CmdDispatchActivity", "com.alibaba.ailabs.genie.contacts.cmd.transform.VoipToPstnActivity",