Beispiel #1
0
    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
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #8
0
    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()
Beispiel #9
0
 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
Beispiel #10
0
    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
Beispiel #11
0
 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)
Beispiel #12
0
            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",