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

2022-09-04 23:09:43

我有一个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

这可能吗?如果是这样,如何?如果没有,我可以创建一个采样器来执行此操作吗?任何指针?

格罗滕,

弗里索


答案 1

我认为你必须实现自己的类。

首先,作为上交所的客户,您应该看看这个:

第二步是实现将扩展此类的自定义采样器:

并将其与此 GUI 一起使用:

现在对于最复杂的部分(也许我们应该创建一个github项目来讨论这个实现,一旦完成,就把它贡献给核心JMeter项目:-)):

  • SSESampler采样器可以在2种模式下工作:
    • 阻止,直到它收到来自服务器的响应,这样您就可以断言结果
    • 启动一个线程(最好使用线程池或反应器模式)从服务器侦听,一旦它得到响应,我们必须找到一种方法,让初始线程能够访问它并断言。我们可以使用共享的线程安全映射,并且数据将通过传递给SSESampler的一些数据进行键控

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


答案 2

在考虑为jmeter创建新的sse插件后,我发现 gatling.io,它支持SSE gatling.io


推荐