带有服务器发送事件的 JMeter 并行请求
JMeter parallel requests with server-sent-events
我有一个 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
这可能吗?如果是这样怎么办?如果没有,我可以创建一个采样器来执行此操作吗?有什么指点吗?
格罗滕,
弗里索
我想你必须自己实现 class。
首先,作为SSE的客户,你应该看看这个:
第二步是实现一个自定义采样器来扩展这个 class:
- https://jmeter.apache.org/api/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.html
并将其与此 GUI 一起使用:
现在是最复杂的部分(也许我们应该创建一个 github 项目来讨论这个实现,并在完成后将其贡献给核心 JMeter 项目:-)):
- SSESampler 采样器可以在 2 种模式下工作:
- 阻塞直到它收到来自服务器的响应,这样你就可以断言结果
- 启动一个线程(最好使用线程池或 Reactor 模式)从服务器监听,一旦它得到响应,我们必须找到一种方法让初始线程能够访问它并断言。我们可以使用线程安全的 Map 共享,其中数据将由传递给 SSESampler
的一些数据作为键控
这些只是初步的想法,还需要更多的工作。
在考虑为 jmeter 创建新的 sse 插件后,我发现 gatling.io, it supports SSE gatling.io
我有一个 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
这可能吗?如果是这样怎么办?如果没有,我可以创建一个采样器来执行此操作吗?有什么指点吗?
格罗滕,
弗里索
我想你必须自己实现 class。
首先,作为SSE的客户,你应该看看这个:
第二步是实现一个自定义采样器来扩展这个 class:
- https://jmeter.apache.org/api/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.html
并将其与此 GUI 一起使用:
现在是最复杂的部分(也许我们应该创建一个 github 项目来讨论这个实现,并在完成后将其贡献给核心 JMeter 项目:-)):
- SSESampler 采样器可以在 2 种模式下工作:
- 阻塞直到它收到来自服务器的响应,这样你就可以断言结果
- 启动一个线程(最好使用线程池或 Reactor 模式)从服务器监听,一旦它得到响应,我们必须找到一种方法让初始线程能够访问它并断言。我们可以使用线程安全的 Map 共享,其中数据将由传递给 SSESampler 的一些数据作为键控
这些只是初步的想法,还需要更多的工作。
在考虑为 jmeter 创建新的 sse 插件后,我发现 gatling.io, it supports SSE gatling.io