Created attachment 37834 [details] extractor wrong behavior Hello, In the attached test plan, there are Boundary Extractor, JSON Extractor and JSON JMESPath Extractor. Apply to options "MainSampleAndSubSamples", "MainSampleOnly" and "SubSamplesOnly" are used and extraction is done on "JSR223 Sampler - create JSON response" and its subsample that is created using JSR223 PP. The First 3 extractors of every kind are extracting values from "JSR223 Sampler - create JSON response" and another 3 from its subsample. The behavior of Boundary Extractor, JSON Extractor and JSON JMESPath Extractor is not the same. Please run the test and check Debug Sampler in VRT. Boundary Extractor works as expected but JSON Extractor and JSON JMESPath Extractor don't. Please refer to the attached image to see what is correct and what is wrong behavior. P.S. Boundary extractor throws WARN message in logs if there is no match between boundaries. WARN o.a.j.e.BoundaryExtractor: Boundary Extractor - BEcategoryFieldSubSamplesOnly: Error while generating result. java.lang.IllegalArgumentException: bound must be positive WARN o.a.j.e.BoundaryExtractor: Boundary Extractor - BEticker_langMainSampleOnly: Error while generating result. java.lang.IllegalArgumentException: bound must be positive Is this expected? IMO, it should be hidden like for other extractors. Jmeter 5.5 08c3c59 Microsoft Windows 10 Enterprise 64-bit java version "15.0.1" 2020-10-20
Created attachment 37884 [details] Add handling of sub-samples to the JSON Extractors As the UI suggests, the extractors should handle the selection of sub-samples.
@Nikola, could you test next nightly or build from trunk and report back, if it fixes your problem? Note, I haven't changed Boundary Extractor. commit 0c97fd659f24960a89ff3344b7f71be9e70f1d28 AuthorDate: Sun May 30 20:39:18 2021 +0200 JSON Extractor and JSON JMESPath Extractor ignore sub-samples The UI for those elements suggest, that the extractors would look into sub-samples for matches (or even could be configured to use only values from the sub-samples). Adapt the implementation to make that assumption true. Bugzilla Id: 65269 --- .../extractor/json/jmespath/JMESPathExtractor.java | 48 +++++++----- .../extractor/json/jsonpath/JSONPostProcessor.java | 27 ++++--- .../jmeter/extractor/TestJSONPostProcessor.java | 88 +++++++++++++++++++--- .../json/jmespath/TestJMESPathExtractor.java | 73 ++++++++++++++++++ xdocs/changes.xml | 1 + xdocs/usermanual/component_reference.xml | 21 ++++-- 6 files changed, 213 insertions(+), 45 deletions(-)
(In reply to Felix Schumacher from comment #2) > @Nikola, could you test next nightly or build from trunk and report back, if > it fixes your problem? Hi Felix, I checked using provided example and real test plan using JSON path and it is fixed. Works as expected. Thank you. > Note, I haven't changed Boundary Extractor. OK. Will it be changed maybe? Jmeter 5.5 0c97fd6 Microsoft Windows 10 Enterprise 64-bit java version "15.0.1" 2020-10-20
Thanks for confirming the fix. The boundary extractor will get its own bug report :)
The bug id for the boundary extractor is https://bz.apache.org/bugzilla/show_bug.cgi?id=65352
commit 75375c0f163894bffb2bd70e62632694acdf4110 Author: Felix Schumacher <felix.schumacher@internetallee.de> AuthorDate: Wed Jun 9 18:09:20 2021 +0200 Skip empty extracted results on JSON Extractor and JSON JMESPath Extractor With the addition of more than one result for sub-samples, the extracted results can be empty. Those empty results have to be filtered away, or we get warnings in the logs. Part of Bugzilla Id: 65269 --- .../extractor/json/jmespath/JMESPathExtractor.java | 1 + .../extractor/json/jsonpath/JSONPostProcessor.java | 2 ++ .../jmeter/extractor/TestJSONPostProcessor.java | 22 ++++++++++++++++++++++ .../json/jmespath/TestJMESPathExtractor.java | 14 ++++++++++++++ 4 files changed, 39 insertions(+)
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/5525