一种存储协议一致性测试方法及系统与流程

文档序号:11205950阅读:523来源:国知局
一种存储协议一致性测试方法及系统与流程

本发明涉及存储系统技术领域,更具体地说,涉及一种存储协议一致性测试方法及系统。



背景技术:

存储的协议有多种,如接口层协议sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(statisticalanalysissystem,系统分析软件)等,管理类协议有snmp(simplenetworkmanagementprotocol,简单网络管理协议)、smi-s(storagemanagementinitiativespecification,前沿存储管理接口标准)、restapi(representationalstatetransferapplicationprogramminginterface,表述性状态传递应用程序编程接口),文件共享类协议有nfs(networkfilesystem,网络文件系统)、cifs(commoninternetfilesystem,通用网络文件系统)、ftp(filetransferprotocol,文件传输协议)等。虽然协议定义各有不同,但相似协议在核心语义方面有极大的相似性,如smi-s和restapi。在测试角度看有两个大的困难,一个是同一个协议要测试不同厂商的支持程度;另一个是为相似协议要编写独立的测试用例,工作量大,执行测试时也有很多重复动作。因此,如何提高存储协议一致性的测试效率是一项亟待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种存储协议一致性测试方法,能够有效提高存储协议一致性的测试效率。

为实现上述目的,本发明提供如下技术方案:

一种存储协议一致性测试方法,包括:

基于通用协议包结构层构建协议模型;

将所述协议模型转化为具体协议;

对存储协议的一致性进行测试。

优选地,所述基于通用协议包结构层构建协议模型包括:

对所述协议模型进行初始化;

对所述协议模型进行结构化定义;

对所述协议模型进行帧格式定义。

优选地,所述对所述协议模型进行初始化具体为:

在测试用例被执行前,完成与设备的认证、握手和数据初始化。

优选地,所述对所述协议模型进行结构化定义具体为:

对协议分层定义和协议报文格式定义。

优选地,所述对所述协议模型进行帧格式定义具体为:

将协议模型中的结构化定义内容封装成在硬件平台上传输的格式,完成对协议内容的校验。

一种存储协议一致性测试系统,包括:

构建模块,用于基于通用协议包结构层构建协议模型;

转化模块,用于将所述协议模型转化为具体协议;

测试模块,用于对存储协议的一致性进行测试。

优选地,所述构建模块包括:

初始化单元,用于对所述协议模型进行初始化;

结构化定义单元,用于对所述协议模型进行结构化定义;

帧格式定义单元,用于对所述协议模型进行帧格式定义。

优选地,所述初始化单元具体用于:在测试用例被执行前,完成与设备的认证、握手和数据初始化。

优选地,所述结构化定义单元具体用于:对协议分层定义和协议报文格式定义。

优选地,所述帧格式定义单元具体用于:将协议模型中的结构化定义内容封装成在硬件平台上传输的格式,完成对协议内容的校验。

由上述技术方案可知,本发明提供了存储协议一致性测试方法,当需要对存储协议的一致性进行测试时,首先基于通用协议包结构层构建协议模型,然后将协议模型转化为具体协议,然后对存储协议的一致性进行测试,本发明通过构建协议模型,将协议模型转化为具体协议,能够有效提高存储协议一致性的测试效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明公开的一种存储协议一致性测试方法实施例1的方法流程图;

图2为本发明公开的一种存储协议一致性测试方法方法实施例2的方法流程图;

图3为本发明公开的一种存储协议一致性测试系统实施例1的结构示意图;

图4为本发明公开的一种存储协议一致性测试系统实施例2的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

为了更加特定地强调实施的独立性,本说明书涉及许多模块或单元。举例而言,模块或单元可由硬件电路实现,该硬件电路包括特制vlsi电路或门阵列,比如逻辑芯片、晶体管,或其它组件。模块或单元也可在可编程的硬设备中实现,比如场效可编程门阵列、可编程阵列逻辑、可编程逻辑设备等等。

