CN115098384A - 测试区块链存储集群的方法、装置、电子设备和存储介质 - Google Patents
测试区块链存储集群的方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115098384A CN115098384A CN202210758984.4A CN202210758984A CN115098384A CN 115098384 A CN115098384 A CN 115098384A CN 202210758984 A CN202210758984 A CN 202210758984A CN 115098384 A CN115098384 A CN 115098384A
- Authority
- CN
- China
- Prior art keywords
- test
- data
- request
- storage cluster
- blockchain
- 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.)
- Pending
Links
Images
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
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本说明书提供一种测试区块链存储集群的方法、装置、电子设备和存储介质,其中,所述方法应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述方法包括:接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务;将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群;从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果;将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种测试区块链存储集群的方法、装置、电子设备和存储介质。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
在区块链技术中,区块链存储集群作为区块链底层技术平台中的一个重要组件,负责持久化存储链上的区块、交易、状态、历史读写集等区块链数据,并对外提供上述数据的查询功能。目前,对区块链存储集群相关的测试方案是从链上交易出发,通过执行完整的链上交易过程、共识过程以及区块同步过程,以测试区块链存储集群的相关功能。然而,这样的测试方案虽然能够完成对区块链存储集群一部分功能的校验,但是测试角度是从链上系统整体性的角度出发,其测试过程中涉及的对区块链存储集群的调用方式较为单一,无法对区块链存储集群进行充分测试,故缺乏测试的针对性。此外,由于传统测试方案本质上是模拟执行链上交易的全过程,因此需要部署一套完整的区块链平台测试环境,故缺乏测试的便捷性。
发明内容
本发明的目的在于提供一种测试区块链存储集群的方法、装置、电子设备和存储介质。
根据本说明书一个或多个实施例的第一方面,提出了一种测试区块链存储集群的方法,应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述方法包括:
接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务;
将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群;
从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果;
将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
根据本说明书一个或多个实施例的第二方面,提出了一种测试区块链存储集群的装置,应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述装置包括:
测试请求接收单元,用于接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务;
调用请求发送单元,用于将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群;
测试结果生成单元,用于从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果;
测试应答返回单元,将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
本说明书实施例中的测试节点通过维护外部测试接口与测试方相连,同时通过区块链存储集群的原生测试接口与区块链存储集群相连,使得测试方可以直接通过测试节点维护的外部测试接口实现针对区块链存储集群的测试,而不再通过模拟区块链交易执行过程的方式实现,因此本说明书实施例涉及的测试方案的实现无需依赖部署完整的区块链平台测试环境,具有测试的便捷性;另外,由于测试任务针对于区块链存储集群且不是区块链交易执行后的衍生过程,故具有较高的测试的针对性与自由度,能够实现对区块链存储集群的充分测试。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种测试区块链存储集群的方法的流程图。
图2是一示例性实施例提供的一种测试区块链存储集群的系统架构图。
图3是一示例性实施例提供的一种设备的结构示意图。
图4是一示例性实施例提供的一种测试区块链存储集群的装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1是一示例性实施例提供的一种测试区块链存储集群的方法的流程图。该方法应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述方法包括:
S102:接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务。
图2是一示例性实施例提供的一种测试区块链存储集群的系统架构图。如图2所示,区块链存储集群维护有原生测试接口,在传统测试方案中,区块链存储集群与完整的区块链测试平台通过原生测试接口相连,而在本说明书实施例中,区块链存储集群与轻量级的测试节点通过原生测试接口相连,由于测试节点未部署完整的区块链平台测试环境,而仅部署有针对区块链存储集群进行管理的存储服务测试环境,该存储服务测试环境仅提供有针对原生测试接口的功能、性能、压力测试的能力,而不支持交易共识、执行交易、交易成块、区块上链等操作,因此本说明书实施例所涉及的测试方案对测试环境的要求较低。
本说明书实施例所涉及的区块链存储集群包含有一个或多个数据库,用于对区块链数据进行存储管理,所述区块链数据至少包括区块数据、状态数据和/或事件数据。上述存储管理包括对数据库中的区块链数据进行各类数据库操作,包括读取数据、写入数据、修改或更新数据、删除数据。本说明书实施例所涉及的原生测试接口可以包括一个或多个,在原生测试接口包括多个时,其中每一个原生测试接口对应于实现一类特定的数据库操作。
本说明书实施例所涉及的区块链数据包括区块数据、状态数据、事件数据和历史读写集等。其中,区块数据是指区块链网络中每个区块链节点所维护的区块链账本中的数据,由于区块链账本是一种特殊的数据结构,其是由多个区块通过哈希锚定首尾相连而成,具有不可篡改性,每个区块由区块头和区块体组成,任一区块的区块头中包含有该个区块的状态树根、交易数根、收据树根、区块高度和对应父区块的哈希值等信息,而区块体中包含有该个区块包含的交易数据(交易哈希)。本说明书实施例所涉及的区块数据指的就是区块链账本中包含的数据。本说明书实施例涉及的状态数据和事件数据则是由区块链节点所部署的各个智能合约所维护。本说明书实施例所涉及的历史读写集是指过去所有读写任务(例如写入区块数据)的备份存档,方便进行数据回滚或数据回放。
在本说明书实施例中,测试节点可以与区块链存储集群部署于同一个物理设备,这种情况下测试节点可以同时在本地维护有外部测试接口与原生测试接口,实现本地接口转换。或者,如图2所示,测试节点与区块链存储集群部署于不同的物理设备,二者通过网络通讯相连接,测试节点需要通过远程调用的方式调用区块链存储集群的原生测试接口。测试节点维护有外部测试接口的接口语义规范,同时也维护有原生测试接口的接口语义规范,因此测试节点可以按照正确规范分别构造针对外部测试接口或原生测试接口对应的请求或应答,实现接口转换功能。
在本说明书实施例中,测试节点与测试方通过外部测试接口相连接,测试节点可以与测试方部署于同一个或不同的物理设备,本说明书实施例涉及的测试方可以是一系列测试工具,例如Jmeter(一种基于Java的压力测试工具)或LoaderRunner(一种负载测试工具),或者各类安装有测试环境的用户方。在本说明书实施例中,与外部测试接口对接的测试请求和测试应答符合所述外部测试接口对应的接口语义规范,由于统一了标准化的接口语义规范,这使得各类不同的外部测试工具均可以基于所述外部测试接口的接口语义规范进行测试调用,可以简单方便的实现多元化测试场景,减少了外部测试用例的设计复杂度,对测试工具的拓展也有极大的兼容性。
本说明书实施例所涉及的外部测试接口具体可以包括restful(Representational State Transfer,一种网络应用程序的设计风格和开发方式)api(Application Programming Interface,应用程序编程接口),采用json(JavaScriptObject Notation,JS对象简谱,是一种轻量级的数据交换格式)实现测试节点与测试方之间的数据传递,由此以来,测试方与测试节点通过restful api实现restful http(HyperText Transfer Protocol,超文本传输协议)交互,可以简单方便的实现多元化测试场景。
测试节点在接收到测试方发送至所述外部测试接口的测试请求后,可以基于外部测试接口对应的接口语义规范对测试请求进行解析,确定出所述测试请求对应的测试任务。本说明书实施例所涉及的测试任务是指针对区块链存储集群在某一功能上的一套完整的测试逻辑,其可能包括:对区块链存储集群一次或多次的调用(异步调用或同步调用)以及一些自定义的测试判断逻辑,最终测试节点会在执行完测试任务后生成一个对应的用于表征测试任务是否测试成功的测试结果。测试任务的设计具有较高的自由度,例如可以包括数据查询读取任务、数据新增写入任务、数据更新任务、数据迁移任务、数据回滚任务、数据回放任务等。在本说明书实施例中,测试节点自身已经封装有大部分测试任务的执行逻辑,而测试方只需要通过测试请求引用这些测试任务并进行执行即可,相当于为测试方预先提供了一部分默认的测试任务模板,测试方可以在这些测试任务模板的基础上进行直接调用或进一步的设计,因此可以为测试方节省对测试用例的大量设计工作,避免重复设计,减少了测试方针对测试用例的设计复杂度。
S104:将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群。
在本说明书实施例中,所述调用请求可以包括一个或多个,所述调用请求包括数据写入请求、数据读取请求、数据修改请求和/或数据删除请求。即区块链存储集群只能通过原始测试接口对外提供基本的数据库操作的能力,从而将调用请求的功能限定在用于使区块链存储集群写入数据的数据写入请求、用于使区块链存储集群读取数据的数据读取请求、用于使区块链存储集群修改数据的数据修改请求以及用于使区块链存储集群删除数据的数据删除请求之内。而测试节点所维护的测试任务实质上是将上述区块链存储集群所提供的基础数据库能力进行整合,并封装为一个整体的测试逻辑,通过预定义的测试逻辑向所述区块链存储集群的原始测试接口发送一个或多个调用请求,从而实现各类超越基本的数据库操作的能力的复杂的测试任务。
S106:从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果。
由于调用请求可能包括一个或多个,而区块链存储集群针对每一个调用请求都会通过原生测试接口返回一个对应的调用应答,因此调用应答的数量也可能包括一个或多个,其数量与调用请求的数量相同。
在本说明书实施例中,任一调用应答包含有相应调用请求(用于触发生成该任一调用应答的调用请求)的执行情况,所述执行情况用于表征所述调用请求是否执行成功,具体用于表征所述相应调用请求是否执行成功。
在所述调用请求为所述数据读取请求的情况下,所述调用应答包含所述数据读取请求所指示的存储位置上存储的数据。在调用请求中包含有数据读取请求的情况下,区块链存储集群将执行该数据读取请求,从数据读取请求中解析出该数据读取请求所指示的特定存储地址,并在区块链存储集群中查询该特定存储地址对应的数据,最后将该数据读取出并携带在该数据读取请求对应的调用应答中以返回至测试节点。
可选的,所述基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果,包括:在所述执行情况用于表征所述调用请求执行成功的情况下,生成用于表征所述测试任务测试成功的测试结果,否则,生成用于表征所述测试任务测试失败的测试结果。如果所述调用请求与调用应答分别包括多个,那么需要在多个调用应答分别包含的多个调用请求的执行情况均用于表征执行成功的情况下,才会生成用于表征所述测试任务测试成功的测试结果;而在多个调用请求的执行情况中只要有任一调用请求的执行情况用于表征执行失败的情况下,生成用于表征所述测试任务测试失败的测试结果。
S108:将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
在测试节点生成针对测试任务的测试结果后,需要首先按照外部测试接口对应的接口语义规范进行转换得到包含所述测试结果的测试应答,然后再将该测试应答作为所述测试请求对应的应答,通过所述外部测试接口返回至所述测试方。测试方在接收到测试应答后,可以按照自身维护的外部测试接口对应的接口语义规范,解析测试应答并从中提取得到所述测试结果。
本说明书实施例中的测试节点通过维护外部测试接口与测试方相连,同时通过区块链存储集群的原生测试接口与区块链存储集群相连,使得测试方可以直接通过测试节点维护的外部测试接口实现针对区块链存储集群的测试,而不再通过模拟区块链交易执行过程的方式实现,因此本说明书实施例涉及的测试方案的实现无需依赖部署完整的区块链平台测试环境,具有测试的便捷性;另外,由于测试任务针对于区块链存储集群且不是区块链交易执行后的衍生过程,故具有较高的测试的针对性与自由度,能够实现对区块链存储集群的充分测试。
可选的,所述测试任务为数据迁移任务,所述调用请求包括第一数据读取请求、第一数据写入请求和第一数据删除请求,所述调用应答包括第一数据读取请求对应的第一调用应答、第一数据写入请求对应的第二调用应答和第一数据删除请求对应的第三调用应答;
所述将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群,包括:
将用于使所述区块链存储集群在第一存储位置读取第一数据的第一数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第一数据的第一调用应答的情况下,生成用于使所述区块链存储集群在第二存储位置写入第一数据的第一数据写入请求以及用于使所述区块链存储集群在第一存储位置删除第一数据的第一数据删除请求;
将第一数据写入请求和第一数据删除请求通过所述原生测试接口发送至所述区块链存储集群。
本说明书实施例记载了测试任务为数据迁移任务时的测试方案,通过本测试方案可以实现对区块链存储集群的数据迁移功能的测试。
可选的,所述测试任务为数据回放任务,所述调用请求包括第二数据读取请求、第二数据写入请求、第二数据删除请求、第三数据写入请求和第三数据读取请求,所述调用应答包括第二数据读取请求对应的第四调用应答、第二数据写入请求对应的第五调用应答、第二数据删除请求对应的第六调用应答、第三数据写入请求对应的第七调用应答和第三数据读取请求对应的第八调用应答;
所述将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群,包括:
将用于使所述区块链存储集群在第三存储位置读取第二数据的第二数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第二数据的第四调用应答的情况下,将用于使所述区块链存储集群在第四存储位置写入第二数据的第二数据写入请求以及用于使所述区块链存储集群在第三存储位置删除第二数据的第二数据删除请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第五调用应答与第六调用应答包含的执行情况分别用于表征第二数据写入请求与第二数据删除请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置写入第二数据的第三数据写入请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第七调用应答包含的执行情况用于表征第三数据写入请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置读取第三数据的第三数据读取请求通过所述原生测试接口发送至所述区块链存储集群;
所述基于所述调用应答包含的执行情况生成所述测试任务对应的测试结果,包括:
在第二数据与接收到的第八调用应答中包含的第三数据比对一致的情况下,生成用于表征所述数据回放任务测试成功的测试结果,否则,生成用于表征所述数据回放任务测试失败的测试结果。
本说明书实施例说明了测试任务为数据回放任务时的测试方案,通过本方案可以实现对区块链存储集群的数据回放能力的测试,由于数据回放的过程包含数据回滚与数据比对的过程,因此本方案能够同时对区块链存储集群的数据回滚能力进行测试。特别的,上述第三数据写入请求中指定在第三存储位置写入的第二数据,是通过在第四存储位置所读取得到的(通过原生测试接口向区块链存储集群发送额外的针对第三存储位置上第二数据的数据读取请求),由于重复写入的第二数据可能出错,因此本说明书实施例所涉及的数据回放任务实际上是通过检测重复写入的数据相较于历史写入的数据是否发生变化,来对区块链存储集群重复存储数据的一致性与正确性进行测试。
在针对区块链存储集群的传统测试方案中,由于是通过交易执行驱动的,其针对区块链存储集群的测试仅仅为顺带进行的,缺少针对性,因此无法对区块链存储集群进行类似上述数据迁移任务或数据回放任务的测试,而本说明书实施例通过在测试节点设计对应测试任务的测试逻辑,将原生测试接口与外部测试接口进行嵌合,实现了对区块链存储集群的充分测试,同时也不需要依赖完整的区块链平台测试环境。
图3是一示例性实施例提供的一种设备的示意结构图。请参考图3,在硬件层面,该设备包括处理器302、内部总线303、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图4所示,图4是本说明书根据一示例性实施例提供的一种测试区块链存储集群的装置的框图,该装置可以应用于如图3所示的设备中,以实现本说明书的技术方案;该装置应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述装置包括:
测试请求接收单元401,用于接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务。
调用请求发送单元402,用于将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群。
测试结果生成单元403,用于从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果。
测试应答返回单元404,将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
可选的,所述执行情况用于表征所述调用请求是否执行成功。
可选的,所述测试结果生成单元403具体用于:
在所述执行情况用于表征所述调用请求执行成功的情况下,生成用于表征所述测试任务测试成功的测试结果,否则,生成用于表征所述测试任务测试失败的测试结果。
可选的,所述调用请求包括数据写入请求、数据读取请求、数据修改请求和/或数据删除请求。
可选的,在所述调用请求为所述数据读取请求的情况下,所述调用应答包含所述数据读取请求所指示的存储位置上存储的数据。
可选的,所述测试任务为数据迁移任务,所述调用请求包括第一数据读取请求、第一数据写入请求和第一数据删除请求,所述调用应答包括第一数据读取请求对应的第一调用应答、第一数据写入请求对应的第二调用应答和第一数据删除请求对应的第三调用应答;
所述调用请求发送单元402具体用于:
将用于使所述区块链存储集群在第一存储位置读取第一数据的第一数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第一数据的第一调用应答的情况下,生成用于使所述区块链存储集群在第二存储位置写入第一数据的第一数据写入请求以及用于使所述区块链存储集群在第一存储位置删除第一数据的第一数据删除请求;
将第一数据写入请求和第一数据删除请求通过所述原生测试接口发送至所述区块链存储集群。
可选的,所述测试任务为数据回放任务,所述调用请求包括第二数据读取请求、第二数据写入请求、第二数据删除请求、第三数据写入请求和第三数据读取请求,所述调用应答包括第二数据读取请求对应的第四调用应答、第二数据写入请求对应的第五调用应答、第二数据删除请求对应的第六调用应答、第三数据写入请求对应的第七调用应答和第三数据读取请求对应的第八调用应答;
所述调用请求发送单元402具体用于:
将用于使所述区块链存储集群在第三存储位置读取第二数据的第二数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第二数据的第四调用应答的情况下,将用于使所述区块链存储集群在第四存储位置写入第二数据的第二数据写入请求以及用于使所述区块链存储集群在第三存储位置删除第二数据的第二数据删除请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第五调用应答与第六调用应答包含的执行情况分别用于表征第二数据写入请求与第二数据删除请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置写入第二数据的第三数据写入请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第七调用应答包含的执行情况用于表征第三数据写入请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置读取第三数据的第三数据读取请求通过所述原生测试接口发送至所述区块链存储集群;
所述测试结果生成单元403具体用于:
在第二数据与接收到的第八调用应答中包含的第三数据比对一致的情况下,生成用于表征所述数据回放任务测试成功的测试结果,否则,生成用于表征所述数据回放任务测试失败的测试结果。
可选的,所述测试请求和所述测试应答符合所述外部测试接口对应的接口语义规范。
可选的,所述区块链存储集群用于对区块链数据进行存储管理,所述区块链数据至少包括区块数据、状态数据和/或事件数据。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本发明不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (12)
1.一种测试区块链存储集群的方法,应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述方法包括:
接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务;
将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群;
从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果;
将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
2.根据权利要求1所述的方法,所述执行情况用于表征所述调用请求是否执行成功。
3.根据权利要求2所述的方法,所述基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果,包括:
在所述执行情况用于表征所述调用请求执行成功的情况下,生成用于表征所述测试任务测试成功的测试结果,否则,生成用于表征所述测试任务测试失败的测试结果。
4.根据权利要求1所述的方法,所述调用请求包括数据写入请求、数据读取请求、数据修改请求和/或数据删除请求。
5.根据权利要求4所述的方法,在所述调用请求为所述数据读取请求的情况下,所述调用应答包含所述数据读取请求所指示的存储位置上存储的数据。
6.根据权利要求4所述的方法,所述测试任务为数据迁移任务,所述调用请求包括第一数据读取请求、第一数据写入请求和第一数据删除请求,所述调用应答包括第一数据读取请求对应的第一调用应答、第一数据写入请求对应的第二调用应答和第一数据删除请求对应的第三调用应答;
所述将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群,包括:
将用于使所述区块链存储集群在第一存储位置读取第一数据的第一数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第一数据的第一调用应答的情况下,生成用于使所述区块链存储集群在第二存储位置写入第一数据的第一数据写入请求以及用于使所述区块链存储集群在第一存储位置删除第一数据的第一数据删除请求;
将第一数据写入请求和第一数据删除请求通过所述原生测试接口发送至所述区块链存储集群。
7.根据权利要求4所述的方法,所述测试任务为数据回放任务,所述调用请求包括第二数据读取请求、第二数据写入请求、第二数据删除请求、第三数据写入请求和第三数据读取请求,所述调用应答包括第二数据读取请求对应的第四调用应答、第二数据写入请求对应的第五调用应答、第二数据删除请求对应的第六调用应答、第三数据写入请求对应的第七调用应答和第三数据读取请求对应的第八调用应答;
所述将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群,包括:
将用于使所述区块链存储集群在第三存储位置读取第二数据的第二数据读取请求通过所述原生测试接口发送至所述区块链存储集群,并在接收到包含第二数据的第四调用应答的情况下,将用于使所述区块链存储集群在第四存储位置写入第二数据的第二数据写入请求以及用于使所述区块链存储集群在第三存储位置删除第二数据的第二数据删除请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第五调用应答与第六调用应答包含的执行情况分别用于表征第二数据写入请求与第二数据删除请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置写入第二数据的第三数据写入请求通过所述原生测试接口发送至所述区块链存储集群;
在接收到的第七调用应答包含的执行情况用于表征第三数据写入请求执行成功的情况下,将用于使所述区块链存储集群在第三存储位置读取第三数据的第三数据读取请求通过所述原生测试接口发送至所述区块链存储集群;
所述基于所述调用应答包含的执行情况生成所述测试任务对应的测试结果,包括:
在第二数据与接收到的第八调用应答中包含的第三数据比对一致的情况下,生成用于表征所述数据回放任务测试成功的测试结果,否则,生成用于表征所述数据回放任务测试失败的测试结果。
8.根据权利要求1所述的方法,所述测试请求和所述测试应答符合所述外部测试接口对应的接口语义规范。
9.根据权利要求1所述的方法,所述区块链存储集群用于对区块链数据进行存储管理,所述区块链数据至少包括区块数据、状态数据和/或事件数据。
10.一种测试区块链存储集群的装置,应用于与所述区块链存储集群相连的测试节点,所述测试节点维护有外部测试接口,所述区块链存储集群维护有原生测试接口;所述装置包括:
测试请求接收单元,用于接收测试方发送至所述外部测试接口的测试请求,确定所述测试请求对应的测试任务;
调用请求发送单元,用于将所述测试任务对应的调用请求通过所述原生测试接口发送至所述区块链存储集群;
测试结果生成单元,用于从所述原生测试接口接收所述区块链存储集群执行所述调用请求生成的调用应答,基于所述调用应答包含的所述调用请求的执行情况生成所述测试任务对应的测试结果;
测试应答返回单元,将包含所述测试结果的测试应答通过所述外部测试接口返回至所述测试方。
11.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210758984.4A CN115098384A (zh) | 2022-06-29 | 2022-06-29 | 测试区块链存储集群的方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210758984.4A CN115098384A (zh) | 2022-06-29 | 2022-06-29 | 测试区块链存储集群的方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115098384A true CN115098384A (zh) | 2022-09-23 |
Family
ID=83295689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210758984.4A Pending CN115098384A (zh) | 2022-06-29 | 2022-06-29 | 测试区块链存储集群的方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098384A (zh) |
-
2022
- 2022-06-29 CN CN202210758984.4A patent/CN115098384A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239324B (zh) | 业务流转处理方法、装置及系统 | |
CN110503435B (zh) | 基于区块链的交易预警方法、装置及设备 | |
CN108599973B (zh) | 一种日志关联方法、装置及设备 | |
CN112015739A (zh) | 一种数据核验、数据查询方法及装置 | |
CN110807013B (zh) | 用于分布式数据存储集群的数据迁移方法和装置 | |
CN113704117B (zh) | 一种算法测试系统、方法及装置 | |
CN112181378B (zh) | 业务流程的实现方法及装置 | |
CN114529417A (zh) | 执行交易的方法、区块链、主节点和从节点 | |
CN114547203A (zh) | 执行交易的方法、区块链、主节点和从节点 | |
CN110602163B (zh) | 文件上传方法及装置 | |
CN113744063B (zh) | 区块链中执行交易的方法及装置 | |
CN113744062B (zh) | 在区块链中执行交易的方法、区块链节点和区块链 | |
CN113254163B (zh) | 区块链数据的处理方法及装置 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN116048977B (zh) | 一种基于数据还原的测试方法及装置 | |
CN110992039A (zh) | 交易处理方法、装置及设备 | |
CN111324803A (zh) | 搜索引擎的查询请求处理方法、装置及客户端 | |
CN115098384A (zh) | 测试区块链存储集群的方法、装置、电子设备和存储介质 | |
CN112486461B (zh) | 一种基于springboot框架的信息处理系统 | |
CN115203050A (zh) | 一种服务的依赖关系的确定方法及装置 | |
CN115098483A (zh) | 一种预执行缓存数据清理方法和区块链节点 | |
CN110688430B (zh) | 一种获得数据旁路的方法、装置及电子设备 | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
CN112749152A (zh) | 智能合约的数据迁移方法、装置及存储介质 | |
CN111858487A (zh) | 数据更新方法及设备 |
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 |