一种自动触发抓包系统及方法
【专利摘要】本发明公开了一种自动触发抓包系统及方法,自动触发抓包系统包括复数个客户端,所述客户端用以执行相应的测试,每个所述客户端包括多个线程,每个线程对应一预设代码及相应的预设抓取时间;一服务器,分别与所述复数个客户端连接,提供复数个不同的所述预设代码,所述服务器用以监测每个所述客户端的测试代码,当所述测试代码为所述预设代码时,所述服务器控制所述测试代码对应的所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述客户端在所述抓取时间结束后关闭所述线程。
【专利说明】
一种自动触发抓包系统及方法
技术领域
[0001 ]本发明涉及自动化测试领域,尤其涉及一种应用于自动化测试集成环境中的自动触发抓包系统及方法。
【背景技术】
[0002]在现有的自动化测试集成环境中测试时,在初始化时启动抓包服务,在测试结束后停止抓包服务。若被测设备出现故障时,虽然获取了整个测试过程中的所有交互报文,但是在海量的报文当中获取发生故障时的报文信息是很困难的,不利于故障的定位。
【发明内容】
[0003]针对现有的抓包服务存在的上述问题,现提供一种旨在实现可在自动化测试集成环境中自动触发抓取错误报文的,提供故障定位效率的自动触发抓包系统及方法。
[0004]具体技术方案如下:
[0005]—种自动触发抓包系统,包括
[0006]复数个客户端,所述客户端用以执行相应的测试,每个所述客户端包括多个线程,每个线程对应一预设代码及相应的预设抓取时间;
[0007]—服务器,分别与所述复数个客户端连接,提供复数个不同的所述预设代码,所述服务器用以监测每个所述客户端的测试代码,当所述测试代码为所述预设代码时,所述服务器控制所述测试代码对应的所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述客户端在所述抓取时间结束后关闭所述线程。
[0008]优选的,所述服务器包括:
[0009]—监测单元,用以监测所述复数个客户端的复数个所述测试代码;
[0010]—存储单元,用以存储复数个不同的所述预设代码;
[0011]—识别单元,分别连接所述监测单元和所述存储单元,用以识别每个所述测试代码是否为所述预设代码;
[0012]—处理单元,连接所述识别单元,当所述测试代码为所述预设代码时,所述处理单元用以向所述测试代码对应的所述客户端发送控制指令,以控制所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述抓取时间结束后所述客户端关闭所述线程。
[0013]优选的,所述客户端用以在所述抓取时间结束后将抓取的所述报文保存为PCAP格式。
[0014]优选的,所述客户端中的所述预设代码对应的所述线程用以建立所述预设代码对应的所述客户端与所述服务器之间的处于初始状态的会话通道;所述服务器将开始指令发送至所述客户端时,所述会话通道由所述初始状态转换为激活状态;所述客户端执行抓取报文的操作时,所述会话通道由所述激活状态转换为等待状态;所述抓取时间结束后,所述会话通道由所述等待状态转换为关闭状态,所述线程关闭。
[0015]优选的,所述会话通道处于所述等待状态时,所述客户端用以定时发送心跳报文至所述服务器。
[0016]一种自动触发抓包方法,应用如上述的自动触发抓包系统,包括:
[0017]所述服务器用以监测每个所述客户端的测试代码,当所述测试代码为所述预设代码时,所述服务器控制所述测试代码对应的所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述客户端在所述抓取时间结束后关闭所述线程。
[0018]优选的,包括下述步骤:
[0019]S1.所述服务器监测所述复数个客户端的复数个所述测试代码;
[0020]S2.所述服务器识别每个所述测试代码是否为所述预设代码;
[0021]S3.当所述测试代码为所述预设代码时,所述服务器用以向所述测试代码对应的所述客户端发送控制指令,以控制所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作;
[0022]S4.所述抓取时间结束后所述客户端关闭所述线程。
[0023]优选的,所述客户端用以在所述抓取时间结束后将抓取的所述报文保存为PCAP格式。
[0024]优选的,在所述步骤S3中所述客户端中的所述预设代码对应的所述线程用以建立所述预设代码对应的所述客户端与所述服务器之间的处于初始状态的会话通道;所述服务器将开始指令发送至所述客户端时,所述会话通道由所述初始状态转换为激活状态;所述客户端执行抓取报文的操作时,所述会话通道由所述激活状态转换为等待状态;所述抓取时间结束后,所述会话通道由所述等待状态转换为关闭状态,所述线程关闭。
[0025]优选的,所述会话通道处于所述等待状态时,所述客户端用以定时发送心跳报文至所述服务器。
[0026]上述技术方案的有益效果:
[0027]自动触发抓包系统通过采用监测客户端测试代码的方式获取错误代码从而启客户端中相应的线程触发抓取报文操作,并在设定的时间内停止抓取报文关闭该线程,实现了可在客户端出现故障时快速获取故障信息,对故障进行定位,定位的效率高;
[0028]自动触发抓包方法支持自动触发抓包系统实现了快速故障定位的技术效果。
【附图说明】
[0029]图1为本发明所述的自动触发抓包系统的一种实施例的模块图;
[0030]图2为本发明所述的客户端与服务器之间会话通道状态转换原理图;
[0031 ]图3为本发明所述的自动触发抓包方法的一种实施例的方法流程图。
【具体实施方式】
[0032]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0034]下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0035]如图1所示,一种自动触发抓包系统,包括
[0036]复数个客户端I,客户端I用以执行相应的测试,每个客户端I包括多个线程,每个线程对应一预设代码及相应的预设抓取时间;
[0037]—服务器2,分别与复数个客户端I连接,提供复数个不同的预设代码,服务器2用以监测每个客户端I的测试代码,当测试代码为预设代码时,服务器2控制测试代码对应的客户端I启动与预设代码对应的线程在预设抓取时间内执行抓取报文的操作,客户端I在抓取时间结束后关闭线程。
[0038]进一步地,预设代码为测试Error Code(错误代码),可根据不同的Error Code设置不同的抓取时间。
[0039]在本实施例中,自动触发抓包系统采用Master(主盘)/Slave(从盘)框架,客户端I为被测设备。通过采用监测客户端I测试代码的方式获取错误代码从而启客户端I中相应的线程触发抓取报文操作,并在设定的时间内停止抓取报文关闭该线程,实现了可在客户端I出现故障时快速获取故障信息,对故障进行定位,故障定位的效率高。
[0040]在优选的实施例中,服务器2可包括:
[0041]一监测单元21,用以监测复数个客户端I的复数个测试代码;
[0042]一存储单元22,用以存储复数个不同的预设代码;
[0043]一识别单元23,分别连接监测单元21和存储单元22,用以识别每个测试代码是否为预设代码;
[0044]一处理单元24,连接识别单元23,当测试代码为预设代码时,处理单元24用以向测试代码对应的客户端I发送控制指令,以控制客户端I启动与预设代码对应的线程在预设抓取时间内执行抓取报文的操作,抓取时间结束后客户端I关闭线程。
[0045]在本实施例中,服务器2采用多线程状态转换实现控制出现错误代码的客户端I进行抓取报文的操作。当客户端I即被测设备出现故障时,监测的被测设备的日志输出或测试脚本的返回值为相应的Error Code,当监测到Error Code时,启动抓取报文的操作,根据不同的Error Code进行相应的延时,到达抓取时间后停止抓取报文的操作。
[0046]在优选的实施例中,客户端I用以在抓取时间结束后将抓取的报文保存为PCAP格式。
[0047]在本实施例中,报文保存为PCAP格式可方便还原被测设备出现问题时的情况,且容易获取报文交互之间的问题。
[0048]在优选的实施例中,客户端I中的预设代码对应的线程用以建立预设代码对应的客户端I与服务器2之间的处于初始状态的会话通道;服务器2将开始指令发送至客户端I时,会话通道由初始状态转换为激活状态;客户端I执行抓取报文的操作时,会话通道由激活状态转换为等待状态;抓取时间结束后,会话通道由等待状态转换为关闭状态,线程关闭。
[0049]如图2所示,在本实施例中,当客户端I与服务器2之间建立会话通道后,会话通道现处于初始(OPEN)状态;当客户端I接收到服务器2下发的开始指令后,会话通道由OPEN转换为激活(ALIVE)状态,在这个过程中如果有异常出现,会话通道立即回到OPEN状态;客户端I执行抓取报文的操作后,会话通道由ALIVE状态转换为等待(WAIT)状态,在这个过程中如果有异常出现,会话通道立即回到OPEN状态;当达到Error Code对应的抓取时间后,会话通道由WAIT状态转换为关闭(Close)状态,抓取报文的操作结束,线程关闭;直到下一次会话通道由Close状态转换为OPEN状态。
[0050]在优选的实施例中,会话通道处于等待状态时,客户端I用以定时发送心跳报文至服务器2。
[0051]在本实施例中,客户端I通过持续不断地发送心跳报文的方式告知服务器2保持该会话。
[0052]一种自动触发抓包方法,应用如上述的自动触发抓包系统,包括:
[0053]服务器2用以监测每个客户端I的测试代码,当测试代码为预设代码时,服务器2控制测试代码对应的客户端I启动与预设代码对应的线程在预设抓取时间内执行抓取报文的操作,客户端I在抓取时间结束后关闭线程。
[0054]在本实施例中,自动触发抓包方法可应用于持续集成测试环境中,通过判断客户端I是否出现Error Code的机制执行抓取报文的操作,由于持续集成测试的环境中会有多套自动化测试同时运行,当测试过程中出现了Error Code后,该机制会根据不同的ErrorCode调用相应的线程,当有多个Error Code出现时,可同时调用多个相应的线程,线程会通过会话通道机制启动抓取报文的操作。直到超时后线程结束,持续集成环境继续进行后续的测试。
[0055]如图3所示,在优选的实施例中,包括下述步骤:
[0056]S1.服务器2监测复数个客户端I的复数个测试代码;
[0057]S2.服务器2识别每个测试代码是否为预设代码;
[0058]S3.当测试代码为预设代码时,服务器2用以向测试代码对应的客户端I发送控制指令,以控制客户端I启动与预设代码对应的线程在预设抓取时间内执行抓取报文的操作;
[0059]S4.抓取时间结束后客户端I关闭线程。
[0060]在本实施例中,服务器2采用多线程状态转换实现控制出现错误代码的客户端I进行抓取报文的操作。当客户端I即被测设备出现故障时,监测的被测设备的日志输出或测试脚本的返回值为相应的Error Code,当监测到Error Code时,启动抓取报文的操作,根据不同的Error Code进行相应的延时,到达抓取时间后停止抓取报文的操作。
[0061 ]在优选的实施例中,客户端I用以在抓取时间结束后将抓取的报文保存为PCAP格式。
[0062]在本实施例中,报文保存为PCAP格式方便还原被测设备出现问题时的情况,且容易获取报文交互之间的问题。
[0063]如图2所示,在优选的实施例中,在步骤S3中客户端I中的预设代码对应的线程用以建立预设代码对应的客户端I与服务器2之间的处于初始状态的会话通道;服务器2将开始指令发送至客户端I时,会话通道由初始状态转换为激活状态;客户端I执行抓取报文的操作时,会话通道由激活状态转换为等待状态;抓取时间结束后,会话通道由等待状态转换为关闭状态,线程关闭。
[0064]进一步地,会话通道处于等待状态时,客户端I用以定时发送心跳报文至服务器2。
[0065]在本实施例中,以一个线程的抓取报文的操作为例:服务器2和客户端I进行通信,触发客户端I执行抓取报文的操作。当在测试过程中出现了Error Code后,服务器2和客户端I之间建立一个会话通道,建立会话通道的同时服务器2会发送开始指令告知客户端I可以进行抓取报文的操作,这时客户端I启动该会话通道,开始抓取报文,并将该会话通道的状态转变为Alive状态。在抓取报文过程中会话通道一直保持,在会话过程中,客户端I会持续不断地发送心跳报文告知服务器2保持该会话。在Master/Slave的机制中,会根据不同的Error Code定义不同的抓取时间来决定抓取报文的时长,服务器2在超时后会发出停止指令,客户端I停止抓取报文的操作,同时结束会话,并将会话通道状态转变为Close状态。如果同时有多个线程,服务器2可同时进行多个抓取报文的操作,互相不占用资源。
[0066]本发明为了保证抓取报文的准确性,在服务器2中会根据ErrorCode的不同设置不同的抓取时间,当超过抓取时间后,停止抓取报文的操作,并将抓取报文抓保存为PCAP格式,关闭相应的线程。本发明是基于Master/Slave机制进行命令行的传递来控制抓取报文以及停止抓取报文的操作的。由于持续集成自动化测试是一个连续的测试过程,因此加入了多线程机制控制多次实施抓包操作,从而实现了按照Error Code去触发抓取报文的操作。
[0067]以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
【主权项】
1.一种自动触发抓包系统,其特征在于,包括 复数个客户端,所述客户端用以执行相应的测试,每个所述客户端包括多个线程,每个线程对应一预设代码及相应的预设抓取时间; 一服务器,分别与所述复数个客户端连接,提供复数个不同的所述预设代码,所述服务器用以监测每个所述客户端的测试代码,当所述测试代码为所述预设代码时,所述服务器控制所述测试代码对应的所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述客户端在所述抓取时间结束后关闭所述线程。2.如权利要求1所述的自动触发抓包系统,其特征在于,所述服务器包括: 一监测单元,用以监测所述复数个客户端的复数个所述测试代码; 一存储单元,用以存储复数个不同的所述预设代码; 一识别单元,分别连接所述监测单元和所述存储单元,用以识别每个所述测试代码是否为所述预设代码; 一处理单元,连接所述识别单元,当所述测试代码为所述预设代码时,所述处理单元用以向所述测试代码对应的所述客户端发送控制指令,以控制所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述抓取时间结束后所述客户端关闭所述线程。3.如权利要求1所述的自动触发抓包系统,其特征在于,所述客户端用以在所述抓取时间结束后将抓取的所述报文保存为PCAP格式。4.如权利要求1所述的自动触发抓包系统,其特征在于,所述客户端中的所述预设代码对应的所述线程用以建立所述预设代码对应的所述客户端与所述服务器之间的处于初始状态的会话通道;所述服务器将开始指令发送至所述客户端时,所述会话通道由所述初始状态转换为激活状态;所述客户端执行抓取报文的操作时,所述会话通道由所述激活状态转换为等待状态;所述抓取时间结束后,所述会话通道由所述等待状态转换为关闭状态,所述线程关闭。5.如权利要求4所述的自动触发抓包系统,其特征在于,所述会话通道处于所述等待状态时,所述客户端用以定时发送心跳报文至所述服务器。6.一种自动触发抓包方法,其特征在于,应用如权利要求1-5所述的自动触发抓包系统,包括: 所述服务器用以监测每个所述客户端的测试代码,当所述测试代码为所述预设代码时,所述服务器控制所述测试代码对应的所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作,所述客户端在所述抓取时间结束后关闭所述线程。7.如权利要求6所述的自动触发抓包方法,其特征在于,包括下述步骤: 51.所述服务器监测所述复数个客户端的复数个所述测试代码; 52.所述服务器识别每个所述测试代码是否为所述预设代码; 53.当所述测试代码为所述预设代码时,所述服务器用以向所述测试代码对应的所述客户端发送控制指令,以控制所述客户端启动与所述预设代码对应的所述线程在所述预设抓取时间内执行抓取报文的操作; 54.所述抓取时间结束后所述客户端关闭所述线程。8.如权利要求6所述的自动触发抓包方法,其特征在于,所述客户端用以在所述抓取时间结束后将抓取的所述报文保存为PCAP格式。9.如权利要求7所述的自动触发抓包方法,其特征在于,在所述步骤S3中所述客户端中的所述预设代码对应的所述线程用以建立所述预设代码对应的所述客户端与所述服务器之间的处于初始状态的会话通道;所述服务器将开始指令发送至所述客户端时,所述会话通道由所述初始状态转换为激活状态;所述客户端执行抓取报文的操作时,所述会话通道由所述激活状态转换为等待状态;所述抓取时间结束后,所述会话通道由所述等待状态转换为关闭状态,所述线程关闭。10.如权利要求9所述的自动触发抓包方法,其特征在于,所述会话通道处于所述等待状态时,所述客户端用以定时发送心跳报文至所述服务器。
【文档编号】H04L12/24GK106059849SQ201610302195
【公开日】2016年10月26日
【申请日】2016年5月9日
【发明人】裴瑞凌
【申请人】上海斐讯数据通信技术有限公司