本发明涉及测试方法技术领域,具体涉及一种sasswitch整机柜上抓取sasswitch寄存器数据的方法,能够实现自动化抓取sasswitch寄存器数据的方法。
背景技术:
sasswitch节点每个端口包含4个物理phy,共17个端口,68个phy值。
通常情况下,可通过sasswitch的命令行界面读取每个phy对应的值。但是在测试过程中,经常会需要不停地对每个phy值进行大量的反复读取来监控对应寄存器的状态,因此我们可以通过基于expect工具编写的脚本在linux系统下快速简便的利用telnet访问sasswitch命令行并同时进行大量的反复读取。这种方法能够实现对sasswitch节点各个端口的phy值进行反复读取并对对应的寄存器进行长时间监控,从而确保测试效率。
phy指物理层,osi的最底层。
技术实现要素:
本发明要解决的技术问题是:本发明针对以上问题,提供一种sasswitch整机柜上抓取sasswitch寄存器数据的方法,针对基于cpu芯片为pm8056的sasswitch节点各个端口的phy值大量不间断的读取,提供更加高效、节约时间同时对sasswitch端口各个phy值进行长时间自动化读取的方法。
本发明所采用的技术方案为:
一种sasswitch整机柜上抓取sasswitch寄存器数据的方法,所述方法在linux系统下,利用telnet协议访问sasswitch命令行,并对sasswitch端口各个phy值进行读取。
所述方法实现步骤如下:
1)前置工作:使用整机柜存储服务器中的某一个计算节点作为测试控制节点,这个测试控制节点安装支持telnet协议的linux系统,并且此系统内安装expect库;
2)整机柜内sasswitch节点与测试控制节点在同一个网段,sasswitch节点ip与测试控制节点ip互相ping通;
3)在控制端通过telnet协议远程访问sasswitch的cli界面,在cli界面下执行相关操作;
4)通过对应关系计算每个phy值中对应寄存器的地址,向这些地址发送进制数获取这些寄存器当前的状态。
在测试过程中对sasswitch端口各个phy值对应的中断寄存器及中断事件寄存器写入1来读取当前寄存器的数据,可以加入循环反复读取。
在测试之前或在多次读取数据之后,向sasswitch端口各个phy值对应的中断寄存器及中断事件寄存器写入0xffffffff(即每个比特位全置1)来清除寄存器中的中断向量,实现定时读取。
所述方法通过编写脚本,对寄存器的读写实现自动化,同时监控寄存器当前的状态。
本发明的有益效果为:
本发明方法是一种更加高效、节约时间同时对sasswitch端口各个phy值进行长时间自动化读取的方法。此方法不仅在测试工作中提高了工作效率,对sasswitch的工作监控也提供了便捷,实用性强。
附图说明
图1为本发明方法流程图。
具体实施方式
根据说明书附图,结合具体实施方式对本发明进一步说明:
实施例1
一种sasswitch整机柜上抓取sasswitch寄存器数据的方法,所述方法在linux系统下,利用telnet协议访问sasswitch命令行,并对sasswitch端口各个phy值进行读取。
实施例2
如图1所示,在实施例1的基础上,本实施例所述方法实现步骤如下:
1)前置工作:使用整机柜存储服务器中的某一个计算节点作为测试控制节点,这个测试控制节点安装支持telnet协议的linux系统,并且此系统内安装expect库;
2)整机柜内sasswitch节点与测试控制节点在同一个网段,sasswitch节点ip与测试控制节点ip互相ping通;
3)在控制端通过telnet协议远程访问sasswitch的cli界面,在cli界面下执行相关操作;
4)通过对应关系计算每个phy值中对应寄存器的地址,向这些地址发送简单的进制数获取这些寄存器当前的状态。
实施例3
在实施例2的基础上,本实施例在测试过程中对sasswitch端口各个phy值对应的中断寄存器及中断事件寄存器写入1来读取当前寄存器的数据,可以加入循环反复读取。
实施例4
在实施例3的基础上,本实施例在测试之前或在多次读取数据之后,向sasswitch端口各个phy值对应的中断寄存器及中断事件寄存器写入0xffffffff(即每个比特位全置1)来清除寄存器中的中断向量,实现定时读取。
实施例5
在任一实施例1-4的基础上,本实施例所述方法通过编写脚本,对寄存器的读写实现自动化,同时监控寄存器当前的状态。
具体server端执行的相关脚本内容主要由四部分组成:
1)一部分为脚本ss_cmd.sh,即可对某一个phy值对应的中断事件寄存器读取数据标志位,详细内容为:
#/usr/local/bin/expect
setsub_ip[lindex$argv0]
setop_cmd[lindex$argv1]
spawntelnet$sub_ip
expect"*user*"
send"admin\r"
expect"*password*"
send"admin\r"/*自动登录sasswitchcli界面*/
expect"*0x00000000:0000>*"
send"rd_32$op_cmd1\r"/*从寄存器的地址中读取数据*/
sleep1
expect"*0x00000000:0000>*"
send"exit\r"/*自动退出sasswitchcli界面*/
sleep1
expecteof;
2)一部分为ss_clear_cmd.sh,即可对某一个phy值对应的中断事件寄存器清除中断向量,详细内容为:
#/usr/local/bin/expect
setsub_ip[lindex$argv0]
setop_cmd[lindex$argv1]
spawntelnet$sub_ip
expect"*user*"
send"admin\r"
expect"*password*"
send"admin\r"/*自动登录sasswitchcli界面*/
expect"*0x00000000:0000>*"
send"wr_32$op_cmd0xffffffff\r"/*清除寄存器中的中断向量*/
sleep1
expect"*0x00000000:0000>*"
send"exit\r"/*自动退出sasswitchcli界面*/
sleep1
expecteof;
3)一部分为clear_event_reg_test.sh,即可批量对68个phy值对应的中断事件寄存器清除中断向量,详细内容为:
#/bin/bash
foriin{1..68}
do
ab=cat./reg.list|awk''nr==$i'{print$5}'/*调用reg.list文件中寄存器的地址并赋值给变量ab*/
echo"interrupteventofphy$[$i-1]"/*打印中断事件寄存器对应的phy值*/
echo$ab/*打印出变量ab所代表的寄存器地址*/
./ss_clear_cmd.sh$1$ab/*$1取的是sasswitch节点ip地址,清除寄存器中中断向量*/
done/*清除并打印出68个phy值对应中断事件寄存器中的中断向量*/
4)一部分为cat_event_reg_test.sh,即可批量对68个phy值对应的中断事件寄存器读取数据标志位,详细内容为:
#!/bin/bash
foriin{1..68}
do
ab=catreg.list|awk''nr==$i'{print$5}'/*调用reg.list文件中寄存器的地址并赋值给变量ab*/
echo"interrupteventregofphy$[$i-1]"/*打印中断事件寄存器对应的phy值*/
echo$ab/*打印出变量ab所代表的寄存器地址*/
./ss_cmd.sh$1$ab/*$1取的是sasswitch节点ip地址,抓取寄存器中的数据标志位*/
done/*抓取并打印出68个phy值对应中断事件寄存器中的数据标志位*/;
程序结束。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。