一种gRPC请求的参数设置方法及装置与流程

文档序号:17640151发布日期:2019-05-11 00:37阅读:2813来源:国知局
一种gRPC请求的参数设置方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种grpc请求的参数设置方法及装置。



背景技术:

随着微服务的大力盛行,服务的发现以及服务的访问,更多的使用了rpc(remoteprocedurecall,远程过程调用)技术。以google为代表的grpc(googleremoteprocedurecall,谷歌远程过程调用),在行业内一直遥遥领先。所以在开发或者测试工作中,需要经常模拟grpc请求,来协助进行验证或者测试。

现有技术直接通过调用编译proto文件生成的文件中的set方法,进行参数的构造请求。这种方法对于比较简单的原始数据类型,如byte,string,int等类型的接口请求参数还比较友好,但是对于比较深层次的复合型的数据对象的构造就比较麻烦,无法将需要的参数直接脱离出来,且参数的设置没有界面化,不够直观,对于使用者比较抽象。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种grpc请求的参数设置方法及装置。

第一方面,本发明实施例提出一种grpc请求的参数设置方法,包括:

根据预设的编译命令将请求的接口数据文件编译成jmeter支持的目标接口文件;

根据所述目标接口文件创建谷歌远程过程调用grpc请求,将预设格式的数据包存储在jmeter目录下,并将所述grpc请求和所述jmeter目录下的数据包导入jmeter工程;

根据所述jmeter目录下的数据包在所述jmeter工程中构造并显示所述grpc请求的参数,接收参数的设置触发,并根据所述设置触发对所述grpc请求的参数进行设置。

可选地,所述根据所述设置触发对所述grpc请求的参数进行设置,具体包括:

根据所述设置触发通过csvdataconfig从文件读取或通过jmeter自带的preprocesser中的beanshellpreprocess对所述grpc请求的参数进行设置。

可选地,所述根据所述设置触发对所述grpc请求的参数进行设置,具体包括:

若判断获知所述grpc请求的参数来自上一个grpc请求的反馈,则根据所述设置触发通过jmeter的后置处理器postprocesser中的正则匹配或者java脚本语言后处理beanshellpostprocess对所述grpc请求的参数进行设置。

可选地,所述预设的编译命令包括:google官方推荐命令或者插件protoc-gen-grpc-java命令。

可选地,所述grpc请求的参数采用json格式。

第二方面,本发明实施例还提出一种grpc请求的参数设置装置,包括:

文件编译模块,用于根据预设的编译命令将请求的接口数据文件编译成jmeter支持的目标接口文件;

数据导入模块,用于根据所述目标接口文件创建谷歌远程过程调用grpc请求,将预设格式的数据包存储在jmeter目录下,并将所述grpc请求和所述jmeter目录下的数据包导入jmeter工程;

参数设置模块,用于根据所述jmeter目录下的数据包在所述jmeter工程中构造并显示所述grpc请求的参数,接收参数的设置触发,并根据所述设置触发对所述grpc请求的参数进行设置。

可选地,所述参数设置模块具体用于根据所述设置触发通过csvdataconfig从文件读取或通过jmeter自带的preprocesser中的beanshellpreprocess对所述grpc请求的参数进行设置。

可选地,所述参数设置模块具体用于若判断获知所述grpc请求的参数来自上一个grpc请求的反馈,则根据所述设置触发通过jmeter的后置处理器postprocesser中的正则匹配或者java脚本语言后处理beanshellpostprocess对所述grpc请求的参数进行设置。

可选地,所述预设的编译命令包括:google官方推荐命令或者插件protoc-gen-grpc-java命令。

可选地,所述grpc请求的参数采用json格式。

第三方面,本发明实施例还提出一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述方法。

第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述方法。

由上述技术方案可知,本发明实施例通过编译成jmeter支持的目标接口文件,在jmeter工程中构造并显示grpc请求的参数,极大的简化了接口调用人员的请求参数构造的复杂程度,直接通过界面化的工具jmeter就可以进行完成对应的设置,极大的提高了工作效率。

