如何在Jmeter中写入请求以测试SignalR集线器

mxg2im7a  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(212)

我在我的SignalR集线器中有一个非常简单的方法:

public class ActivityHub : Hub
    {
        public async Task NewMessage(string username, string message) =>
            await Clients.All.SendAsync("ReceiveMessage", username, message);
    }

当我使用我的客户端(也是用JavaScript编写的非常简单的应用程序)时,它工作得很完美
我的问题的线索是找到如何通过Jmeter测试我的集线器。我已经找到了一些关于stackoverflow的主题,以及教程:https://medium.com/@goldberg_rui/test-signalr-performance-with-jmeter-59083554f917我写了一个简单的测试,但它不工作。我在教程中使用了“ WebSocket Samplers by Peter Doornbosch”
首先我协商(simple HTTP Request):http://localhost:56325/activity/negotiate返回一些我从中提取connectionId的数据。
然后我打开新的连接(WebSocket Open Connection)与/activity?id=$(ConnectionId)
最后,我尝试在现有连接的集线器中调用方法(WebSocket Single Write Sampler),并将数据:{"arguments": ["abc","abc"], "invocationId":123,"target":"NewMessage","type":4} .不幸的是,我收到错误消息:

Response code:Sampler error
Response message:Sampler configured for using existing connection, but there is no connection

测试中的bug在哪里?我知道我需要在消息的末尾添加终止字符0x1E。可能消息类型(4)不正确或参数传递错误?我还放了我的JMeter测试的截图。重要提示:仅启用第二个写入器,禁用第一个写入器。

6kkfgxo0

6kkfgxo01#

你的设置看起来不错,但是错误消息意味着连接没有打开,所以我的期望是你的WebSocket Open Connection采样器在某个地方失败了。
1.使用View Results Tree侦听器检查请求和响应,并将它们与JavaScript发送的请求和响应进行比较
1.检查jmeter.log文件中是否有任何可疑条目,如在JMeter GUI右上角看到黄色感叹号,看起来至少有2个需要修复的错误。您也可以考虑使用increasing JMeter debug logging verbosity to DEBUG level来使用WebSocket采样器,方法是将下一行添加到 log4j2.xml 文件中:

<Logger name="eu.luminis" level="debug" />

将需要重新启动JMeter以获取更改

euoag5mw

euoag5mw2#

将RegEx Extractor更改为JSON Extractor,并将Json Path Expression设置为$.connectionId
其余的测试都很好。

相关问题