模块或单元也可在藉由各种形式的处理器所执行的软件中实现。比如说,一可执行码模块可包括一个或多个实体的或逻辑的计算机指令区块,该区块可能形成为,比如说,对象、程序或函数。然而,鉴别模块或单元的可执行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所组成,当逻辑上组合在一起时,形成模块或单元且达到该模块或单元所要求的目的。

实际上,可执行码模块或单元可以是一单一指令或多个指令,甚至可以分布在位于不同的程序的数个不同的码区段,并且横跨数个存储设备。同样地,操作数据可被辨识及显示于此模块或单元中,并且可以以任何合适的形式实施且在任何合适的数据结构形式内组织。操作数据可以集合成单一数据集,或可分布在具有不同的存储设备的不同的位置,且至少部分地只以电子信号方式存在于一系统或网络。

本说明书所提及的“实施例”或类似用语表示与实施例有关的特性、结构或特征,包括在本发明的至少一实施例中。因此,本说明书所出现的用语“在一实施例中”、“在实施例中”以及类似用语可能但不必然都指向相同实施例。

再者,本发明所述特性、结构或特征可以以任何方式结合在一个或多个实施例中。以下说明将提供许多特定的细节,比如编程序、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供对本发明实施例的了解。然而相关领域的普通技术人员将看出本发明,即使没有利用其中一个或多个特定细节,或利用其它方法、组件、材料等亦可实施。另一方面,为避免混淆本发明,公知的结构、材料或操作并没有详细描述。

如图1所示,为本发明公开的一种存储协议一致性测试方法实施例1的流程图,本方法包括以下步骤:

s101、基于通用协议包结构层构建协议模型;

s102、将协议模型转化为具体协议;

s103、对存储协议的一致性进行测试。

一般的协议栈结构包括:硬件接口、协议编码规则、协议包格式定义、协议语义、协议内部分层结构和协议状态机和行为。其中,硬件接口:处理硬件接口的相关内容,对于网口来说,这是传输层;协议编码规则:一般是文本或者二进制的编码格式,这里仅仅处理基础的编码格式,比如bencode编码、base64编码等,与具体协议无关;协议包格式定义:基于某种特定编码规则形成的协议包格式定义,经过软件解码后,一般形成一棵协议格式树,存在于内存中。这个协议树对于协议处理以及协议相似性判定十分重要。协议语义:协议规范的,各个字段的具体含义;协议内部分层结构:有些协议内部也是分层的,比如传输层、会话层、事务层等;协议状态机和行为:协议状态机是任何协议都具有的,协议行为主要是协议的高层交互,也是协议必不可少的组成部分。

当需要进行存储协议的一致性测试时,在通用协议包结构层进行的相似模型定义,一个协议包在结构上就是一棵树,在该层上规范出了详细的包结构,每一个新协议的到来都需要适配到通用协议包结构上(主要逐个协议包做映射),映射的具体方法就是树的操作:新节点的添加、节点的删除、节点的合并。其中,新节点的添加:主要是协议能力扩展,或者协议版本升级带来的新功能。如restapi协议1.1比1.0在createsnapshot报文上增加了targetvolume字段,就在createsnapshot报文结构树上增加一个targetvolume字段。

节点的删除:有些协议在扩展时会废弃某些字段,反应在协议包结构树上就是删除节点的操作。

节点的合并:有些协议在废弃某些字段时,不会改变原二进制包的结构。如协议1.0,字段1,长度是4字节,字段2长度是2字节。在协议1.1中,字段2被删除,但为了保证协议的兼容性,字段1的长度变为6字节。在此种情况下我们就进行节点的合并操作。

然后将相似协议模型转化为具体协议,具体的,采用适配器完成适配的过程,适配器可以是独立的节点或者是软件模块,在协议包生成后,发送前按照规则进行修改,最终发送给被测存储设备。该种方式类似于黑盒测试方式,通过修改输出结果来实现新的测试用例生成。如果协议间存在继承关系,那么就存在一个适配的协议栈,需要协议1到协议1.1,再到协议1.1.1层层适配。