附图说明

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

图1为本发明一实施例提供的一种grpc请求的参数设置方法的流程示意图;

图2为本发明另一实施例提供的一种grpc请求的参数设置方法的流程示意图;

图3为本发明一实施例提供的一种grpc请求的参数设置装置的结构示意图;

图4为本发明一实施例提供的电子设备的逻辑框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本实施例提供的一种grpc请求的参数设置方法的流程示意图,包括:

s101、根据预设的编译命令将请求的接口数据文件编译成jmeter支持的目标接口文件。

其中,所述预设的编译命令包括:google官方推荐命令或者插件protoc-gen-grpc-java命令。

具体地,由于后续基于jmeter实现grpc请求的参数设置,因此需要对所请求的接口数据文件进行编译,编译成jmeter支持的目标接口文件。例如,将需要请求的接口数据.proto文件,通过protobuffer的编译命令编译成目标语言文件,由于采用jmeter插件,因此目标语言是java,因此目标语言文件是jmeter所能支持的java接口文件。

s102、根据所述目标接口文件创建grpc请求,将预设格式的数据包存储在jmeter目录下,并将所述grpc请求和所述jmeter目录下的数据包导入jmeter工程。

具体地,由于后续基于jmeter实现grpc请求的参数设置,因此需要创建grpc请求,具体为创建类grpcsample继承自abstractjavasamplerclient,该类的作用就是创建grpc请求,并解析response;然后创建maven工程,导入jmeter以及grpc请求相关的库;并将maven工程编译为单独的jar包,例如lx-grpc.jar,并放置于jmeter的lib/ext目录下。

s103、根据所述jmeter目录下的数据包在所述jmeter工程中构造并显示所述grpc请求的参数,接收参数的设置触发,并根据所述设置触发对所述grpc请求的参数进行设置。

其中,所述请求的参数采用json格式。

通过jmeter的界面化设置解决了在构造grpc请求的时候的参数设置的繁琐性,同时通过采用json作为友好的数据传参格式,json参数简单的原生数据类型设置也支持复杂类型的数据格式。

本实施例通过编译成jmeter支持的目标接口文件,在jmeter工程中构造并显示grpc请求的参数,极大的简化了接口调用人员的请求参数构造的复杂程度,直接通过界面化的工具jmeter就可以进行完成对应的设置,极大的提高了工作效率。

进一步地,在上述方法实施例的基础上,s103中所述根据所述设置触发对所述grpc请求的参数进行设置,具体包括:

根据所述设置触发通过csvdataconfig从文件读取或通过jmeter自带的preprocesser中的beanshellpreprocess对所述grpc请求的参数进行设置。

进一步地,在上述方法实施例的基础上,s103中所述根据所述设置触发对所述grpc请求的参数进行设置,具体包括:

若判断获知所述grpc请求的参数来自上一个grpc请求的反馈,则根据所述设置触发通过jmeter的后置处理器postprocesser中的正则匹配或者java脚本语言后处理beanshellpostprocess对所述grpc请求的参数进行设置。

如图2所示,在具体的grpc请求的参数设置过程中,包括以下步骤:

s201、将需要请求的接口数据.proto文件,通过protobuffer的编译命令编译成目标语言文件;

s202、创建maven工程,导入jmeter以及grpc请求相关的库,创建类grpcsample继承自abstractjavasamplerclient,该类的作用就是创建grpc请求,并解析response;

s203、创建grpc通道对象,具体为打开jmeter并新建httprequest,其中classname部分选择上面jar包里面的定义的业务类名称如com.lite.jmeter.grpcsample,sendparameterswiththerequest部分设置在grpc.jar包定义的参数的值,如下表所示:

通过上表的参数可以比较直观的看到jmeter的请求参数除了环境信息的请求地址和端口外,还有一项请求参数,为了使用和构造上的便捷性,使用的是比较友好的json格式,对于不同层次的测试,开发人员都极易上手构造,不像原始的grpc请求的二进制格式那样晦涩难懂。

