一種基于ipmi的對服務器進行自動化重啟測試的方法
【技術領域】
[0001]本發(fā)明涉及重啟測試技術技術,尤其涉及一種基于IPMI的對服務器進行自動化重啟測試的方法。
【背景技術】
[0002]隨著服務器行業(yè)的高速發(fā)展,在各個領域中越來越多的客戶采用計算能力更強的服務器運行自己的核心應用。INSPUR浪潮作為國內(nèi)最大服務器供應商,為了滿足高度并行化及高性能需求的客戶,在推高性能服務器的同時,通用注重產(chǎn)品的質(zhì)量和和可靠性和穩(wěn)定性。
[0003]根據(jù)以往的經(jīng)驗和理論分析,服務器在啟動階段是最容易發(fā)生問題的。在服務器加電后,會掃描連接在系統(tǒng)中的所有設備,同時會對所有設備進行資源分配并嘗試對所有設備進行初始化動作和自檢動作。很大一部分產(chǎn)品設計中的問題會在這個階段暴露出來,在服務器啟動完成并進入穩(wěn)定運行階段后,很多設計中的問題反而不容易復現(xiàn)。因此,只要頻繁進行重啟測試,讓系統(tǒng)不斷地對所有設備進行掃描、資源分配、初始化和自檢動作,就可以比較容易地暴露出產(chǎn)品設計中的質(zhì)量問題。
[0004]現(xiàn)在我們在測試中已經(jīng)比較注重對服務器的重啟測試,現(xiàn)在也有專用的對服務器進行重啟測試的疲勞測試機。但是目前的測試方法一般都是在本機上完成的,此方法沒有對服務器的BMC功能進行覆蓋。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施提出一種基于IPMI的對服務器進行自動化重啟測試的方法。將通過IPMI,通過管理網(wǎng)絡遠程對服務器進行重啟測試。
[0006]1、被測服務器重新啟動,自動對硬件信息進行掃描,并將掃描結果和之前保存的記錄進行比對,如果有不同,將差異記錄到日志文件。
[0007]2、控制端計算機對被測服務器進行循環(huán)檢測,當檢測到被測機已經(jīng)完成啟動并完成硬件掃描后,向被測機發(fā)送IPMI指令,完成被測機的重啟循環(huán)。重啟可以根據(jù)需要設置為多個不同方式:AC Power Off (需要同時使用疲勞測試機);Power Off ;Power Reset ;Power Soft Off。
[0008]測試流程:
1、在被測機確定運行正常,硬件配置無誤,軟件設置正常后,運行測試腳本,進行測試初始化,保存當前硬件信息,供今后測試時進行比對。
[0009]2、在控制端計算機上運行腳本,對被測機進行監(jiān)控,當發(fā)現(xiàn)被測機完成開機啟動和重啟測試腳本后,向被測機發(fā)送重啟IPMI指令。同時開始下一循環(huán)的測試。
[0010]3、當?shù)竭_設定的測試次數(shù)后,腳本自動停止運行。查看被測機測試log文件中是否有測試失敗項,如果沒有則測試正常,重啟測試通過
本測試方法在服務器啟動完成以后,會掃描硬件改動,并將硬件改動的結果記錄保存下來,供測試完成后對測試結果進行分析。
[0011]本方法可以對服務器進行自動化重啟測試,利用該方法可以有效發(fā)現(xiàn)服務器設計中在計算機啟動環(huán)節(jié)的各種隱患,可以有效地提高測試人員的工作效率,節(jié)省人力成本,提高工作的準確性和可靠性。
【附圖說明】
[0012]圖1是被測機測試流程示意圖。
[0013]圖2是控制端測試流程示意圖。
[0014]圖3是測試正常不意圖。
【具體實施方式】
[0015]下面對本發(fā)明的內(nèi)容進行更加詳細的闡述。
[0016]重啟測試流程圖如1、2所示。
[0017]本測試方法環(huán)境要求:
1、被測服務器一臺,BMC口和一個業(yè)務網(wǎng)口接入網(wǎng)絡(也可以使用Sharelink網(wǎng)口,只用一根網(wǎng)線同時接入BMC和業(yè)務網(wǎng)口);
2、控制端計算機一臺,接入同一網(wǎng)絡。
[0018]測試流程:
1、在被測機確定運行正常,硬件配置無誤,軟件設置正常后,運行測試腳本,進行測試初始化,保存當前硬件信息,供今后測試時進行比對;
2、在控制端計算機上運行腳本,對被測機進行監(jiān)控,當發(fā)現(xiàn)被測機完成開機啟動和重啟測試腳本后,向被測機發(fā)送重啟IPMI指令。同時開始下一循環(huán)的測試;
3、當?shù)竭_設定的測試次數(shù)后,腳本自動停止運行。查看被測機測試log文件中是否有測試失敗項,如果沒有則測試正常,重啟測試通過。
[0019]以下是被測機重啟測試參考源代碼:
#/bin/bash
SYSName=' I sb_r el ease ~a / awk ' /Descrip/ {print}
SYS=' I sb_re I ease ~a / awk ’/Distributor/{print $3}
Reboo tDIR= pwd'func t1n checkrc ()
{
if [ ! ~d /home/reboo tfiles/ ] then
mkdir /home/reboo tfi les/fi
if [ ! -f /home/rebootfiles/rc.local, tmp ]then
#sysname= uname ~a / awk ’ {print $2}, if [ $SYS == "Ubuntu"] then
cp /etc/rc.local /home/reboo tfiles/rc.local, tmp# echo "the sys is $SYSName"elif [ $SYS 二二 "SUSE"]then
echo ,, The system is $SYSName"elif [ -f /etc/rc.d/rc.local ]then
#echo "The system is $SYSName"
cp /etc/rc.d/rc.local /home/reboo tfi les/rc.local, tmp else
echo ^the shell doesnot support the system $SYSName,,exi t O
fi
else
# echo ,, The system is $SYSName"echo "success to get files!I ^
fi
echo ,, The system is $SYSName"sleep I
}
funct1n SuseReboot Q
{
echo ’
#! /bin/sh#
#/etc/init.d/abcd
#
#Copyright (c) 2000,2001 SuSE GmbH Nuernberg, Germany.All rightsreserved.#
#
### BEGIN INIT INFO
#Provides: abed
#RequiredStar t:
#ShouldStar t: $network $syslog
#RequiredStop:
#ShouldStop: $network $syslog
#Defaul t-Start: 2 3 5#DefaultStop: 0 14 6
#Descript1n: run the auto shell start### END INIT INFO
echo "first to yun test.......^ ? /root/testfiIe
bash /home/reboo tfiles/powercycle, sh &
#/etc/rc.status
#First reset status of this servicerc—reset
case "$1,, instart)
echo "s tar t.....^ ? /roo t/tes tfi Ie
,,
stop)
echo "stop.....^ ? /roo t/tes tfi Ie
chkconfig —del linuxrestart ,,
*)
echo "$1,,〉〉/roo t/tes tfi Ie ,,
esac
rc— exi t,> tc/ini t.d/1 inuxres tar tif [ -f /etc/init.d/1 inuxres tart ]then
chmod 777 /etc/init.d/1 inuxres tar tIn s /etc/init.d/1 inuxres tar t /etc/rc.d/rc3.d/S951 inuxres tartIn s /etc/init.d/1 inuxres tar t /etc/rc.d/rc5.d/S951 inuxres tartchkconfig add linuxres tart
else
echo ^error, Can' t find the test file"exi t O
fi
}
funct1n UbuntuReboot Q
{
cp ~f /home/rebootfiles/rc.local, tmp /home/reboo tfi les/rc.local, tmpl#ln s /etc/init.d/reboot—test /etc/rc.d/rc3.d/S77reboot_ testecho,bash /home/reboo tfi les/power cycle, sh &exit O ’ } /etc/rc.localsleep 10 ini t O
I
funct1n NormalReboot Q
{
cp ~f /home/rebootfiles/rc.local, tmp /home/reboo tfi les/rc.local, tmplecho "sh /home/reboo tfi les/power cycle, sh & ^ }} /home/reboo tfi les/rc.local, tmpl
cp -f /home/rebootfiles/rc.local, tmpl /etc/rc.d/rc.local
}
funct1n Reboot Q
{
case $1 in start) echo ’ #!/bin/bash
delaytime= cat /home/reboo tfi les/T / awk,{print}, echo zz da te reboo t" }} /roo t/times
cat /root/times / grep reboot j wc -1 j awk ’ {print},? /root/times cnt= cat /root/times / grep reboot j wc -1 j awk ’ {print},
#echo Sent ? /root/times if [ 1-f /roo t/1spc