本发明涉及测试资源优化技术领域,具体涉及一种bmc测试me状态异常的方法。
背景技术:
me作为bios的核心模块,bmc与硬件间的通信很多通过me获取,故监控管理中需要对me的状态实时进行监控,但是出于实际的技术考量,监控管理界面对数据的刷新以分钟计,所以对于各模块短暂的异常很难在界面中实时的反应出来。
技术实现要素:
本发明要解决的技术问题是:本发明针对以上问题,提供一种bmc测试me状态异常的方法,可解决bmc对于me_fw_status正常及异常状态的检测,增加测试覆盖率。
本发明所采用的技术方案为:
一种bmc测试me状态异常的方法,所述方法通过在系统下刷新me,发生短暂的bmc—me连接中断,短暂触发me_fw_status异常,通过ipmi对bmc中me_fw_statussensor的不间断读取,并通过对返回结果的判断sensor的状态,达到监控该sensor测试的效果。
所述方法通过实时侦测me状态的脚本实现,测试过程中,操作人员根据脚本运行的实际情况,同步刷新web界面,查看对应的sensor状态,对比ipmi读取结果,达到测试me状态的效果。
所述脚本通过sdr实时读取,截取me_fw_status的状态信息,通过对me_fw_status返回信息的读取判断,从而得出me_fw_status的实际状态。
所述方法通过在预留的短接跳冒,触发me异常。
所述方法实现步骤如下:
1)通过host端远程登陆服务器,运行脚本,得出me_fw_status的状态显示,脚本根据提前预设的测试次数进行测试;
2)在待测端系统下运行me刷新的命令,更新me;
3)当me完成更新之后,me与bmc断开连接,me_fw_status状态异常,me重启之后恢复正常;
4)根据脚本运行的实际情况,同步刷新web界面,查看对应的sensor状态,对比ipmi读取结果;
5)每次读取me_fw_status状态的判断在屏幕上输出判断结果,若发生错误,根据cycletest的数量及时定位出log的位置,分析log出错的原因,快速定位;若发生me—bmc连接中断,屏幕上同步输出判断结果,提示测试人员连接已经中断。
本发明的有益效果为:
本发明方法可以持续验证me_fw_status的状态,可以自主设定运行的次数和读取的机台,可以判断me_fw_status异常情况,可以快速定位问题log,分析问题原因。
具体实施方式
根据具体实施方式对本发明进一步说明:
实施例1
一种bmc测试me状态异常的方法,基于“系统下刷新me,可短暂的触发me异常”的情况,所述方法通过在系统下刷新me,发生短暂的bmc—me连接中断,短暂触发me_fw_status异常,通过ipmi对bmc中me_fw_statussensor的不间断读取,并通过对返回结果的判断sensor的状态,达到监控该sensor测试的效果。
me在系统下的更新时,会发生短暂的bmc—me连接中断,通过对bmc中me_fw_statussensor的不间断读取,从而判断sensor的状态,达到监控该sensor测试的效果。
实施例2
在实施例1的基础上,本实施例所述方法通过实时侦测me状态的脚本实现,测试过程中,操作人员根据脚本运行的实际情况,同步刷新web界面,查看对应的sensor状态,对比ipmi读取结果,达到测试me状态的效果。
通过在系统下刷新me,ipmi不间断的读取me_fw_status信息,通过返回结果的判断直接得出结果判断
me正常返回值:me_fw_status|c0h|ok|34.0|0reserved
me异常返回值:me_fw_status|c0h|unc|34.0|0reserved
me_fw_status|c0h|ns|34.0|noreadin
实施例3
在实施例1或2的基础上,本实施例所述脚本通过sdr实时读取,截取me_fw_status的状态信息,通过对me_fw_status返回信息的读取判断,从而得出me_fw_status的实际状态。
ipmitoolpath=(r'd:\study\python\ipmitool\ipmitool.exe')
//ipmi路径
bmcip='192.168.0.102
///ip输出
defsendcmd(cmd):
p=subprocess.popen(cmd,shell=true,stdout=subprocess.pipe)
returnp.stdout.read()
//命令发送函数定义
defme_status_count()
sdr_read=sendcmd('{0}-ilanplus-h{1}-uadmin-padminsdrelist'.format(ipmitoolpath,bmcip)).decode('utf-8')
//sdr读取
f=open(r'd:\test\sdrelist.txt','a')
f.write(sdr_read)
f.close()
读取内容存储
sdr_count=len(open(r'd:\test\sdrelist.txt').readlines())
//文件行数读取
forninrange(0,sdr_count+1):
line=linecache.getline(r'd:\test\sdrelist.txt',n)
//me_status状态行读取
ifline.find("me_fw_status")!=-1:
foriinrange(1,9000000000):
//测试次数设置
print("testcycle{0}".format(i))
sdr_reading=sendcmd('{0}-ilanplus-h{1}-uadmin-padminsdrelist'.format(ipmitoolpath,bmcip)).decode('utf-8')
f=open(r'd:\test\sdrelist.txt','a')
f.write(sdr_reading)
f.close()
me_status_read=linecache.getline(r'd:\test\sdrelist.txt',(sdr_count*(i-1)+n))
print(me_status_read)
if((me_status_read.find("unc"))or(me_status_read.find("ns"))):
//结果判断
print("mestatuschange")
defmain():
file1=r'd:\test\sdrelist.txt'
ifos.path.exists(file1):
os.remove(file1)
存储文件判断及清楚
me_status_count()
实施例4
在实施例3的基础上,本实施例所述方法通过在预留的短接跳冒,触发me异常。
实施例5
在实施例4的基础上,本实施例所述方法实现步骤如下:
1)通过host端远程登陆服务器,运行脚本,得出me_fw_status的状态显示,脚本根据提前预设的测试次数进行测试;
2)在待测端uefi或者windows系统下运行me刷新的命令,更新me;
3)当me完成更新之后,me与bmc断开连接,me_fw_status状态异常,me重启之后恢复正常;
4)根据脚本运行的实际情况,同步刷新web界面,查看对应的sensor状态,对比ipmi读取结果;
5)每次读取me_fw_status状态的判断在屏幕上输出判断结果,若发生错误,根据cycletest的数量及时定位出log的位置,分析log出错的原因,快速定位;若发生me—bmc连接中断,屏幕上同步输出判断结果,提示测试人员连接已经中断。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。