python软件测试方法_内存泄漏测试方法及其python实现

import bamboos_ssh

import re

import time

'''

本用例通过linux提供的ps和pmap命令监控Bamboo系统里指定进程的内存变化。

'''

##--------------全局参数设置--设置检测范围-------------------------------##

processList = ['./omu','/bin/ffe/vpp/vpp','l3stackMain','srvc','nse','ospfd','nettool_server',

'infoc','ffe_mgmt','usermgr','nat','dhcpd','ntpd','bgpd','sysrepod']

##++++++++++++++++++++++++++++++++++++++++++++++++++++##

def memMonitor(targetSystemIP,psName,repeatRounds,mytest):

rssList = []

privateList = []

##-----------------------------初始化工作------------------------------------- -##

dut1_ssh = bamboos_ssh.bamboos_ssh(targetSystemIP)

print('\n初始时完整获取ps信息,找到目标进程的进程号,获取该进程的pmap信息')

psAllInfo = dut1_ssh.exe_cmd( ['ps -aux'])

psID = getPsID(psName,psAllInfo)

psAllRssStart = getPsAllRss(processList,psAllInfo)

dut1_ssh.exe_cmd( ['pmap -d %s'%psID])

dut1_ssh.exe_cmd(['exit'])

##-----------------------------拷机过程-----------------------------------------##

##主循环多次执行测试员的拷机脚本,每次执行后获取rss内存和private内存信息

for i in range(0,repeatRounds+1):

try:

if 0 == i:

print('\n获取初始内存信息')

else:

print('\n第%d轮测试' % i)

mytest(dut1_ssh)

print('\n第%d次获取内存信息' % i)

rssMem = getRssMem(dut1_ssh,psID)

rssList.append(rssMem)

privateMem = getPrivateMem(dut1_ssh,psID)

privateList.append(int(privateMem))

dut1_ssh.exe_cmd(['exit'])

except BaseException as e:

print(e);print('第%d轮测试时异常终止了'%i);resultPrint(psName, rssList, privateList);break

##最后一轮测试时再次获取ps信息,以及目标进程的pmap信息

print('\n结束时完整获取ps信息,以及目标进程的pmap信息')

psAllInfo = dut1_ssh.exe_cmd(['ps -aux'])

psAllRssEnd = getPsAllRss(processList,psAllInfo)

dut1_ssh.exe_cmd(['pmap -d %s' % psID])

dut1_ssh.exe_cmd(['exit'])

##-------------------显示最终的监测结果------------------------------------------##

print('=========================拷机测试的结果=====================')

resultPrint(psName, rssList, privateList)

compareAllPsRss(processList, psAllRssStart, psAllRssEnd)

##-------------------清理测试环境,结束测试---------------------------------------##

dut1_ssh.close()

##++++++++++++++++++++++++++++++++++++++++++++##

def getPsID(psName,psInfo):

#根据PSInfo检索出psID

# return psID

def getPsAllRss(psNameList,psAllInfo):

#通过psALLInfo检索出所有ps的RSS并返回

# return psRssList

def getRssMem(dut1_ssh,psID):

#根据 'cat /proc/%s/status | grep VmRSS' 命令找出每一个ps的rss内存值

# return rssMem

def getPrivateMem(dut1_ssh,psID):

#根据 'pmap -d %s | grep mapped' 命令找出每一个ps的私有内存值

# return privateMem

def resultPrint(psName,rssList,privateList):

#根据需要输出内存监测结果,可以是炫酷的图形化输出,也可以是简易输出,例如:

print('\n进程%s的物理内存占用趋势为:'%psName)

print(rssList)

print('\n进程%s的私有内存使用趋势为:'%psName)

print(privateList)

def compareAllPsRss(processList,psAllRssStart,psAllRssEnd):

#对所有进程的一个输出,可以是图形化的,也可以是简易的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值