大数据系统性能测试方法、装置及电子设备与流程

文档序号:11774379阅读:303来源:国知局
大数据系统性能测试方法、装置及电子设备与流程

本发明实施例涉及数据库技术领域,尤其涉及一种大数据系统性能测试方法和装置,一种电子设备,以及一种计算机存储介质。



背景技术:

随着云时代的来临,大数据(bigdata)也吸引了越来越多的关注。大数据系统的性能是一个需要监测的重要指标。

一种常用的用于测试大数据系统性能的方法是,基于事务处理性能委员会tpc测试基准(如tpc-h,tpc-c,benchmarksql,tpc-ds等)进行手工测试的方法。以基于tpc-ds测试基准为例,通过手工方式对大数据系统进行性能测试的过程大致包括如下步骤:1)使用tpc-ds自带的命令dsgen产生相应大小的数据;使用命令dsqgen产生结构化查询语句sql(structuralquerylanguage)语句;2)在集群数据库里新建数据库和表;3)把生成的数据导入到集群数据库里;4)进行压力测试,如用上述生成的sql语句对导入到数据库中的数据进行大量的查询、更新、插入、删除等复杂操作。

然而,上述手工测试的方法显然存在测试效率低的问题。因此,需要一种代替手工测试的方案,以实现基于测试基准对大数据系统的性能进行自动化测试,从而提升测试速度及工作效率。



技术实现要素:

本发明实施例提供一种大数据系统性能测试的方法、装置及电子设备,用以解决现有技术中通过手动方式测试大数据系统性能存在的测试效率低的问题。

第一方面,本发明实施例中提供了一种大数据系统性能测试方法,包括:获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;根据测试结果,确定所述大数据系统的系统性能数据。

其中,所述测试基准包括但不限于:tpc-h、tpc-c、benchmarksql或tpc-ds。所述大数据系统可以是分布式的大数据查询引擎集群,例如,greenplum,implala,trafodion,hawq等大数据查询引擎集群。所述测试参数包括以下参数的至少一项:结构化查询语言sql方言,数据源参数,数据库名称、用户名和密码,数据规模,所述测试参数还可以包括测试任务标识等。所述测试指令包括但不限于:数据准备指令、数据库创建指令、数据表创建指令、数据导入指令和性能测试指令。。

结合第一方面,本发明在第一方面的第一种实现方式中,所述测试参数包括结构化查询语言sql方言;所述根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列,包括:获取与所述sql方言对应的所述测试指令生成规则;根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

结合第一方面或第一方面的第一种实现方式,本发明在第一方面的第二种实现方式中,在所述根据所述测试参数和所述特定测试基准对应的测试指令生成规则,并生成测试指令序列之前,所述方法还包括:根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

结合第一方面、第一方面的第一种实现方式或第一方面的第二种实现方式,本发明在第一方面的第三种实现方式中,所述获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数,采用如下方式之一:通过图形用户界面,获取所述测试参数;或者从配置文件中读取所述测试参数。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式或第一方面的第三种实现方式,本发明在第一方面的第四种实现方式中,所述测试参数包括数据源参数,所述数据源参数包括数据库连接串;所述方法还包括:检测所述数据库连接串是否有效;若检测结果为否,则向所述用户提供指示所述数据库连接串无效的信息。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式或第一方面的第四种实现方式,本发明在第一方面的第五种实现方式中,所述方法还包括:若测试过程中出现错误,则获取并向所述用户提供错误信息。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式或第一方面的第五种实现方式,本发明在第一方面的第六种实现方式中,所述方法还包括:存储所述测试结果。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式或第一方面的第六种实现方式,本发明在第一方面的第七种实现方式中,所述方法还包括:清理所述测试结果。

第二方面,本发明实施例提供了一种大数据系统性能测试装置,包括:测试参数获取单元,用于获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;测试指令生成单元,用于根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;测试单元,用于根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;性能数据确定单元,用于根据测试结果,确定所述大数据系统的系统性能数据。

结合第二方面,本发明在第二方面的第一种实现方式中,所述测试参数包括结构化查询语言sql方言;所述测试指令生成单元包括:规则获取子单元,用于获取与所述sql方言对应的所述测试指令生成规则;指令生成子单元,用于根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

结合第二方面或第二方面的第一种实现方式,本发明在第二方面的第二种实现方式中,所述装置还包括:规则获取单元,用于根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