综上所述,在上述实施例中,当需要对存储协议的一致性进行测试时,首先基于通用协议包结构层构建协议模型,然后将协议模型转化为具体协议,然后对存储协议的一致性进行测试,本发明通过构建协议模型,将协议模型转化为具体协议,能够有效提高存储协议一致性的测试效率。

如图2所示,为本发明公开的一种存储协议一致性测试方法实施例2的流程图,本方法包括以下步骤:

s201、对协议模型进行初始化;

s202、对协议模型进行结构化定义;

s203、对协议模型进行帧格式定义;

当需要对存储协议进行一致性测试时,首先进行协议模型的设计,在设计协议模型时,具体包括:模型初始化、结构化定义和帧格式定义。其中,协议模型初始化:在测试用例被执行前,完成与设备的认证、握手、数据初始化等基础性工作,其目的是使设备达到一个稳定状态,以保证协议测试状态的稳定性和协议测试结果的准确性。

结构化定义:用于描述协议的通用化特征,完成对同类协议的抽象定义。协议模型的结构化定义内容主要包括:协议分层定义和协议报文格式定义。

帧格式定义:用于把协议模型的中的结构化定义内容封装成可以在硬件平台上可以传输的格式,同时完成对协议内容的校验。

s204、将协议模型转化为具体协议;

协议的实例化功能负责把协议模型转化为具体协议。具体功能包括:协议格式重组和编码。协议格式重组功能负责删除不支持的字段,增加协议模型没有的字段,协议编码功能负责根据具体协议的要求,把协议包编码为二进制或者文本格式,只有实例化的测试协议才能运行测试用例。

s205、对存储协议的一致性进行测试。

系统的输入是测试用例,一个测试用例一般是一个测试过程,最小应包含一个请求和一个响应,两条报文。经过系统转换,一个测试用例可以被自动转换为存储协议1.0和1.1两套测试用例,用以测试两套不同的测试设备。过程如下:(1)输入是一个测试用例;(2)系统执行测试用例,从测试用例中发现被测被测设备的协议包,初始是最低版本1.0;(3)采用实例化方法,把协议包转换成一个内存中的协议树;(4)根据不同的目标设备来决定接下来是否转化为1.1版本的协议包,还是就是测试1.0;(5)根据协议模型1.1中的定义,修改步骤(4)中的协议树结构,使之转化为协议包1.1;(6)生成1.1的包结构;(7)通过底层接口(ip或者fc)把1.1包或1.0包发送给正确的存储设备。

综上所述,本发明通过对相近协议或者同一协议的不同版本只需要编写一套测试套,实现了测试套的高度复用,节约了人力成本,实现了存储协议测试的自动化。

如图3所示,为本发明公开的一种存储协议一致性测试系统实施例1的结构示意图,本系统包括:

构建模块301,用于基于通用协议包结构层构建协议模型;

转化模块302,用于将协议模型转化为具体协议;

测试模块303,用于对存储协议的一致性进行测试。

一般的协议栈结构包括:硬件接口、协议编码规则、协议包格式定义、协议语义、协议内部分层结构和协议状态机和行为。其中,硬件接口:处理硬件接口的相关内容,对于网口来说,这是传输层;协议编码规则:一般是文本或者二进制的编码格式,这里仅仅处理基础的编码格式,比如bencode编码、base64编码等,与具体协议无关;协议包格式定义:基于某种特定编码规则形成的协议包格式定义,经过软件解码后,一般形成一棵协议格式树,存在于内存中。这个协议树对于协议处理以及协议相似性判定十分重要。协议语义:协议规范的,各个字段的具体含义;协议内部分层结构:有些协议内部也是分层的,比如传输层、会话层、事务层等;协议状态机和行为:协议状态机是任何协议都具有的,协议行为主要是协议的高层交互,也是协议必不可少的组成部分。