对于构造grpc_req参数方面完全能够集成jmeter本身自带的参数关联,例如上例中变量oid以及uid的取值,可以通过利用csvdataconfig来从文件读取,也可以通过jmeter自带的preprocesser中的beanshellpreprocess来进行赋值,可以从文件读取也可以自己编码去灵活的赋值。

以上是单个的grpc请求,对于需要上下文关联的请求,比如第二个grpc请求的参数来源于上一个请求的response,也可以借助jmeter的postprocesser中的正则匹配或者beanshellpostprocess来进行取值。

s204、重载方法setuptestteardowntestruntest;

s205、通过jsonformat.parser将请求数据填充为json格式。

s206、发送grpc请求并解析response。

对于结果的responsemessage的断言处理,也可以直接用现有的jmeter自带的assert断言处理。

其中,构造grpc_req参数、关联上下文的grpc请求的取值以及断言处理可以直接使用jmeter自带的成熟功能,不需要自己用脚本进行相同功能的重复开发,并且参数构造上对于grpc比较复杂的结构上,使用json格式也更加减少了该插件的使用成本,非常简单易用,通过本实施例提供的方法可以极大的简化了接口调用人员的请求参数构造的复杂程度,直接通过界面化的工具jmeter就可以进行完成对应的设置,而且返回结果都可以在jmeter中进行统计分析。对于接口使用人员不需要自己去开发脚本或者构造对应的参数去发起grpc请求,尤其是对于请求参数是对象类型的接口,极大的提高了工作效率。

图3示出了本实施例提供的一种grpc请求的参数设置装置的结构示意图,所述装置包括:文件编译模块301、数据导入模块302和参数设置模块303,其中:

所述文件编译模块301用于根据预设的编译命令将请求的接口数据文件编译成jmeter支持的目标接口文件;

所述数据导入模块302用于根据所述目标接口文件创建谷歌远程过程调用grpc请求,将预设格式的数据包存储在jmeter目录下,并将所述grpc请求和所述jmeter目录下的数据包导入jmeter工程;

所述参数设置模块303用于根据所述jmeter目录下的数据包在所述jmeter工程中构造并显示所述grpc请求的参数,接收参数的设置触发,并根据所述设置触发对所述grpc请求的参数进行设置。

具体地,所述文件编译模块301根据预设的编译命令将请求的接口数据文件编译成jmeter支持的目标接口文件;所述数据导入模块302根据所述目标接口文件创建谷歌远程过程调用grpc请求,将预设格式的数据包存储在jmeter目录下,并将所述grpc请求和所述jmeter目录下的数据包导入jmeter工程;所述参数设置模块303根据所述jmeter目录下的数据包在所述jmeter工程中构造并显示所述grpc请求的参数,接收参数的设置触发,并根据所述设置触发对所述grpc请求的参数进行设置。

本实施例通过编译成jmeter支持的目标接口文件,在jmeter工程中构造并显示grpc请求的参数,极大的简化了接口调用人员的请求参数构造的复杂程度,直接通过界面化的工具jmeter就可以进行完成对应的设置,极大的提高了工作效率。

进一步地,在上述装置实施例的基础上,所述参数设置模块303具体用于根据所述设置触发通过csvdataconfig从文件读取或通过jmeter自带的preprocesser中的beanshellpreprocess对所述grpc请求的参数进行设置。

进一步地,在上述装置实施例的基础上,所述参数设置模块303具体用于若判断获知所述grpc请求的参数来自上一个grpc请求的反馈,则根据所述设置触发通过jmeter的后置处理器postprocesser中的正则匹配或者java脚本语言后处理beanshellpostprocess对所述grpc请求的参数进行设置。

进一步地,在上述装置实施例的基础上,所述预设的编译命令包括:google官方推荐命令或者插件protoc-gen-grpc-java命令。

进一步地,在上述装置实施例的基础上,所述grpc请求的参数采用json格式。

本实施例所述的grpc请求的参数设置装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

参照图4,所述电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;

其中,

所述处理器401和存储器402通过所述总线403完成相互间的通信;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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