steps: 1. have a web app used referer header with an address like `http://name.site.com/name/index.php` 2. add thread Group in Jmeter 3. add a 'User Defined Variables' into thread Group 3.1 Add variables: 3.1.1 PROTOCOL: http 3.1.2 HOST: name.site.com 3.1.3 PATH: /name 4. add HTTP(S) Test Script Recorder with: 4.1 Capture into threadGroup1 4.2 Capture HTTPS headers 5 capture some actions with web app 6 Look at HTTP header Manager recorded in each request expected result: referer: ${PROtOCOL}://${HOST}${PATH}/ actual result: ${PROtOCOL}:/${PATH}.site.com${PATH}/ PS: if you change the name of the variable 'PATH' to 'APATH' it will work correctly. So order in UI doesn't matter and variables ordering by alphabetical descending sort.
The variables in "User Defined Variables" are stored internally in a HashMap and have therefore no order. If you want to rely on the order of the replacement, use parameters on the TestPlan instead of variables. That should work and is covered by tests (TestValueReplacer). (Sorry for the late reply) Any specific reason to place them in User Defined Variables?
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/5132