当需要进行存储协议的一致性测试时,在通用协议包结构层进行的相似模型定义,一个协议包在结构上就是一棵树,在该层上规范出了详细的包结构,每一个新协议的到来都需要适配到通用协议包结构上(主要逐个协议包做映射),映射的具体方法就是树的操作:新节点的添加、节点的删除、节点的合并。其中,新节点的添加:主要是协议能力扩展,或者协议版本升级带来的新功能。如restapi协议1.1比1.0在createsnapshot报文上增加了targetvolume字段,就在createsnapshot报文结构树上增加一个targetvolume字段。

节点的删除:有些协议在扩展时会废弃某些字段,反应在协议包结构树上就是删除节点的操作。

节点的合并:有些协议在废弃某些字段时,不会改变原二进制包的结构。如协议1.0,字段1,长度是4字节,字段2长度是2字节。在协议1.1中,字段2被删除,但为了保证协议的兼容性,字段1的长度变为6字节。在此种情况下我们就进行节点的合并操作。

然后将相似协议模型转化为具体协议,具体的,采用适配器完成适配的过程,适配器可以是独立的节点或者是软件模块,在协议包生成后,发送前按照规则进行修改,最终发送给被测存储设备。该种方式类似于黑盒测试方式,通过修改输出结果来实现新的测试用例生成。如果协议间存在继承关系,那么就存在一个适配的协议栈,需要协议1到协议1.1,再到协议1.1.1层层适配。

综上所述,在上述实施例中,当需要对存储协议的一致性进行测试时,首先基于通用协议包结构层构建协议模型,然后将协议模型转化为具体协议,然后对存储协议的一致性进行测试,本发明通过构建协议模型,将协议模型转化为具体协议,能够有效提高存储协议一致性的测试效率。

如图4所示,为本发明公开的一种存储协议一致性测试系统实施例2的结构示意图,本系统包括:

初始化单元401,用于对协议模型进行初始化;

结构化定义单元402,用于对协议模型进行结构化定义;

帧格式定义单元403,用于对协议模型进行帧格式定义;

当需要对存储协议进行一致性测试时,首先进行协议模型的设计,在设计协议模型时,具体包括:模型初始化、结构化定义和帧格式定义。其中,协议模型初始化:在测试用例被执行前,完成与设备的认证、握手、数据初始化等基础性工作,其目的是使设备达到一个稳定状态,以保证协议测试状态的稳定性和协议测试结果的准确性。

结构化定义:用于描述协议的通用化特征,完成对同类协议的抽象定义。协议模型的结构化定义内容主要包括:协议分层定义和协议报文格式定义。

帧格式定义:用于把协议模型的中的结构化定义内容封装成可以在硬件平台上可以传输的格式,同时完成对协议内容的校验。

转化模块404,用于将协议模型转化为具体协议;

协议的实例化功能负责把协议模型转化为具体协议。具体功能包括:协议格式重组和编码。协议格式重组功能负责删除不支持的字段,增加协议模型没有的字段,协议编码功能负责根据具体协议的要求,把协议包编码为二进制或者文本格式,只有实例化的测试协议才能运行测试用例。

测试模块405,用于对存储协议的一致性进行测试。

系统的输入是测试用例,一个测试用例一般是一个测试过程,最小应包含一个请求和一个响应,两条报文。经过系统转换,一个测试用例可以被自动转换为存储协议1.0和1.1两套测试用例,用以测试两套不同的测试设备。过程如下:(1)输入是一个测试用例;(2)系统执行测试用例,从测试用例中发现被测被测设备的协议包,初始是最低版本1.0;(3)采用实例化方法,把协议包转换成一个内存中的协议树;(4)根据不同的目标设备来决定接下来是否转化为1.1版本的协议包,还是就是测试1.0;(5)根据协议模型1.1中的定义,修改步骤(4)中的协议树结构,使之转化为协议包1.1;(6)生成1.1的包结构;(7)通过底层接口(ip或者fc)把1.1包或1.0包发送给正确的存储设备。

综上所述,本发明通过对相近协议或者同一协议的不同版本只需要编写一套测试套,实现了测试套的高度复用,节约了人力成本,实现了存储协议测试的自动化。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1