结合第二方面、第二方面的第一种实现方式或第二方面的第二种实现方式,本发明在第二方面的第三种实现方式中,所述测试参数获取单元,具体用于通过图形用户界面,获取所述测试参数。

结合第二方面、第二方面的第一种实现方式或第二方面的第二种实现方式,本发明在第二方面的第四种实现方式中,所述测试参数获取单元,具体用于从配置文件中读取所述测试参数。

所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,所述大数据系统性能测试装置的结构中包括处理器和存储器,所述存储器用于存储支持所述大数据系统性能测试装置执行上述第一方面中所述大数据系统性能测试方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述大数据系统性能测试装置还可以包括通信接口,用于所述大数据系统性能测试装置与其他设备或通信网络通信。

第三方面,本发明实施例提供了一种计算机存储介质,用于储存所述大数据系统性能测试装置所用的计算机软件指令,其包含用于执行上述第一方面中所述大数据系统性能测试方法为所述大数据系统性能测试装置所涉及的程序。

本发明实施例提供的大数据系统性能测试方法及装置,通过获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;根据测试结果,确定所述大数据系统的系统性能数据。采用本发明实施例提供的技术方案,使得自动化地测试大数据系统性能,从而有效减少测试时间、提高测试效率。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

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

图1示出了根据本发明一个实施例的大数据系统性能测试方法流程示意图;

图2示出了根据本发明一个实施例的大数据系统性能测试装置的框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

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

为了便于理解本发明的技术方案,下面首先对提出本发明涉及的相关概念及技术作简要说明。

所述测试基准(benchmark)是一个评价方式,在整个计算机领域有着长期的应用。测试基准在大数据领域应用最成功的就是性能测试,基于tpc发布的大数据与虚拟化测试基准(tpc-h、tpc-c和tpc-ds等),可测试大数据系统的执行时间、传输速度、吞吐量、资源占用率等性能指标。

以tpc-h为例,它是一个决策支持的基准,由一系列面向商务应用的查询和并行数据修改组成。基准里选择的查询和组成数据库的数据在商业上都具有广泛的代表性并且易于实现。

不同的测试基准涉及对数据库的不同操作应用。例如,tpc-h基准主要涉及联机分析处理(oltp,on-lineanalyticalprocessing)方面的应用,olap是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。再例如,tpc-c主要涉及联机事务处理(oltp,on-linetransactionprocessing)方面的应用,oltp是传统的关系型数据库的主要应用,主要是基本的,日常的事务处理,如银行交易。再例如,tpc-ds既涉及oltp又涉及olap。

所述大数据系统包括分布式的大数据查询引擎集群,如greenplum,implala,trafodion,hawq等。

请参考图1,其为本发明的第一实施例提供的一种大数据系统性能测试方法的流程示意图。所述大数据系统性能测试方法包括如下步骤:

步骤101,获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数。

所述测试参数可以是测试基准包括的测试指令的指令参数,如tpc-ds基准中的dsgen指令相关的指令参数datasize(数据规模),该参数用于指示产生相应大小的用作压测查询的数据。

