CN113590465A - 一种基于SDK自动生成mock服务的方法 - Google Patents
一种基于SDK自动生成mock服务的方法 Download PDFInfo
- Publication number
- CN113590465A CN113590465A CN202110720007.0A CN202110720007A CN113590465A CN 113590465 A CN113590465 A CN 113590465A CN 202110720007 A CN202110720007 A CN 202110720007A CN 113590465 A CN113590465 A CN 113590465A
- Authority
- CN
- China
- Prior art keywords
- sdk
- service
- simulation
- information
- project
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于SDK自动生成mock服务的方法,包括以下步骤:S1、获取SDK工具包及元数据文档:将API接口信息和实体类构建作为依赖并打包,将业务的加密方式、语言类型、接口列表作为模拟工程的元数据;S2、新建模拟服务器并添加环境信息和环境证书:新建模拟服务器工程并存储至数据库中,选择模拟服务器的系统环境,上传认证数据并经过后台验证后存储至数据库;本发明基于SDK,自动生成对应的基于注解的编程模型,通过ant脚本进行打包,将打包后的数据推送至服务器上,完成自动部署,测试人员通过对应的域名地址信息,即可完成对服务的调用,从而实现基于SDK自动调用模拟服务工程的过程,简化了对多个不同应用测试的过程,提高了测试的效率。
Description
技术领域
本发明涉及软件测试技术领域,特别是一种基于SDK自动生成mock服务的方法。
背景技术
SDK是指软件开发工具包,为一种特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时开发工具的集合,SDK提供一套有一定结构和逻辑的对外接口,封装对内的业务逻辑;调用者按照说明文档使用相应的对外接口可实现预期的功能,简化了软件开发流程,在一定程度上保证了软件质量。随着互联网技术的发展,越来越多的行业均通过线上互联网开展业务,特别是近些年发展势头良好的互联网银行,需要将实现相关支付或金融功能的软件通过SDK输出给合作应用方,一般在将SDK软件包发送给合作应用方之前,需要模拟合作应用方对SDK软件包进行测试,但是由于合作应用方和互联网银行业务的增多,模拟合作应用商调用测试SDK的时间花费较长,效率较低,并且不同合作应用方测试环境不同,大大增加了SDK测试的时间。
现有对SDK测试的方式为:以手动的方式实现SDK的测试环境的部署,手动编写对应的基于注解的编程模型,这些操作都需要在开发人员的协助下完成,测试人员则无法独立完成,导致SDK软件开发工具包测试的效率较低,并且无法自动实现SDK测试环境的切换。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于SDK自动生成mock服务的方法,解决现有SDK测试只能通过手动编写的方式实现测试环境的部署,且测试效率较低的问题。
本发明的目的是通过以下技术方案来实现的:
一种基于SDK自动生成mock服务的方法,包括以下步骤:
S1、获取SDK工具包及元数据文档:将API接口信息和实体类构建作为依赖并打包,将业务的加密方式、语言类型、接口列表作为模拟工程的元数据;
S2、新建模拟服务器并添加环境信息和环境证书:新建模拟服务器工程并存储至数据库中,选择模拟服务器的系统环境,上传认证数据并经过后台验证后存储至数据库;
S3、部署模拟服务工程:从数据库中上传SDK工具包和元数据文档,并执行DEMO构建
S4、解析SDK及元数据文档,解压模板工程并添加具体实现:读取元数据文档获取业务信息,解压SDK工具包并导入模拟服务对象;根据元数据文档和SDK依赖工具包生成基于注解的编程模型和index页面文件,提取S2中上传认证数据并导入模拟服务的对象中,根据业务信息项目代码生成index页面,为index页面添加模拟服务域名;
S5、为该工程执行ant打包并发布到到测试服务器上的tomcat容器内。
所述S1的具体步骤为:
S1.1、将接口、实体类构建作为依赖并打包为ZIP,导出SDK包;
S1.2、将业务的加密方式、语言类型和接口列表信息作为S4步骤的元数据;
所述S2的具体步骤为:
S2.1、新建模拟服务工程,模拟服务工程导入SDK包和元数据,将该模拟服务工程存储至数据库中;
S2.2、选择模拟服务的环境,并在该环境中上传验证信息;
S2.3、后台校验验证信息通过,将验证信息保存至服务器固定目录,并将验证信息保存至数据库中。
所述S4的具体步骤为:
S4.1、读取保存至数据库中的元数据;
S4.2、根据应用商的加密方式,解压SDK包并将其中的接口信息和实体类构建导入模拟服务对象;
S4.3、定义一个基于注解的编程模型controller的SDK模板实体,根据元数据信息,为模板实体添加调用地址、对象实体、引用证书地址、配置文件地址和SDK依赖包路径信息,利用模板实体和JAVA文件,通过FreeMark模板引擎为模拟服务生成controller类实体;
S4.4、定义一个index页面的SDK模板实体,根据模拟服务域名信息、业务名称为实体添加属性,利用模板实体与模板html文件,通过FreeMark模板引擎为模拟服务生成index页面文件;
S4.5、将步骤S2.3保存在数据库中的验证信息导入模拟服务对象;
S4.6、根据业务名称为demo生成index页面;
S4.7、根据模拟服务域名信息为该模拟服务工程创建build文件并添加至War包。
所述验证信息为ID号、证书和证书密码。
本发明的有益效果是:
本发明基于SDK,自动生成对应的基于注解的编程模型,通过ant脚本进行打包,将打包后的数据推送至服务器上,完成自动部署,测试人员通过对应的域名地址信息,即可完成对服务的调用,从而实现基于SDK自动调用模拟服务工程的过程,简化了对多个不同应用商测试的过程,提高了测试的效率。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的最优实施例如下所述:
一种基于SDK自动生成mock服务的方法,包括以下步骤:
S1、获取SDK工具包及元数据文档:将API接口信息和实体类构建作为依赖并打包,将业务的加密方式、语言类型、接口列表作为模拟工程的元数据;
S2、新建模拟服务器并添加环境信息和环境证书:新建模拟服务器工程并存储至数据库中,选择模拟服务器的系统环境,上传认证数据并经过后台验证后存储至数据库;
S3、部署模拟服务工程:从数据库中上传SDK工具包和元数据文档,并执行DEMO构建
S4、解析SDK及元数据文档,解压模板工程并添加具体实现:读取元数据文档获取业务信息,解压SDK工具包并导入模拟服务对象;根据元数据文档和SDK依赖工具包生成基于注解的编程模型和index页面文件,提取S2中上传认证数据并导入模拟服务的对象中,根据业务信息项目代码生成index页面,为index页面添加模拟服务域名;
S5、为该工程执行ant打包并发布到到测试服务器上的tomcat容器内。
所述S1的具体步骤为:
S1.1、将接口、实体类构建作为依赖并打包为ZIP,导出SDK包;
S1.2、将业务的加密方式、语言类型和接口列表信息作为S4步骤的元数据;
所述S2的具体步骤为:
S2.1、新建模拟服务工程,模拟服务工程导入SDK包和元数据,将该模拟服务工程存储至数据库中;
S2.2、选择模拟服务的环境,并在该环境中上传验证信息;
S2.3、后台校验验证信息通过,将验证信息保存至服务器固定目录,并将验证信息保存至数据库中。
所述S4的具体步骤为:
S4.1、读取保存至数据库中的元数据;
S4.2、根据应用商的加密方式,解压SDK包并将其中的接口信息和实体类构建导入模拟服务对象;
S4.3、定义一个基于注解的编程模型controller的SDK模板实体,根据元数据信息,为模板实体添加调用地址、对象实体、引用证书地址、配置文件地址和SDK依赖包路径信息,利用模板实体和JAVA文件,通过FreeMark模板引擎为模拟服务生成controller类实体;
S4.4、定义一个index页面的SDK模板实体,根据模拟服务域名信息、业务名称为实体添加属性,利用模板实体与模板html文件,通过FreeMark模板引擎为模拟服务生成index页面文件;
S4.5、将步骤S2.3保存在数据库中的验证信息导入模拟服务对象;
S4.6、根据业务名称为demo生成index页面;
S4.7、根据模拟服务域名信息为该模拟服务工程创建build文件并添加至War包。
所述验证信息为ID号、证书和证书密码。
需要说明的是本发明的技术方案是基于JAVA,但不限定测试模拟服务工程的系统环境,此方案也能能够基于其他程序语言实现,如C语言、vb.net、Python、PHP或javascript等程序语言。
本方案中的SDK的含义是:开发者软件工具包;controller:基于注解的编程模型,mock:模拟测试工程;zip:压缩包文件;ID号:通用账户,是一种网络身份证,即互联网身份认证协议;demo构建:程序的试样或示例;FreeMark:是一种模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本的通用工具,输出文本主要为HTML网页、电子邮件、配置文件或源代码等;index页面:导航页面,具体为包含链接的网页;War包:是指一个可以直接运行的WEB模块,一般用于网站,打成包部署到容器中;build文件:是ant打包工具的默认构建文件;ant打包:ant是将软件编译、测试、部署等步骤联系在一起的自动化构建工具,主要用于java工程的构建。
本发明基于SDK,自动生成对应的基于注解的编程模型,通过ant脚本进行打包,将打包后的数据推送至服务器上,完成自动部署,测试人员通过对应的域名地址信息,即可完成对服务的调用,从而实现基于SDK自动调用模拟服务工程的过程,简化了对多个不同应用商测试的过程,提高了测试的效率。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (5)
1.一种基于SDK自动生成mock服务调用的方法,其特征在于:包括以下步骤:
S1、获取SDK工具包及元数据文档:将API接口信息和实体类构建作为依赖并打包,将业务的加密方式、语言类型、接口列表作为模拟工程的元数据;
S2、新建模拟服务器并添加环境信息和环境证书:新建模拟服务器工程并存储至数据库中,选择模拟服务器的系统环境,上传认证数据并经过后台验证后存储至数据库;
S3、部署模拟服务工程:从数据库中上传SDK工具包和元数据文档,并执行DEMO构建
S4、解析SDK及元数据文档,解压模板工程并添加具体实现:读取元数据文档获取业务信息,解压SDK工具包并导入模拟服务对象;根据元数据文档和SDK依赖工具包生成基于注解的编程模型和index页面文件,提取S2中上传认证数据并导入模拟服务的对象中,根据业务信息项目代码生成index页面,为index页面添加模拟服务域名;
S5、为该工程执行ant打包并发布到到测试服务器上的tomcat容器内。
2.根据权利要求1所述的一种基于SDK自动生成mock服务的方法,其特征在于:所述S1的具体步骤为:
S1.1、将接口和实体类构建作为依赖并打包为ZIP,导出SDK包;
S1.2、将业务的加密方式、语言类型和接口列表信息作为S4步骤的元数据;
3.根据权利要求1所述的一种基于SDK自动生成mock服务的方法,其特征在于:所述S2的具体步骤为:
S2.1、新建模拟服务工程,模拟服务工程导入SDK包和元数据,将该模拟服务工程存储至数据库中;
S2.2、选择模拟服务的环境,并在该环境中上传验证信息;
S2.3、后台校验验证信息通过,将验证信息保存至服务器固定目录,并将验证信息保存至数据库中。
4.根据权利要求1到3任意一项权利要求所述的一种基于SDK自动生成mock服务的方法,其特征在于:所述S4的具体步骤为:
S4.1、读取保存至数据库中的元数据;
S4.2、根据应用商的加密方式,解压SDK包并将其中的接口信息和实体类构建导入模拟服务对象;
S4.3、定义一个基于注解的编程模型controller的SDK模板实体,根据元数据信息,为模板实体添加调用地址、对象实体、引用证书地址、配置文件地址和SDK依赖包路径信息,利用模板实体和JAVA文件,通过FreeMark模板引擎为模拟服务生成controller类实体;
S4.4、定义一个index页面的SDK模板实体,根据模拟服务域名信息、业务名称为实体添加属性,利用模板实体与模板html文件,通过FreeMark模板引擎为模拟服务生成index页面文件;
S4.5、将步骤S2.3保存在数据库中的验证信息导入模拟服务对象;
S4.6、根据业务名称为demo生成index页面;
S4.7、根据模拟服务域名信息为该模拟服务工程创建build文件并添加至War包。
5.根据权利要求1所述的一种基于SDK自动生成mock服务的方法,其特征在于:所述验证信息为ID号、证书和证书密码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110720007.0A CN113590465B (zh) | 2021-06-28 | 2021-06-28 | 一种基于SDK自动生成mock服务的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110720007.0A CN113590465B (zh) | 2021-06-28 | 2021-06-28 | 一种基于SDK自动生成mock服务的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590465A true CN113590465A (zh) | 2021-11-02 |
CN113590465B CN113590465B (zh) | 2023-06-06 |
Family
ID=78244912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110720007.0A Active CN113590465B (zh) | 2021-06-28 | 2021-06-28 | 一种基于SDK自动生成mock服务的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590465B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817063A (zh) * | 2022-05-17 | 2022-07-29 | 中国联合网络通信集团有限公司 | 模拟测试方法、设备及存储介质 |
CN117033287A (zh) * | 2023-10-08 | 2023-11-10 | 易方信息科技股份有限公司 | 基于sdk包的多总线通信方法、系统、设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268372A (zh) * | 2017-07-24 | 2018-07-10 | 深圳壹账通智能科技有限公司 | Mock测试处理方法、装置、存储介质和计算机设备 |
CN109376088A (zh) * | 2018-10-24 | 2019-02-22 | 网宿科技股份有限公司 | 一种自动化测试系统及自动化测试方法 |
US20190303276A1 (en) * | 2017-09-25 | 2019-10-03 | Oracle International Corporation | Method and system for recording and debugging process flows |
CN111221739A (zh) * | 2020-01-10 | 2020-06-02 | 中国建设银行股份有限公司 | 业务测试方法、装置和系统 |
CN111651366A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | Sdk测试方法、装置、设备及存储介质 |
-
2021
- 2021-06-28 CN CN202110720007.0A patent/CN113590465B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268372A (zh) * | 2017-07-24 | 2018-07-10 | 深圳壹账通智能科技有限公司 | Mock测试处理方法、装置、存储介质和计算机设备 |
US20190303276A1 (en) * | 2017-09-25 | 2019-10-03 | Oracle International Corporation | Method and system for recording and debugging process flows |
CN109376088A (zh) * | 2018-10-24 | 2019-02-22 | 网宿科技股份有限公司 | 一种自动化测试系统及自动化测试方法 |
CN111221739A (zh) * | 2020-01-10 | 2020-06-02 | 中国建设银行股份有限公司 | 业务测试方法、装置和系统 |
CN111651366A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | Sdk测试方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
THILINI BHAGYA 等: ""Generating Mock Skeletons for Lightweight Web-Service Testing"", 《2019 26TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC)》 * |
胡小伟 等: ""基于mock模拟方法的核安全级软件单元测试技术研究及应用"", 《自动化博览》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114817063A (zh) * | 2022-05-17 | 2022-07-29 | 中国联合网络通信集团有限公司 | 模拟测试方法、设备及存储介质 |
CN117033287A (zh) * | 2023-10-08 | 2023-11-10 | 易方信息科技股份有限公司 | 基于sdk包的多总线通信方法、系统、设备以及存储介质 |
CN117033287B (zh) * | 2023-10-08 | 2024-02-13 | 易方信息科技股份有限公司 | 基于sdk包的多总线通信方法、系统、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113590465B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11200033B2 (en) | Application programming interface (API) based object oriented software development and textual analysis | |
US7810072B2 (en) | Exception thrower | |
CN111078554B (zh) | 一种小程序调试方法、装置、设备及存储介质 | |
CN108959076A (zh) | 一种api在线调试方法 | |
CN101482817B (zh) | 基于黑盒的大粒度Java构件组装方法 | |
CN113590465B (zh) | 一种基于SDK自动生成mock服务的方法 | |
Weigert et al. | Practical experiences in using model-driven engineering to develop trustworthy computing systems | |
CN106897107B (zh) | 一种web远程数据计算与仿真的实现系统和方法 | |
CN110597730A (zh) | 基于场景法的自动化测试用例生成方法及系统 | |
CN112965731B (zh) | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 | |
KR102226463B1 (ko) | 프로세스자동화프로그램과 연동되는 ui/ux솔루션제공서버, 이를 포함하는 프로세스자동화시스템, 이를 이용한 프로세스자동화방법, 및 이를 실행하기 위한 컴퓨터 프로그램 | |
CN114398293A (zh) | 接口测试用例生成方法、电子设备和存储介质 | |
CN111176660A (zh) | 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质 | |
CN113641594B (zh) | 跨端自动化测试方法以及相关装置 | |
CN115470152A (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN115687064A (zh) | 基于区块链的智能合约测试方法及相关设备 | |
CN114610298A (zh) | 一种低代码的api设计和开发方法、系统及存储介质 | |
Buezas et al. | Umbra designer: Graphical modelling for telephony services | |
Cavarra et al. | A framework to simulate UML models: moving from a semi-formal to a formal environment | |
Greci et al. | A framework for contract-policy matching based on symbolic simulations for securing mobile device application | |
Dietrich et al. | Formal methods for communication services: meeting the industry expectations | |
CN108647033B (zh) | 一种开放平台的sdk自动打包方法 | |
Watts | AUTOMATION OF NFNT TASKS FOR CHARGING SYSTEM | |
Duarte et al. | An architecture for dynamic invariant generation in WS-BPEL web service compositions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |