jmeter icon indicating copy to clipboard operation
jmeter copied to clipboard

HeaderManager in a loop is cleared from header definitions if some specific samplers are executed before

Open KingRabbid opened this issue 1 year ago • 1 comments

Expected behavior

Using HTTP Header Manager elements at various levels in the tree (but a single manager per tree level) should result in the header list merge and the result to be used when HTTP Request is sent.

Actual behavior

Some Samplers (from the default list I found JUnit Request) seem to impact the content of the merged HTTP Header Manager when everything is wrapped in a loop and as a result the correct list of HTTP headers isn't submitted to target endpoint. The problem seems to be related to where the Header Manager is defined: one level above the HTTP Request sampler but child of a Loop controller OR on same level with the HTTP Request sampler and child of a Loop controller. I've tried with other samplers but they don't induce same outcome: Debug, JSR223, OS Process, Java request, TCP, LDAP Extended, JDBC.

We've built a dummy custom component that simply prints some text in the JTL (much like a stripped version of a Debug Sampler) and produces same buggy behavior (I cannot share the code). I've tried to replicate with JMeter's default samplers and managed as detailed.

Steps to reproduce the problem

Attaching sample JMX: jmeter-6224.zip Ignore the failures at sampler level, they are irrelevant; the only thing to focus is the content of HTTP Headers listed in each Request Headers tab for HTTP Requests (the Request Assertion fails) -> you can see or not see the HTTP Headers defined in the HTTP Header Manager - (not) Local instances.

Notes:

  1. I've used an Interleave Controller to prove that a Debug/LDAP Extended Sampler doesn't produce the issue.
  2. I've used a Loop of 6 to prove that once JUnit sampler is executed then all future requests are plagued by the same outcome.
  3. I've used a Module & Test fragment to suggest that issue can be easily buried under some re-used code/external code hence a rule like: 'don't use a HTTP Header Manager like this' can be easily lost from view. One can copy the whole code from the fragment and replace the Module controller and get same results.

JMeter Version

5.5.1

Java Version

openjdk version "17.0.9" 2023-10-17 OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9) OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)

OS Version

Windows 11 Pro 22H2

KingRabbid avatar Jan 12 '24 22:01 KingRabbid

I can reproduce with JMeter 4.0. Potentially 5897 is linked to this issue.

KingRabbid avatar Jan 12 '24 22:01 KingRabbid