一种数据写入文件系统的自动测试方法及装置的制造方法

文档序号:10552995阅读:383来源:国知局
一种数据写入文件系统的自动测试方法及装置的制造方法
【专利摘要】本发明公开了一种数据写入文件系统的自动测试方法及装置,其中,该方法包括:读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中;读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中;计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。由此,在为了满足客户对路数的需求改变对应参数后,通过模拟数据以恒定带宽写入分布式文件系统的场景,利用上述步骤自动实现对于产品的测试,并通过判断实际延迟是否在预设延迟范围内得出产品是否符合要求的结果,从而大大降低了人工成本。
【专利说明】
一种数据写入文件系统的自动测试方法及装置
技术领域
[0001]本发明涉及文件系统软件技术领域,更具体地说,涉及一种数据写入文件系统的自动测试方法及装置。
【背景技术】
[0002]分布式文件系统的应用逐年增多,且已有成型产品进入市场应对客户需求。而对于视频行业客户使用分布式文件系统的产品,其应用是以恒定读写为主,在分布式文件系统上表现为多进程文件同时向分布式文件系统中以恒定带宽写入数据。
[0003]在上述产品应用中,客户通常对产品可以支持的路数,即能够同时向分布式文件系统中写入数据的进程文件的数量以及产品的读写性能具有一定的要求,因此,需要对产品进行修正以满足客户需求。但是,在对产品进行修正的过程中,为了满足客户对路数的需求改变对应参数后,需要对产品进行测试,以判断参数改变后产品的读写性能是否能够达到要求。而现有技术中通常由工作人员手动对产品进行测试并由工作人员判断产品的读写性能是否达到要求,因此,需要的人工成本较高。
[0004]综上所述,现有技术中用于对产品进行测试的方法存在人工成本较高的问题。

【发明内容】