所述测试参数还可以包括:数据源参数,数据库名称、用户名和密码等。所述数据源参数可包括数据源名称、数据库连接串(如jdbc:postgresql://ip:port/postgres)、数据库驱动程序(如org.postgresql.driver)等。当所述测试参数包括数据库连接串时,本发明实施例提供的方法在本步骤101之后,还可包括如下步骤:检测所述数据库连接串是否有效;若检测结果为否,则向所述用户提供指示所述数据库连接串无效的信息。

所述测试参数还可以包括测试基准的类型,如,tpc-h、tpc-c和tpc-ds等。本发明实施例提供的方法,根据测试基准的类型这个测试参数可自动产生该基准相关的测试指令。

所述测试参数还可包括结构化查询语言sql方言(又称为sql语法标准),如,netezza、oracle、ansi或db2等。本发明实施例提供的方法,根据sql方言这个测试参数可自动产生该方言的sql语句。

需要说明的是,不同的测试基准对应不同的测试参数,如,tpc-c基准包括数据仓库数量、终端数量等参数,而tpc-ds并不包括这些参数。

本步骤101可采用如下方式实现:通过图形用户界面,获取所述测试参数,即用户可以在图形界面上进行输入设置,本发明实施例提供的方法在通过图形用户界面获取到所述测试参数后,就可以进入到下一步骤102根据获得的参数生成测试指令。具体实施时,本发明实施例提供的方法在通过图形用户界面获取到所述测试参数后,可将这些参数存储在配置文件中。

本步骤101也可采用如下方式实现:从配置文件中读取所述测试参数,即:用户可以直接使用文本编辑器对配置文件进行编辑,设置相关的测试参数,本发明实施例提供的方法可读取该配置文件,从中获取所述测试参数。

所述配置文件的文件格式可以是xml(extensiblemarkuplanguage可扩展标记语言)文件格式、json(javascriptobjectnotation,js对象标记)轻量级的数据交换格式或文本格式。

在获取到所述测试参数后,就可以进入到下一步骤102根据获得的测试参数生成测试指令。

步骤102,根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列。

所述测试指令与所述测试基准相关,不同的测试基准涉及不同的测试指令。因此,要生成与用户指定的测试基准对应的测试指令序列,首先需要获取所述测试基准对应的测试指令生成规则,例如,tpc-ds基准中dsgen指令的生成规则可以是:“dsgen”+datasize,该规则中字符串“dsgen”为dsgen指令的指令名,datasize为用于指示数据规模的参数名,datasize参数的参数值通过步骤101确定。

所述测试指令可包括数据准备指令、数据库创建指令、数据表创建指令、数据导入指令和大数据系统性能测试指令,通过所述性能测试指令可完成复杂的查询、数据更新等测试内容。

具体实施时,可根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

不同的sql方言对应不同形式的sql语句,当所述测试参数包括sql方言时,需要生成与用户指定的sql方言对应的sql语句;这种情况下,本步骤102可包括如下具体步骤:获取与所述sql方言对应的所述测试指令生成规则;根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

在本实施例中,生成的所述测试指令序列包括如下测试指令:

shdata_gen.sh//生成数据

shsql_gen.sh//生成sql语句

shload.sh//建库、建表(包括外部表)、加载数据

shtpch.sh//系统性能测试

在生成所述测试指令序列后,就可以进入下一步骤103对大数据系统进行性能测试。

步骤103,根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令。

所述测试指令序列指示了对大数据系统进行性能测试时,各个测试指令的执行顺序。对大数据系统进行性能测试时,需要根据测试指令的执行顺序,依次执行各个测试指令。

在测试过程中如果出现错误,本发明实施例提供的方法可获取错误信息,并可通过图形用户界面向所述用户提供错误信息,以供用户查看分析用。

在测试过程中,可将测试结果存储在文件系统中作为日志数据,以备用户查看分析用。

步骤104,根据测试结果,确定所述大数据系统的系统性能数据。

在对大数据系统进行性能测试后,即可得到测试结果。根据这些测试结果,即可确定测试基准的各项指标,即所述大数据系统的系统性能数据,例如,系统性能数据为每分钟商业事务的吞吐量等。

所述测试结果可包括执行本发明实施例提供的方法的装置在测试的不同阶段的各种信息,还可包括被测的所述大数据系统在测试的不同阶段的各种信息。例如,在数据准备阶段出现错误,所述装置会输出错误日志log给用户,所述装置在测试过程中也会采集一些关键数据,如在数据准备成功后,会给用户返回一个成功信息,如状态succesess,status:0。其中所述关键数据也可包括用户指定的所述测试参数,如数据规模,sql方言,数据库名称,数据库的驱动信息等。

例如,所述测试结果如表1所示:

表1、测试结果

在确定所述大数据系统的系统性能数据之后,可清理所述测试结果,以节省磁盘空间。

从上述实施例可以看出,本发明实施例提供的大数据系统性能测试方法,通过获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;根据测试结果,确定所述大数据系统的系统性能数据。采用本发明实施例提供的方法,使得自动化地测试大数据系统性能,从而有效减少测试时间、提高测试效率。

与本发明的一种大数据系统性能测试方法相对应,本发明还提供了一种大数据系统性能测试装置。

如图2所示,所述大数据系统性能测试装置包括:测试参数获取单元201,用于获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;测试指令生成单元202,用于根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;测试单元203,用于根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;性能数据确定单元204,用于根据测试结果,确定所述大数据系统的系统性能数据。

可选的,所述测试参数包括结构化查询语言sql方言;

所述测试指令生成单元202包括:

规则获取子单元,用于获取与所述sql方言对应的所述测试指令生成规则;

指令生成子单元,用于根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

可选的,所述装置还包括:

规则获取单元,用于根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

可选的,所述测试参数获取单元201,具体用于通过图形用户界面,获取所述测试参数。

可选的,所述测试参数获取单元201,具体用于从配置文件中读取所述测试参数。

从上述实施例可以看出,本发明实施例提供的装置,使得用户无需了解装置的内部结构,直接通过图形用户界面或在配置文件中输入测试参数即可进行测试操作;这种处理方式,使得所述装置具有较高的可移植性,可以在不同的分布式查询引擎上应用,如greenplum,implala,trafodion,hawq等大数据查询引擎集群中。

在一个可能的设计中,所述大数据系统性能测试装置的结构中包括处理器和存储器,所述存储器用于存储支持所述大数据系统性能测试装置执行上述第一方面中所述大数据系统性能测试方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。

所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行。

所述处理器用于:获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;根据测试结果,确定所述大数据系统的系统性能数据。

本发明实施例提供了一种计算机存储介质,用于储存所述大数据系统性能测试装置所用的计算机软件指令,其包含用于执行上述第一方面中所述大数据系统性能测试方法为所述大数据系统性能测试装置所涉及的程序。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

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

本发明公开a1、一种大数据系统性能测试方法,包括:

获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;

根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;

根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;

根据测试结果,确定所述大数据系统的系统性能数据。

a2、如a1所述的方法中,所述测试参数包括结构化查询语言sql方言;

所述根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列,包括:

获取与所述sql方言对应的所述测试指令生成规则;

根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

a3、如a2所述的方法,在所述根据所述测试参数和所述特定测试基准对应的测试指令生成规则,并生成测试指令序列之前,所述方法还包括:

根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

a4、如a3所述的方法,所述获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数,采用如下方式之一:

通过图形用户界面,获取所述测试参数;或者

从配置文件中读取所述测试参数。

a5、如a4所述的方法,所述测试参数包括数据源参数,所述数据源参数包括数据库连接串;

所述方法还包括:

检测所述数据库连接串是否有效;

若检测结果为否,则向所述用户提供指示所述数据库连接串无效的信息。

a6、如a5所述的方法,所述方法还包括:

若测试过程中出现错误,则获取并向所述用户提供错误信息。

a7、如a6所述的方法,所述方法还包括:

存储所述测试结果。

a8、如a7所述的方法,所述方法还包括:

清理所述测试结果。

a9、如a1-8中任一项所述的方法,所述测试基准包括:tpc-h、tpc-c、benchmarksql或tpc-ds。

a10、如a1-8中任一项所述的方法,所述大数据系统包括分布式的大数据查询引擎集群。

a11、如a1-8中任一项所述的方法,所述测试参数包括以下参数的至少一项:

结构化查询语言sql方言,数据源参数,数据库名称、用户名和密码,数据规模。

a12、如a1-8中任一项所述的方法,所述测试指令包括数据准备指令、数据库创建指令、数据表创建指令、数据导入指令和性能测试指令。

本发明还公开了b13、一种大数据系统性能测试装置,包括:

测试参数获取单元,用于获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;

测试指令生成单元,用于根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;

测试单元,用于根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;

性能数据确定单元,用于根据测试结果,确定所述大数据系统的系统性能数据。

b14、如b13所述的装置,所述测试参数包括结构化查询语言sql方言;

所述测试指令生成单元包括:

规则获取子单元,用于获取与所述sql方言对应的所述测试指令生成规则;

指令生成子单元,用于根据所述测试参数和所述与所述sql方言对应的所述测试指令生成规则,生成所述测试指令序列。

b15、如b14所述的装置,还包括:

规则获取单元,用于根据预设的测试基准与测试指令生成规则之间的对应关系集,获取所述测试基准对应的测试指令生成规则。

b16、如b15所述的装置,所述测试参数获取单元,具体用于通过图形用户界面,获取所述测试参数。

b17、如b16所述的装置,所述测试参数获取单元,具体用于从配置文件中读取所述测试参数。

本发明还公开了c18、一种电子设备,包括存储器和处理器;其中,

所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行;

所述处理器用于:获取用户指定的用于基于测试基准针对大数据系统进行系统性能测试的测试参数;根据所述测试参数和所述测试基准对应的测试指令生成规则,生成测试指令序列;根据所述测试指令序列中的指令顺序,针对所述大数据系统执行各个测试指令;根据测试结果,确定所述大数据系统的系统性能数据。

本发明还公开了d19、一种计算机存储介质,所述计算机存储介质存储有一条或多条计算机指令,所述计算机指令被执行时实现如a1-12任一项所述的方法。

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