def getMem(serialno, package): ''' @description details view: http://my.oschina.net/goskyblue/blog/296798 @param package(string): android package name @return dict: {'VSS', 'RSS', 'PSS'} (unit KB) ''' command = 'adb -s %s shell ps' %(serialno) output = base.check_output(command) ret = {} for line in str(output).splitlines(): if line and line.split()[-1] == package: # USER PID PPID VSIZE RSS WCHAN PC NAME values = line.split() if values[3].isdigit() and values[4].isdigit(): ret.update(dict(VSS=int(values[3]), RSS=int(values[4]))) else: ret.update(dict(VSS=-1, RSS=-1)) break else: log.error("mem get: adb shell ps error") return {} psscmd = 'adb -s %s shell dumpsys meminfo %s' %(serialno, package) memout = base.check_output(psscmd) pss = 0 result = re.search(r'\(Pss\):(\s+\d+)+', memout, re.M) if result: pss = result.group(1) else: result = re.search(r'TOTAL\s+(\d+)', memout, re.M) if result: pss = result.group(1) ret.update(dict(PSS=int(pss))) return ret
def _get_cpuinfo(serialno, package): ''' @param package(string): android package name @return float: the cpu usage ''' command = 'adb -s %s shell dumpsys cpuinfo' % serialno cpu_info = base.check_output(command).splitlines() try: xym_cpu = filter(lambda x: package in x, cpu_info)[0].split()[0] cpu = float(xym_cpu[:-1]) return cpu except IndexError: log.error("cpu_info error") return 0
def getCpu(serialno, package): ''' @param package(string): android package name @return float: the cpu usage ''' command = 'adb -s %s shell dumpsys cpuinfo' % serialno cpu_info = base.check_output(command).splitlines() try: xym_cpu = filter(lambda x: package in x, cpu_info)[0].split()[0] cpu = float(xym_cpu[:-1]) log.info("cpu_info:%s" % cpu) return cpu except IndexError: log.error("cpu_info error") return 0
def getMem(serialno, package): ''' @param package(string): android package name @return float: the memory, unit MB ''' command = 'adb -s %s shell dumpsys meminfo' % serialno mem_info = base.check_output(command).splitlines() try: xym_mem = filter(lambda x: package in x, mem_info)[0].split()[0] mem = float(xym_mem) / 1024 log.info("mem_info:%s" % mem) return mem except IndexError: log.error("mem_info error") return 0
def test_check_output(): output = base.check_output('echo hello') assert output.rstrip() == 'hello'