[0005]本发明的目的是提供一种数据写入文件系统的自动测试方法及装置,以自动完成对产品的测试,无需人工介入,从而大大降低了人工成本。
[0006]为了实现上述目的,本发明提供如下技术方案:
[0007]—种数据写入文件系统的自动测试方法,包括:
[0008]读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中;
[0009]读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中;
[0010]计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。
[0011]优选的,还包括:
[0012]获取外界输入的清空信号,并对所述缓存中包含的数据进行清空。
[0013]优选的,还包括:
[0014]输出测试报告,所述测试报告包含有所述实际延迟。
[0015]优选的,所述将读取到的数据写入到分布式文件系统中,包括:
[0016]将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将所述多个数据块依次写入到所述分布式文件系统中。
[0017]优选的,将读取到的数据以恒定带宽写入缓存中,包括:
[0018]将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,所述多个缓存块的缓存编号为连续的;
[0019]对应的,读取所述缓存中的数据,包括:
[0020]读取所述多个缓存块,并依据每个所述缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。
[0021]—种数据写入文件系统的自动测试装置,包括:
[0022]写模块,用于读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中;
[0023]读模块,用于读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中;
[0024]计时模块,用于计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。
[0025]优选的,还包括:
[0026]清空模块,用于获取外界输入的清空信号,并对所述缓存中包含的数据进行清空。
[0027]优选的,还包括:
[0028]输出模块,用于输出测试报告,所述测试报告包含有所述实际延迟。
[0029]优选的,所述读模块包括:
[0030]第一读单元,用于将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将所述多个数据块依次写入到所述分布式文件系统中。
[0031 ]优选的,所述写模块包括:
[0032]写单元,用于将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,所述多个缓存块的缓存编号为连续的;
[0033]对应的,所述读模块包括:
[0034]第二读单元,用于读取所述多个缓存块,并依据每个所述缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。
[0035]本发明提供了一种数据写入文件系统的自动测试方法及装置,其中,该方法包括:读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中;读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中;计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。通过本申请公开的上述技术特征,在为了满足客户对路数的需求改变对应参数后,无需由工作人员手动对产品进行测试及由工作人员判断产品的读写性能是否达到要求,而是通过模拟数据以恒定带宽写入分布式文件系统的场景,利用上述步骤自动实现对于产品的测试,并通过判断实际延迟是否在预设延迟范围内得出产品是否符合要求的结果,从而大大降低了人工成本。
【附图说明】
[0036]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037]图1为本发明实施例提供的一种数据写入文件系统的自动测试方法的流程图;
[0038]图2为本发明实施例提供的一种数据写入文件系统的自动测试装置的结构示意图。
【具体实施方式】
[0039]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040]请参阅图1,其示出了本发明实施例提供的一种数据写入文件系统的自动测试方法的流程图,可以包括以下步骤:
[0041]Sll:读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中。
[0042]需要说明的是,视频行业进行视频录制应用的关键在于多路摄像头以恒定的带宽记录图像数据,而在分布式文件系统上表现为多进程文件同时向分布式文件系统中以恒定带宽写入数据,其中,恒定带宽表示带宽恒定且稳定。对应的,本发明即为模拟向分布式文件系统中以恒定带宽写入数据的应用场景,具体可以为视频行业视频录制的应用场景,对应的,外部文件可以为视频文件,也可以为其他要求以恒定带宽记录数据,即要求实现恒定读写数据的应用场景,均在本发明的保护范围之内。具体可以为,在为了增加向分布式文件系统中同时写入数据的路数而改变相关参数后,通过本发明测试参数改变后分布式文件系统是否能够达到要求;其中,路数即为同时向分布式文件系统中写入数据的进程数量,在本申请中,一路可以理解为一组线程,该组线程包括读取外部文件中的数据、并将读取到的数据写入缓存中的线程,以及读取缓存中的数据、并将读取到的数据写入到分布式文件系统中的线程。
[0043]S12:读取缓存中的数据,并将读取到的数据写入到分布式文件系统中。
[0044]S13:计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果实际延迟处于预设延迟范围内,则测试通过。
[0045]需要说明的是,将数据开始写入到缓存的时刻即为开始时刻,具体的,可以在将数据写入缓存之前并马上将开始写入缓存时发送timer_Cond信号,以开始计时,将数据写入到分布式文件系统完成的时刻即为结束时刻,开始时刻与结束时刻之间的时间段即为实际延迟,即延迟指的是从将数据写入缓存的开始时刻起到落盘的时间。预设延迟范围可以根据实际需要进行确定,如果实际延迟在预设延迟范围内,说明测试通过,分布式文件系统的读写性能符合要求,否则,则说明测试未通过,分布式文件系统的读写性能不符合要求。
[0046]通过本申请公开的上述技术特征,在为了满足客户对路数的需求改变对应参数后,无需由工作人员手动对产品进行测试及由工作人员判断产品的读写性能是否达到要求,而是通过模拟数据以恒定带宽写入分布式文件系统的场景,利用上述步骤自动实现对于产品的测试,并通过判断实际延迟是否在预设延迟范围内得出产品是否符合要求的结果,从而大大降低了人工成本。进而通过上述测试,提高分布式文件系统针对以恒定带宽写入数据的应用场景的可靠性和多路支持。
[0047]另外需要说明的是,在上述方法的实现过程中,需要合理控制步骤Sll和步骤S12的执行时间,才能够保证方法的顺利实现,通常可以在步骤Sll完成之后,生成data_cond信号,以触发步骤S12的执行;也可以通过实时监控,当发现步骤S12需要执行但步骤Sll还未执行完,即缓存中并无数据可读时,控制步骤S12经过一定时间,待步骤Sll执行完毕后再执行;从而避免了步骤S12执行之时,缓存中无数据可读取,进而造成跳帧。即,通过合理控制步骤SI I和步骤S12的执行时间,能够避免跳帧。
[0048]本发明实施例提供的一种数据写入文件系统的自动测试方法,还可以包括:
[0049]获取外界输入的清空信号,并对缓存中包含的数据进行清空。
[0050]当出现错误,或者需要停止将数据由缓存读取并写入分布式文件系统中时,需要对缓存中的数据进行清空,以保证后续方法的顺利实现。此时,可以由工作人员发出清空信号,以清空缓存中包含的数据,也可以自动实现,如出现预设的错误时,可以自动清空缓存中的数据。
[0051]另外,在步骤Sll至步骤S13完成之后,还可以包括:
[0052]输出测试报告,测试报告包含有实际延迟。
[0053]需要说明的是,在本发明提供的上述方法中,可以利用丰富的传入参数,进而获取多维度的测试报告,当然,测试报告中不仅仅可以包括实际延迟,还可以包括根据实际需要设置输出的其他多项参数,从而方便工作人员对此次测试的分析,提高了其分析的准确性。
[0054]本发明实施例提供的一种数据写入文件系统的自动测试方法,将读取到的数据写入到分布式文件系统中,可以包括:
[0055]将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将多个数据块依次写入到分布式文件系统中。
[0056]其中,预设时长及预设尺寸可以根据实际需要进行设置,在将数据分割后,每写入到分布式文件系统中一个数据块,则可以记录以写入到分布式文件系统中的数据量的大小及对应时长,从而能够判断是否完成数据块的写入,避免遗漏数据块。
[0057]本发明实施例提供的一种数据写入文件系统的自动测试方法,将读取到的数据以恒定带宽写入缓存中,可以包括:
[0058]将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,多个缓存块的缓存编号为连续的。
[0059]该步骤对应的核心数据结构可以为:
[0060]typedef struct
[0061]{
[0062]uint64_t count;//写入的缓存块的总个数
[0063]int Ien;//—般为缓存块的大小
[0064]char*data;//
[0065]!block;
[0066]将数据写入缓存的不同区域中,形成多个缓存块,当然,也可以是先将数据分割成多个缓存块,再将其写入缓存的对应区域中,通常情况下,每个缓存块的大小是相同的,当然也可以根据实际需要进行其他设置,均在本发明的保护范围内。每个缓存块据具有对应的缓存编号,可以表示为“block的count”。
[0067]对应的,读取缓存中的数据,可以包括:
[0068]读取多个缓存块,并依据每个缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。
[0069]如果读取到的多个缓存块的缓存编号为连续的,则说明读取到的多个缓存块为连续的缓存块,由此,能够通过缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,进而确定读取到的缓存块是否为需要读取到的全部数据,如果是,则将读取到的数据写入分布式文件系统中,否则,则说明缓存块存在遗漏,则通过输出错误提示信息等方式发出读取失败的信号,从而能够有效避免缓存块遗漏,即数据读取不完整的情况发生。另外,还可以记录当前写入缓存的缓存块的索引write_p0S,以供后期查询。
[0070]与上述方法相对应,本发明实施例还提供了一种数据写入文件系统的自动测试装置,如图2所示,可以包括:
[0071]写模块11,用于读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中;
[0072]读模块12,用于读取缓存中的数据,并将读取到的数据写入到分布式文件系统中;
[0073]计时模块13,用于计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果实际延迟处于预设延迟范围内,则测试通过。
[0074]需要说明的是,上述模块均可以通过线程来实现,即写模块可以为写线程,读模块可以为读线程,计时模块可以为计时线程。其中,计时线程默认运行时间参数设置为-1,如果运行时间参数设置为O,则上述装置一直运行,循环从外部文件读取数据并最终将数据写入分布式文件系统中。从而通过读写线程配合,更好的模拟将数据以恒定带宽写入分布式文件系统的应用场景,并且,通过计时线程,保证了上述装置的智能性。
[0075]另外,上述装置还可以包括初始化模块,初始化模块用于在上述模块工作之间进行初始化,具体来说,初始化主要包括:
[0076]1、初始化条件变量和互斥锁;
[0077]2、初始化缓存,缓存区域的数目为b1ck_num,每个缓存区域的大小为b1ck_size ;
[0078]3、启动读线程,让其阻塞在pthread_cond_wait;
[0079]4、启动计时线程,让其阻塞在pthread_cond_wait;
[0080]5、Sleep预设时间,如5秒,启动写线程,由写线程从一个外部文件读数据(比如一个较大的视频文件)。
[0081]本发明实施例提供的一种数据写入文件系统的自动测试装置,还可以包括:
[0082]清空模块,用于获取外界输入的清空信号,并对缓存中包含的数据进行清空。
[0083]另外,上述装置还可以包括主线程,主线程负责读线程、写线程及计时线程的启动和停止;在上述装置需要进行自动释放缓存时,主线程还负责缓存的清空。
[0084]本发明实施例提供的一种数据写入文件系统的自动测试装置,还可以包括:
[0085]输出模块,用于输出测试报告,测试报告包含有实际延迟。
[0086]本发明实施例提供的一种数据写入文件系统的自动测试装置,读模块可以包括:
[0087]第一读单元,用于将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将多个数据块依次写入到分布式文件系统中。
[0088]本发明实施例提供的一种数据写入文件系统的自动测试装置,写模块可以包括:
[0089]写单元,用于将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,多个缓存块的缓存编号为连续的;
[0090]对应的,读模块包括:
[0091]第二读单元,用于读取多个缓存块,并依据每个缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。
[0092]需要说明的是,上述模块及单元均可以利用线程来实现,本发明实施例中,可以待写线程将全部缓存块写入缓存中读线程再依次读取,也可以写线程每写入一个缓存块读线程则读取该缓存块,此时,数据块是对缓存块分割得到的。以写线程每写入一个缓存块读线程则读取该缓存块为例进行说明,在写线程将第一个缓存块写入缓存之前并马上开始写入缓存时发送timer_Cond信号,计时线程开始计时;每次写完一个缓存块之后,发送data_cond信号,读线程读取该缓存块并将其写入分布式文件系统。
[0093]另外,写线程需要根据最大允许延迟和缓存的总大小控制将数据写入缓存的速度,S卩sleep的时间。计算公式可以为:写入速度*最大允许延迟=缓存大小。且,写线程无需等待读线程,即不考虑读线程的读取位置和冲突。
[0094]具体来说,对应于本发明实施例提供的上述装置,为了得到多维的测试报告,传入参数可以包括以下设置:
[0095]buffer_size:-S缓存大小单位为MB默认为100
[0096]block_size:-b缓存块大小单位为KB默认为128
[0097]block_num:_n 缓存块个数
[0098]f ile_size:_s每个文件的大小单位为MB
[0099]f ile_time: -t每个文件的写入时长单位为秒
[0100](f ile_size和 f ile_time只能配置一个)
[0101 ] file_count:_c每个读线程所输出的最大文件数目
[0102]write_speed: -p 写入速度单位为MB/s
[0103]f ile_num:_n写入的文件数目
[0104]max_delay_time:_m允许最大延迟单位为毫秒
[0105]run_time:_Τ写入最大时长单位为秒默认为-1
[0106](如果不配置该参数,则装置始终运行,直到外部文件写完,即每个线程输出的文件数目为file_COunt;如果配置该参数的同时也配置了文件数目,则以rUn_time为准)
[0107]worker_thread:_w工作线程数目(即路数)默认为10[0? 08] f ile_path: _f读取外部文件的文件路径
[0109]OUtpUt_dir:-0输出的文件目录路径默认为写入到本装置所在的目录
[0110]本发明实施例提供的一种数据写入文件系统的自动测试装置的相关部分的说明请参见本发明实施例提供的一种数据写入文件系统的自动测试方法中对应部分的详细说明,在此不再赘述。
[0111]对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种数据写入文件系统的自动测试方法,其特征在于,包括: 读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中; 读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中; 计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。2.根据权利要求1所述的方法,其特征在于,还包括: 获取外界输入的清空信号,并对所述缓存中包含的数据进行清空。3.根据权利要求2所述的方法,其特征在于,还包括: 输出测试报告,所述测试报告包含有所述实际延迟。4.根据权利要求1所述的方法,其特征在于,所述将读取到的数据写入到分布式文件系统中,包括: 将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将所述多个数据块依次写入到所述分布式文件系统中。5.根据权利要求1至4任一项所述的方法,其特征在于,将读取到的数据以恒定带宽写入缓存中,包括: 将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,所述多个缓存块的缓存编号为连续的; 对应的,读取所述缓存中的数据,包括: 读取所述多个缓存块,并依据每个所述缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。6.一种数据写入文件系统的自动测试装置,其特征在于,包括: 写模块,用于读取外部文件中的数据,并将读取到的数据以恒定带宽写入缓存中; 读模块,用于读取所述缓存中的数据,并将读取到的数据写入到分布式文件系统中; 计时模块,用于计算数据以恒定带宽写入到缓存的开始时刻至将数据写入到分布式文件系统的结束时刻对应的实际延迟,如果所述实际延迟处于预设延迟范围内,则测试通过。7.根据权利要求6所述的装置,其特征在于,还包括: 清空模块,用于获取外界输入的清空信号,并对所述缓存中包含的数据进行清空。8.根据权利要求7所述的装置,其特征在于,还包括: 输出模块,用于输出测试报告,所述测试报告包含有所述实际延迟。9.根据权利要求6所述的装置,其特征在于,所述读模块包括: 第一读单元,用于将读取到的数据按照预设时长或者预设尺寸分割成多个数据块,并将所述多个数据块依次写入到所述分布式文件系统中。10.根据权利要求6至9任一项所述的方法,其特征在于,所述写模块包括: 写单元,用于将读取到的数据以恒定带宽写入缓存的多个区域中,形成多个缓存块,每个缓存块具有唯一的缓存编号,所述多个缓存块的缓存编号为连续的; 对应的,所述读模块包括: 第二读单元,用于读取所述多个缓存块,并依据每个所述缓存块的缓存编号判断读取到的多个缓存块是否为连续的缓存块,如果是,则读取成功。
【文档编号】G06F17/30GK105912639SQ201610217345
【公开日】2016年8月31日
【申请日】2016年4月8日
【发明人】范义波
【申请人】浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1