实时监控内存、CPU消耗工具
1.概述
通过工具,将能够根据需要监控CPU、内存状态。脚本默认每隔10s钟获取一次当前的cpu、内存状态并记录,设定的时间到了后,停止获取并开始分析数据,最后自动发出结果邮件。运行结果截图如下
2.使用介绍
2.1使用场景
在手工测试APP的时候,可同步监测系统、该app的性能
在做自动化测试的时候,可同步监测系统、指定的apps的性能
在做Monkey测试的时候,可同步监测系统、指定的apps的性能
2.2运行环境
2.2.1 .ubuntu系统,安装好python2.7、adb工具,pychart插件
2.2.2 手机需要支持top、procrank命令
2.3使用方法:
2.3.1根据需要修改systemMonitor.conf配置文件,配置项有:
[runTime]#脚步运行时长,以分钟为单位
rumTime=1
[updateTime]#刷新间隔,默认为10秒
updateTime=10
[packageNameList]#过滤进程名,多个进程以逗 分隔
packageNameList=com.android.email,com.android.providers.calendar,
[mailto_list]#收件人,以逗 分隔
mailto_list= ***@163.com
[mailInfo]#邮件服务器参数
mailserver=***
user=***
password=*********
me=guojianbiao@le.com
2.3.2运行脚本
python systemMonitor.py
3.实际代码
分为三个文件,下面将逐个展现。
3.1 systemMonitor.conf
[runTime]#运行时长,以分钟为单位
rumTime=10
[updateTime]#刷新间隔,默认为10秒
updateTime=10
[packageNameList]#过滤进程名,多个进程以逗 分隔
packageNameList=com.android.providers.calendar,
[mailto_list]#收件人,以逗 分隔
mailto_list=***@163.com
[mailInfo]#邮件服务器参数
mailserver=***
user=***
password=***
me=***@163.com
3.2 systemMonitor.py
#encoding:utf-8
import os
import sys
import datetime
from threading import Thread
import threading
import subprocess
import ConfigParser
from analysisInfo import *
from pychartdir import *
import smtplib
from email.mime.image import MIMEImage
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
import time
def getTime():
now = datetime.datetime.now()
return now.strftime(“%Y-%m-%d %H:%M:%S”)
def run_cmd(cmd):
process = subprocess.Popen(cmd , shell = True, stdout=subprocess.PIPE)
return process.stdout.read().strip()
def timestamp_datetime(value):
value = time.localtime(value)
dt = time.strftime(‘%Y-%m-%d %H:%M:%S’, value)
return dt
#获取设备型
def get_model():
return run_cmd(‘adb shell getprop ro.product.model’)
#获取Android版本
def get_androidVersion():
return run_cmd(‘adb shell getprop ro.build.version.release’)
#获取CPU型
def get_cpuInfo():
return run_cmd(‘adb shell getprop ro.product.cpu.abi’)
#获取系统编译版本增量
def get_buildVersionIncremental():
return run_cmd(‘adb shell getprop ro.build.version.incremental’)
#获取系统编译时间
def get_buildDate():
return run_cmd(‘adb shell getprop ro.build.date.utc’)
#生成表
#title:标题
#lable:
#ytitle
#data
#chartpath
#title_list
#style
def get_chart(title,label,ytitle,data,chartpath,title_list,style):
color_list = [0x008800,0xff0000,0x8A2BE2,0xA52A2A,0x7FFF00,0xFF7F50,0xDC143C,0x8B008B,0xFF1493,0xFFD700]
c = XYChart(1400, 600, 0xCCEEFF, 0x000000, 1)
c.addTitle(title, “simsun.ttc”, 18).setBackground(0xCCEEFF, 0x000000, glassEffect())
c.setPlotArea(50, 55, 1300, 500)
c.addLegend(50, 28, 0, “arialbd.ttf”, 10).setBackground(Transparent)
c.xAxis().setLabels(label)
c.yAxis().setTickDensity(30)
c.xAxis().setLabelStyle(“arialbd.ttf”, 8)
c.yAxis().setLabelStyle(“arialbd.ttf”, 8)
c.xAxis().setWidth(2)
c.yAxis().setWidth(2)
c.yAxis().setTitle(ytitle, “arialbd.ttf”, 10)
layer = c.addLineLayer2()
layer.setLineWidth(3)
#c.addText(1280, 70,”最大值:111n最小值:111″).setAlignment(BottomRight)
for i in range(0,len(data)):
layer.addDataSet(data[i], color_list[i],title_list[i]).setDataSymbol(CircleShape, 1)
#layer.setDataLabelStyle(“”,10)
#layer.setDataLabelFormat(None)
c.setDefaultFonts(“simsun.ttc”)
c.makeChart(chartpath)
#发送邮件
def send_mail_image(mailserver,user,password,me,mailto_list,title,bodyinfo,system_file_list,system_maxminavg,appInfo_list,app_file_list):
msg = MIMEMultipart(‘related’)
msg[‘Subject’]=title
msg[‘From’]=me
msg[‘To’]=’;’.join(mailto_list)
content = “”
content+=”<html>”
content+=”<head>”
content+=”<meta http-equiv=Content-Type content=”text/html;charset=gb2312″”>””
content+=””<style type=””text/css””>””
content+=””body {font-family:”””” + “”微软雅黑””.decode(‘UTF-8’).encode(‘GBK’) + “”””
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!