Blazemeter / jmeter-http2-plugin

HTTP2 plugin for Apache JMeter
Apache License 2.0
45 stars 27 forks source link

Use with Shaping Throughput Timer and Concurrency Thread group results in Interrupted Exception #29

Open maddenj-ie opened 1 year ago

maddenj-ie commented 1 year ago

Hi,

I observed the following issue. Details provided below. Thanks for the help. Regards.

Environment

Java : openjdk version "11.0.14" 2022-01-18 LTS Jmeter : 5.4.3 jmeter-bzm-http2-2.0 jmeter-plugins-casutg 2.10

Target Service

Wiremock

Test Procedure

Wiremock

// start wiremock server ( localhost:8080 by default )
$ java -jar wiremock-jre8-standalone-2.33.2.jar

// configure wiremock mapping
$ curl -X POST \
--data '{ "request": { "url": "/get/this", "method": "GET" }, "response": { "status": 200, "body": "Here it is!\n" }}' \
http://localhost:8080/__admin/mappings/new

// verify wiremock mapping
$ curl http://localhost:8080/get/this
$ Here it is!

Jmeter Configuration

Please see the attached jmx file. In brief, a http2 request sampler is configured with a Throughput Shaping Timer and Concurrent Thread group. This is inspired by https://www.blazemeter.com/blog/jmeters-shaping-timer-plugin specifically the dynamic thread count aspect.

Note: the test suite also contains a http request sample (disabled) which does not exhibit the same behaviour.

Observations

Stacktrace in response data

java.lang.InterruptedException
    at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1343)
    at java.base/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
    at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:124)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:238)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.io.ClientConnector.doStart(ClientConnector.java:192)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.client.AbstractConnectorHttpClientTransport.doStart(AbstractConnectorHttpClientTransport.java:62)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.client.HttpClient.doStart(HttpClient.java:221)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at com.blazemeter.jmeter.http2.core.HTTP2JettyClient.start(HTTP2JettyClient.java:105)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Sampler.buildClient(HTTP2Sampler.java:86)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Sampler.getClient(HTTP2Sampler.java:100)
    at com.blazemeter.jmeter.http2.sampler.HTTP2Sampler.sample(HTTP2Sampler.java:56)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1296)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1285)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
    at java.base/java.lang.Thread.run(Thread.java:829)

bzmHttp2InterruptedException.tar.gz

RicardoPoleo commented 1 year ago

Hello @maddenj-ie,

Thanks for reporting this behavior, every feedback makes this plugin much better. Our team will try to replicate this behavior and attempt to fix it.

Also, we will do a release during these weeks fixing other issues, and I'll let you know about it when we do make, so you can test it again. Does that work for you?

Once again, thanks for taking the time.

Best Regards

maddenj-ie commented 1 year ago

HI @RicardoPoleo,

Thanks for looking into it. Yes, I'd be happy to test.