JMeter WebSocket插件-关闭SignalR连接

时间:2018-12-20 09:40:20

标签: websocket jmeter asp.net-core-signalr

我有一个网站使用Asp.NET Core SignalR从服务器动态加载数据。

我在此页面上使用JMeter进行功能测试。我使用1.2.1版的WebSocket sampler插件来测试SignalR功能。

this blazemeter tutorial之后,如何在WebSocket sampler plugin中使用JMeter,在尝试关闭SignalR连接时总是出现错误。

我的JMeter采样器设置如下:

  1. WebSocket打开连接
  2. WebSocket请求响应采样器
  3. WebSocket单次读取采样器
  4. WebSocket关闭

为关闭连接,我使用了名为WebSocket Close的WebSocket采样器。该采样器允许提供一个Close status

我尝试提供不同的Close status代码。但实际上未确认所提供的代码,并且始终返回错误消息:

  

响应代码:WebSocket错误:关闭失败。

     

响应消息:WebSocket错误:收到的不是封闭框架,而是带有文本的文本框架...

如何在JMeter中正确关闭此连接?


更新

我发现这取决于我使用多少个采样器。如果我在读采样器之前使用写采样器,则关闭似乎有效。喜欢:

  1. WebSocket打开连接
  2. WebSocket请求响应采样器
  3. WebSocket单次读取采样器
  4. WebSocket单写采样器
  5. WebSocket关闭

但是,如果我想拥有一个以上的读取采样器,它将不起作用。知道如何正确使用多重读取采样器吗?


更新2

我已经重新阅读了插件文档,还检查了示例JMeter文件here。 不幸的是,到目前为止,我还没有找到具有多个Read Samplers的更大样本。

1 个答案:

答案 0 :(得分:1)

可能正在发生的事情是您的服务器发送了一些文本消息,而您的JMeter测试脚本尚未读取该消息。这些消息被缓冲,当您关闭WebSocket连接时,“关闭采样器”首先读取这些文本消息之一并返回错误。

有一个更改请求,用于增强“ Close Sampler”(关闭采样器),并带有忽略此类缓冲区结束消息的选项。暂时,您可以通过将文本框过滤器与封闭采样器结合使用来实现相同目的;请参阅samples目录中的“使用filter sample.jmx智能关闭”示例。