发明内容
针对相关技术中的上述问题,本发明提出一种集群远程通信测试方法以及***,能够模拟用户浏览器与集群客户端之间进行WebSocket通信的完整过程。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种集群远程通信测试方法,包括:
Jmeter客户端向服务端获取websocket连接令牌Token,websocket连接Token中包括登录用户的集群用户身份信息;
Jmeter客户端收到服务端返回的websocket连接Token之后,向服务端发起websocket连接请求,其中,websocket连接Token作为websocket连接请求的请求参数;
服务端响应于websocket连接请求而建立websocket连接并且向Jmeter客户端发送建立的websocket连接的通道ID和集群用户信息,
在Jmeter客户端发起登录集群客户端的HTTP请求之后,服务端根据集群用户信息发起集群用户登录指令;
服务端根据通道ID将集群客户端执行登录的执行结果返回至Jmeter客户端。
根据本发明的实施例,服务端还通过HTTP将登录结果返回给Jmeter客户端。
根据本发明的实施例,服务端包括web server和websocket server,其中,webserver向Jmeter客户端返回websocket连接Token,websocket server响应于websocket连接请求而建立websocket连接,并且由websocket server发起集群用户登录指令和返回执行结果。
根据本发明的实施例,在Jmeter客户端收到websocket连接Token之后,根据接收到的相应参数判断web server是否正确响应,如果正确则从相应参数中提取websocket连接Token。
根据本发明的另一方面,提供了一种集群远程通信测试***,包括Jmeter客户端、服务端和集群客户端,其中:Jmeter客户端向服务端获取websocket连接令牌Token,websocket连接Token中包括登录用户的集群用户身份信息;Jmeter客户端收到服务端返回的websocket连接Token之后,向服务端发起websocket连接请求,其中,websocket连接Token作为websocket连接请求的请求参数;服务端响应于websocket连接请求而建立websocket连接并且向Jmeter客户端发送建立的websocket连接的通道ID和集群用户信息,在Jmeter客户端发起登录集群客户端的HTTP请求之后,服务端根据集群用户信息发起集群用户登录指令;服务端根据通道ID将集群客户端执行登录的执行结果返回至Jmeter客户端。
根据本发明的实施例,服务端还通过HTTP将登录结果返回给Jmeter客户端。
根据本发明的实施例,服务端包括web server和websocket server,其中,webserver向Jmeter客户端返回websocket连接Token,websocket server响应于websocket连接请求而建立websocket连接,并且由websocket server发起集群用户登录指令和返回执行结果。
根据本发明的实施例,在Jmeter客户端收到websocket连接Token之后,根据接收到的相应参数判断web server是否正确响应,如果正确则从相应参数中提取websocket连接Token。
本发明通过Jmeter模拟用户浏览器与集群客户端进行交互,可以顺畅地模拟用户浏览器与集群客户端之间进行WebSocket通信的完整过程。在WebSocket通信建立这一复杂过程中,可单独监测各个步骤是否正常完成。达到了更加精确定位问题的效果。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
对于特定的集群客户端与用户浏览器通过WebSocket实时交互的过程,本发明提出一种可自动执行的测试方法。本发明提供的测试方法的测试的对象为特定的集群客户端与用户浏览器交互方法,该方法通过中间的服务端进行转发,并通过Websocket协议建立长连接,在经过服务端与集群客户端、服务端与用户浏览器的相互认证后,即可通过该连接传输数据。本发明提供的测试方法选用Jmeter(基于Java的压力测试工具)作为测试工具,用Jmeter模拟用户浏览器与集群客户端进行交互。图1是根据本发明实施例的集群远程通信测试方法的流程图。
首先需要说明的是,本发明的测试过程涉及的通信主体有用户浏览器、服务端和集群客户端。用户浏览器端登录的用户,在集群上会有其相应的集群用户。集群正常工作时,集群客户端与服务端之间存在建立完毕的WebSocket长连接。如图1所示,本发明的集群远程通信测试方法可以包括以下步骤:
S11,Jmeter客户端向服务端获取websocket连接Token(令牌),Token中包括登录用户的集群用户身份信息。
S12,Jmeter客户端收到服务端返回的Token之后,向服务端发起websocket连接请求,其中,Token作为websocket连接请求的请求参数;
S13,服务端响应于websocket连接请求而建立websocket连接并且向Jmeter客户端发送建立的websocket连接的通道ID和集群用户信息。其中,可以向Jmeter客户端发送Client ID(Client ID可简写为CID),通道ID和集群用户信息包含在CID中。这样,建立Jmeter客户端与服务端直接的WebSocket长连接。
S14,在Jmeter客户端发起登录集群客户端的HTTP请求之后,服务端根据集群用户信息发起集群用户登录指令;
S15,服务端根据通道ID将集群客户端执行登录的执行结果返回至Jmeter客户端。其中,可以采用Netty框架编写服务端和集群客户端。这样,建立了Jmeter客户端与集群客户端的WebSocket间接通信。
本发明的上述技术方案,通过Jmeter模拟用户浏览器与集群客户端进行交互,可以顺畅地模拟用户浏览器与集群客户端之间进行WebSocket通信的完整过程。在WebSocket通信建立这一复杂过程中,可单独监测各个步骤是否正常完成。达到了更加精确定位问题的效果。
图2是根据本发明另一实施例的集群远程通信测试方法的流程图。在图2示出的实施例中,服务端具体分为Web Server(服务器)和WebSocket Server两部分。在该实施例中,本发明的测试方法的具体流程为:
1.Jmeter客户端通过HTTP接口向服务端的Web Server获取WebSocket连接Token。Token中包含Jmeter客户端中登录用户相应的集群用户身份信息。
2.服务端的Web Server收到Jmeter客户端请求,在数据库中查询Jmeter客户端登录用户相应的集群用户,生成一串带有集群用户信息的Token,返回给Jmeter客户端。在Jmeter中,可以根据接收到的响应参数判断Web Server是否正确响应,如果判断WebServer正确,则可以在Jmeter中使用后置处理器-正则表达式提取器提取响应参数中的Token。
3.Jmeter客户端收到Web Server返回的WebSocket连接Token之后,向服务端的WebSocket Server发起WebSocket连接请求,并附带上一步2处提取的Token作为请求参数。
4.WebSocket Server在收到Jmeter客户端发送的WebSocket连接请求之后,对Token进行验证,验证通过后建立WebSocket连接,并向Jmeter客户端发送CID,CID中包含了WebSocket Server与Jmeter客户端建立的WebSocket连接的通道ID和集群用户信息。同样,在Jmeter客户端中,可以根据接收到的响应参数判断WebSocket Server是否正确响应,如果判断WebSocket Server正确,则可以在Jmeter中使用后置处理器-正则表达式提取器提取响应参数中的CID。
至此,Jmeter客户端与服务端直接的WebSocket长连接建立完成。
5.Jmeter客户端发起登录集群客户端的HTTP请求,附带上一步4处获取的CID。WebServer在接收到请求之后,在服务端内部传递消息给WebSocket Server。WebSocketServer接到消息,并向集群客户端发起CID中指定集群用户登录指令。
6.集群客户端执行登录,将执行结果通过WebSocket返回WebSocket Server。WebSocket Server根据CID中的与Jmeter客户端建立的WebSocket通道ID,通过这个指定的通道,将执行结果返回到Jmeter客户端。同样,在Jmeter中可根据接收到的响应参数判断集群客户端是否正确执行登录指令并返回结果。并且,在登录结果到达服务器端的同时,WebServer也通过HTTP将登录结果返回给Jmeter客户端。
至此,Jmeter客户端与集群客户端的WebSocket间接通信建立完成。
综上所述,本发明提供的测试方法可以顺畅地模拟用户浏览器与集群客户端之间进行WebSocket通信的完整过程。在WebSocket通信建立的复杂过程中,可单独监测各个步骤是否正常完成,从而达到了更加精确定位问题的效果。并且,本发明提供的测试方法的用例可集成到例如Jenkins等集成工具中,能够定时自动执行,实现了对这一功能的日常实时监测。
根据本发明的实施例,还提供了一种集群远程通信测试***,包括Jmeter客户端、服务端和集群客户端,其中:Jmeter客户端向服务端获取websocket连接Token,Token中包括登录用户的集群用户身份信息;Jmeter客户端收到服务端返回的Token之后,向服务端发起websocket连接请求,其中,Token作为websocket连接请求的请求参数;服务端响应于websocket连接请求而建立websocket连接并且向Jmeter客户端发送建立的websocket连接的通道ID和集群用户信息,在Jmeter客户端发起登录集群客户端的HTTP请求之后,服务端根据集群用户信息发起集群用户登录指令;服务端根据通道ID将集群客户端执行登录的执行结果返回至Jmeter客户端。
本发明提供的测试***可以顺畅地模拟用户浏览器与集群客户端之间进行WebSocket通信的完整过程。在WebSocket通信建立的复杂过程中,可单独监测各个步骤是否正常完成,从而达到了更加精确定位问题的效果。
根据本发明的实施例,服务端还通过HTTP将登录结果返回给Jmeter客户端。
根据本发明的实施例,服务端包括web server和websocket server,其中,webserver向Jmeter客户端返回Token,websocket server响应于websocket连接请求而建立websocket连接,并且由websocket server发起集群用户登录指令和返回执行结果。
根据本发明的实施例,在Jmeter客户端收到Token之后,根据接收到的相应参数判断web server是否正确响应,如果正确则从相应参数中提取Token。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。