JMeter并行请求和服务器发送事件

13

我有一个JMeter测试,目前使用循环来查找某些条件是否为真。除了轮询外,我想要(并且可以)使用请求资源上的服务器发送事件(SSE)。它应该工作的方式是通过启动SSE线程,然后启动另一个线程执行请求,最终将导致发送特定事件。如果收到该事件,则应继续处理。

可能更加清晰的图形化表示。我的当前脚本大致如下:

ThreadGroup
 |
 + request 1
 + request 2
 ...
 + request N
 + Transaction controller
 |  |
 |  + While controller
 |     + polling request
 |
 + request N+1

我想要像这样的东西

ThreadGroup
 | 
 + request 1
 + request 2
 ...
 + <help needed here>
 |  |
 |  + event thread
 |  |   + request SSE
 |  |       + onEvent x: y = true
 |  + action thread
 |     + request N
 |     + While y=false wait
 + request N+1

这个可能吗?如果可能,怎么实现?如果不行,我能否创建一个采样器来做到这一点?有什么建议吗?

问候,

Friso

2个回答

3
我认为你需要实现自己的类。
首先,作为SSE的客户端,你应该查看这个: 第二步是实现一个自定义的采样器,它将扩展这个类:

并使用此GUI:

现在来到最复杂的部分(也许我们应该创建一个GitHub项目来讨论这个实现,一旦完成后将其贡献给核心JMeter项目 :-) ):
  • SSESampler采样器可以以2种模式工作:
    • 阻塞直到它从服务器接收到响应,这样您就可以对结果进行断言
    • 启动一个线程(最好使用线程池或反应器模式)来监听来自服务器的消息,一旦它获得响应,我们必须找到一种方法让初始线程能够访问并进行断言。我们可以使用线程安全Map共享数据,并且数据将由传递给SSESampler的某些数据键入。

这些只是初步想法,需要更多的工作。


这是我的初步想法:https://github.com/vrolijken/JMeter-SSE。我已经有了可工作的SSE客户端代码,所以那部分绝对不是问题。 - Friso

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接