blazemeter / correlationrecorder Goto Github PK
View Code? Open in Web Editor NEWA repository for the Auto Correlation Recorder Plugin for JMeter
Home Page: https://blazemeter.github.io/CorrelationRecorder/
License: Apache License 2.0
A repository for the Auto Correlation Recorder Plugin for JMeter
Home Page: https://blazemeter.github.io/CorrelationRecorder/
License: Apache License 2.0
Describe the bug
Cannot invoke "org.apache.jmeter.gui.JMeterGUIComponent.clearGui()" because "guicomp" is null while launching Bjm Correlation recorder plugin template in Jmeter
A clear and concise description of what the bug is.
Launch Jmeter
Go to the templates Icon after installing the bzm correlation recorder plugin
Select the Bzm correlation recorder template and click on create button.
We are getting "Cannot invoke "org.apache.jmeter.gui.JMeterGUIComponent.clearGui()" because "guicomp" is null issue and unable to Launch the template in Macbook Air M2.
Environment
macbook Air M2
Java 21
Jmeter Version 5.6.3
Let us know in which versions of these tools the error occurs:
To Reproduce
Steps to reproduce the bug:
Expected behavior
A clear and concise description of what you expected to happen.
Complementary information
To have a faster and accurate response to your issue, please share:
In case of sharing the JTL, please make sure you configure it as shown in the docs/JTLRecordingConfiguration.png file
Add any other context about the problem here.
Hi, I added the Correlation Recorder through plugin manager, using JMeter 5.4.3 on Windows 10.
It is possible to add a new Group and create new rules and save but I am unable to load any templates.
Eg when I clear templates and attempt to reload with 'Load Template', nothing comes up.
Also, although I can save a template, when I try to click save again, the saving template appears and requires all information to be retyped.
Error logs are at bottom of post.
**Environment:
Windows 10
Networked device behind corporate proxy
JMeter version 5.4.3
bzm-correlation-recorder v 1.2.2 updated today
Steps to reproduce the bug:
Observe that nothing happens
Observe that new entry appears in error logs, see bottom of this post
Note that json file is saved here: C:\Work\JMeter\apache-jmeter-5.4.3\correlation-templates\DanB_Template-1.0-template.json
Expected behavior
Once saved, it should be possible to load templates in existing or new test plans.
Complementary information
C:\Work\JMeter\apache-jmeter-5.4.3\correlation-templates\DanB_Template-1.0-template.json contains:
{
"id" : "DanB_Template",
"description" : "First draft of template for PoC",
"version" : "1.0",
"author" : "DanB",
"url" : "",
"components" : "",
"responseFilters" : "",
"groups" : [ {
"id" : "Group-1",
"rules" : [ {
"referenceName" : "state",
"correlationExtractor" : {
"type" : "com.blazemeter.jmeter.correlation.core.extractors.RegexCorrelationExtractor",
"multiValued" : true,
"regex" : "state=(.*?)\\\\"
},
"correlationReplacement" : {
"type" : "com.blazemeter.jmeter.correlation.core.replacements.RegexCorrelationReplacement",
"regex" : "state=(.*?)\\\\"
},
"enabled" : true
}, {
"referenceName" : "nonce",
"correlationExtractor" : {
"type" : "com.blazemeter.jmeter.correlation.core.extractors.RegexCorrelationExtractor",
"multiValued" : true,
"regex" : "nonce=(.*?)\\\\"
},
"correlationReplacement" : {
"type" : "com.blazemeter.jmeter.correlation.core.replacements.RegexCorrelationReplacement",
"regex" : "nonce=(.*?)\\\\\""
},
"enabled" : true
} ],
"enable" : true
} ],
"dependencies" : [ ],
"repositoryId" : "local",
"changes" : "first draft",
"installed" : false
}
Additional context
2022-12-07 14:51:34,430 WARN c.b.j.c.c.t.LocalCorrelationTemplatesRepositoriesRegistry: There was an issue trying to read the file central-repository.json.
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (File); line: 1, column: 0]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4686) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4584) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3431) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.blazemeter.jmeter.correlation.core.templates.LocalConfiguration.readTemplatesReferences(LocalConfiguration.java:132) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.core.templates.LocalCorrelationTemplatesRepositoriesRegistry.readTemplatesReferences(LocalCorrelationTemplatesRepositoriesRegistry.java:124) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.core.templates.LocalCorrelationTemplatesRepositoriesRegistry.lambda$getRepositories$0(LocalCorrelationTemplatesRepositoriesRegistry.java:111) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at com.blazemeter.jmeter.correlation.core.templates.LocalCorrelationTemplatesRepositoriesRegistry.getRepositories(LocalCorrelationTemplatesRepositoriesRegistry.java:100) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.core.templates.CorrelationTemplatesRepositoriesConfiguration.getCorrelationRepositories(CorrelationTemplatesRepositoriesConfiguration.java:51) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.CorrelationProxyControl.getCorrelationRepositories(CorrelationProxyControl.java:613) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.CorrelationProxyControlGui.getCorrelationRepositories(CorrelationProxyControlGui.java:184) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.updateTemplatesList(CorrelationTemplatesFrame.java:321) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.prepareInfoPanel(CorrelationTemplatesFrame.java:134) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.<init>(CorrelationTemplatesFrame.java:125) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.RulesContainer.actionPerformed(RulesContainer.java:131) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) ~[?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) ~[?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) ~[?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) ~[?:?]
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) ~[?:?]
at java.awt.Component.processMouseEvent(Component.java:6626) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3389) ~[?:?]
at java.awt.Component.processEvent(Component.java:6391) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5001) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4833) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2780) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4833) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:716) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:746) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:744) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) [?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:743) [?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
2022-12-07 14:51:34,451 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]
java.lang.reflect.InaccessibleObjectException: Unable to make field private int java.awt.image.BufferedImage.imageType accessible: module java.desktop does not "opens java.awt.image" to unnamed module @501edcf1
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[?:?]
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?]
at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
at com.fasterxml.jackson.databind.util.ClassUtil.checkAndFixAccess(ClassUtil.java:987) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.fixAccess(FieldProperty.java:104) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder._fixAccess(BeanDeserializerBuilder.java:522) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder.build(BeanDeserializerBuilder.java:373) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:293) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:150) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:414) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.DeserializationContext.findNonContextualValueDeserializer(DeserializationContext.java:581) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:524) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:293) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:591) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4731) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4592) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3411) ~[jackson-databind-2.12.0.jar:2.12.0]
at com.blazemeter.jmeter.correlation.core.templates.LocalConfiguration.readValue(LocalConfiguration.java:127) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.core.templates.LocalCorrelationTemplatesRepositoriesRegistry.lambda$getCorrelationTemplatesByRepositoryId$3(LocalCorrelationTemplatesRepositoriesRegistry.java:190) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at com.blazemeter.jmeter.correlation.core.templates.LocalCorrelationTemplatesRepositoriesRegistry.getCorrelationTemplatesByRepositoryId(LocalCorrelationTemplatesRepositoriesRegistry.java:188) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.core.templates.CorrelationTemplatesRepositoriesConfiguration.getCorrelationTemplatesByRepositoryName(CorrelationTemplatesRepositoriesConfiguration.java:55) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.CorrelationProxyControl.getCorrelationTemplatesByRepositoryName(CorrelationProxyControl.java:624) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.CorrelationProxyControlGui.getCorrelationTemplatesByRepositoryName(CorrelationProxyControlGui.java:194) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.lambda$updateTemplatesList$3(CorrelationTemplatesFrame.java:323) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.updateTemplatesList(CorrelationTemplatesFrame.java:321) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.prepareInfoPanel(CorrelationTemplatesFrame.java:134) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.templates.CorrelationTemplatesFrame.<init>(CorrelationTemplatesFrame.java:125) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at com.blazemeter.jmeter.correlation.gui.RulesContainer.actionPerformed(RulesContainer.java:131) ~[jmeter-bzm-correlation-recorder-1.2.2.jar:?]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) ~[?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) ~[?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) ~[?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) ~[?:?]
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) ~[?:?]
at java.awt.Component.processMouseEvent(Component.java:6626) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3389) ~[?:?]
at java.awt.Component.processEvent(Component.java:6391) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5001) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4833) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2780) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4833) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:716) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:746) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:744) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:743) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
When I record xml code and I set 1 correlation rule WITH a Correlation Replacement all the XML code is record as:
<action name"Rule" rulename"RuleName"
Without the Correlation replacement, the XML code is record as:
<action name="Rule" rulename="RuleName"
and that is correct. So in the example the equal sign "=" was deleted. So is it a bug or do I sometimes wrong?
Retested #13
@RicardoPoleo I tested the patch release 1.1.1, it seems that the issue still persists. Here is the recording https://share.qainsights.com/llu2K6XR.
I am trying to register a simple interaction towards siebel version IP 20, in which I log in and search for a customer and request his details. Everything seems to work but when I replay the registration to the customer detail request I always get an error page as a response that says: "Session Warning Message", which warns me of the existence of another session open for the same user. I verified that the request that goes in error is identical to the previous one, which instead receives a correct answer, has the same parameters (apart from the frame parameter) and the same JsessionId present in the cookie. Is the plugin compatible with Siebel IP version 20? I haven't changed or added any correlation rules this scenario shouldn't work out of the box? Thanks so much for your effort.
RegExp extractors are created but only a portion of those are applied in the script. Seeing many errors in the log stating:
ERROR c.b.j.c.c.a.ElementsModification: The source 'JSON' is not supported.Replacement's value 'y5vGmGtGq3Y5V0VFNdtybxK0V1wDXZZT7m5WCVaIg/k=' in the suggestion ReplacementSuggestion{replacementSuggestion=RegexCorrelationReplacement{, regex='', replacementString='', ignoreValue=false},...
To Reproduce
Expected behavior
No errors occur and correlations are applied to script.
Describe the feature
Currently, near 50% of top 1.000.000 websites uses HTTP/2 protocol and 70% of top 1000 websites also relies on this protocol (ref).
It would be nice if this Correlation Recorder could record http2 scripts, since it will unlock its usage on webapps running on modern web servers.
I have defined a user variable PROJECT_HOME
in the "User Defined Variables" element.
The PROJECT_HOME
variable contains this code:
${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
After that, I reuse it in the "CSV Data Set Config" element, in the filename as follow:
${__env(DATA_CONFIG,,${__eval(${PROJECT_HOME})})}/Credentials.csv
With the "HTTP(S) Test Script Recorder" the resolution of the variable PROJETC_HOME
is resolved correctly, as follow:
2021-12-07 10:20:39,175 INFO o.a.j.s.FileServer: Close: D:\Projets\Load-Tests\Auto-Correlation/Credentials.csv
But with this plugin I have the following issue:
2021-12-07 10:09:08,562 INFO o.a.j.s.FileServer: Stored: ${PROJECT_HOME}/Credentials.csv
Environment
Windows 10
Step to Reproduce
PROJECT_HOME
variable as${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
in the config element "User Defined Variable".${__env(DATA_CONFIG,,${__eval(${PROJECT_HOME})})}/Credentials.csv
Expected behaviour
I expected that the ${PROJECT_HOME}
is resolved as D:\Projets\Load-Tests\Auto-Correlation
instead of remaining as ${PROJECT_HOME}
Complementary information
none
Additional context
none
Describe the feature
Currently, the automatic correlation recorder autodetects correlations based on http code status error.
A lot of applications, do not show 4xx or 5xx status code to the user, but instead sends 2xx status code with an error description in the response. This scenarios make the plugin useless.
It would be very useful to provide auto-correlation capabilities based on user defined assertions, so that applications that do not send error status code to the users can be correlated also.
When recording the scenario using the bzm correlation plugin, some of the main http requests are not captured. Because of this validation could not be done. We verified the application without using the plugin, all http requests are capturing. Also few requests are capturing out of order with plugin. For example, http-1,http-2,http-3, http-4,http-5 is the expected order. But recorded order is http-1,http-5,http-3,http-4,http-2.
What happens here is http-5 request's values depends on http2's response. Due to the unexpected order, auto correlation behaviour of the plugin is affecting.
Target
help documentation is misplaced under Field to Check
section in ReadMe.
While recording the scenario with bzm correlation recorder plugin, requests are not captured in expected order.
For example,
Expected order is:
request1
request2
request3(values passed in this request depends on the response of request1)
Order obtained is:
request3(values passed in this request depends on the response of request1)
request2
request1
Since request1 is captured only after request3, autocorrelation is not working at this point.
But when used with HTTPS Test script recorder, request are captured in expected order.
It would be time saving if this issue is resolved. Kindly do the needful.
Describe the bug
2024-04-26 18:32:51,108 INFO c.b.j.c.c.a.JMeterElementUtils: Test Plan's Snapshot saved to D:\apache-jmeter-5.4.3\bin\Recording\snapshot-1714127571086.jmx
2024-04-26 18:32:51,109 INFO c.b.j.c.c.a.CorrelationHistory: Correlation History saved to D:\apache-jmeter-5.4.3\bin\History\history-1714119758788.json
2024-04-26 18:32:52,006 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]
java.lang.IndexOutOfBoundsException: Index 138 out of bounds for length 138
at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[?:?]
at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) ~[?:?]
at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) ~[?:?]
at java.util.Objects.checkIndex(Objects.java:372) ~[?:?]
at java.util.ArrayList.get(ArrayList.java:459) ~[?:?]
at com.blazemeter.jmeter.correlation.core.analysis.Analysis.run(Analysis.java:98) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.core.analysis.Analysis.startAnalysisWithGroupRules(Analysis.java:171) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.core.analysis.Analysis.run(Analysis.java:73) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.gui.analysis.CorrelationTemplatesSelectionPanel.runNonCorrelatedAnalysis(CorrelationTemplatesSelectionPanel.java:426) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.gui.automatic.CorrelationWizard.lambda$startNonCorrelatedAnalysis$2(CorrelationWizard.java:107) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.gui.analysis.CorrelationTemplatesSelectionPanel.onContinue(CorrelationTemplatesSelectionPanel.java:379) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.gui.analysis.CorrelationTemplatesSelectionPanel.validateAndContinue(CorrelationTemplatesSelectionPanel.java:325) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at com.blazemeter.jmeter.correlation.gui.analysis.CorrelationTemplatesSelectionPanel.actionPerformed(CorrelationTemplatesSelectionPanel.java:280) ~[jmeter-bzm-correlation-recorder-2.4.jar:?]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) ~[?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) ~[?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) ~[?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) ~[?:?]
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) ~[?:?]
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) ~[?:?]
at java.awt.Component.processMouseEvent(Component.java:6635) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3342) ~[?:?]
at java.awt.Component.processEvent(Component.java:6400) ~[?:?]
at java.awt.Container.processEvent(Container.java:2263) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5011) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2321) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4843) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2307) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2772) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4843) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:721) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:715) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:745) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:743) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
Environment
Let us know in which versions of these tools the error occurs:
To Reproduce
Steps to reproduce the bug:
When I use Correlation's Wizard -> Existing Correlation Templates -> select Local Templates -> click Continue, the following error occurs.
Expected behavior
How can I properly link to local templates, and can I remove the OPTIONS Method requests during plugin recording?
Complementary information
To have a faster and accurate response to your issue, please share:
In case of sharing the JTL, please make sure you configure it as shown in the docs/JTLRecordingConfiguration.png file
Additional context
Add any other context about the problem here.
I added bzm-correlation recorder plugin in Jmeter(version 5.2.1). As per the documentaion, I gave correlation rules and captured the scenario.
Result I got:
As expected, regular expression extractor is automatically added to the request which matches the regular expression given in correlation rule.
But the dynamic value in the subsequent requests i can't replace properly due to mendix application will have the requests like below:
{"action":"executemicroflow","params":{"name":"JoinForm.IVK_JoinForm_Next_FinancialConfirmation","params":{"Agent":{"guid":"49821070877903922"}},"validationGuids":["103582791429984673","49821070877903922","74027918875004238","4503599627474506","55732045388813898","2533274790499914"]},"changes":{"23925373020765797":{"Duration":{"value":"0.31065111"}},"97671816918664942":{"Feedback_FindSponsor":{"value":""}}},"objects":[],"profiledata":{"1614601854093-117":1069}}
And also its creating multiple extractor for single value as I attached the screenshot here for your reference.
I am getting below EOF exception while recording D365 Fno Application using the BZM correlation recorder template.
java.io.EOFException at java.base/java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:279) at java.base/java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:269) at java.base/java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:175) at java.base/java.util.zip.GZIPInputStream.(GZIPInputStream.java:79) at java.base/java.util.zip.GZIPInputStream.(GZIPInputStream.java:91) at org.apache.jmeter.protocol.http.sampler.hc.LaxGZIPInputStream.(LaxGZIPInputStream.java:42) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.lambda$static$0(HTTPHC4Impl.java:205) at org.apache.http.client.entity.LazyDecompressingInputStream.initWrapper(LazyDecompressingInputStream.java:51) at org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:63) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.readResponse(HTTPSamplerBase.java:1950) at org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.readResponse(HTTPAbstractImpl.java:475) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:678) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1311) at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:251) at com.blazemeter.jmeter.correlation.core.proxy.CorrelationProxy.run(CorrelationProxy.java:57)
Let us know in which versions of these tools the error occurs:
To Reproduce
Steps to reproduce the bug:
I added bzm-correlation recorder plugin in Jmeter(version 5.1.1). As per the documentaion, I gave correlation rules and captured the scenario.
Result I got:
As expected, regular expression extractor is automatically added to the request which matches the regular expression given in correlation rule.
But the dynamic value in the subsequent request is not replaced by reference variable which has to be replaced automatically.
Kindly guide me to solve this issue. Thanks in advance.
Describe the bug
While recording the scenario with bzm correlation recorder plugin, requests are not captured in the expected order.
For example:
The expected order is:
Order obtained is:
Since request1 is captured only after request3, the autocorrelation is not working at this point.
But when used with HTTPS Test script recorder, request are captured in the expected order.
It would be time-saving if this issue is resolved. Kindly do the needful.
Environment
Let us know in which versions of these tools the error occurs:
Expected behavior
The expected order is:
Please refer to previous occurrence of this same issue, in ticket "Requests are delayed while recording #22"
When I try to replace the correlated values by configuring Correlation Replacement regex, it is not getting replaced successfully.
JMX file https://send.firefox.com/download/74e790bc0fee9ee5/#0CMN95l1ZL1rwhAaW6whZA
URL: https://petstore.octoperf.com/
Debug Sampler
If we enter 0 in Group Number as shown below, it is throwing the below error in the log viewer. Instead, Group Number field must accept greater than 0 or possible validation rules.
java.lang.NullPointerException: null
at com.blazemeter.jmeter.correlation.core.RegexMatcher.findMatch(RegexMatcher.java:31) ~[jmeter-bzm-correlation-recorder-1.0.jar:?]
at com.blazemeter.jmeter.correlation.core.extractors.RegexCorrelationExtractor.process(RegexCorrelationExtractor.java:136) ~[jmeter-bzm-correlation-recorder-1.0.jar:?]
at com.blazemeter.jmeter.correlation.core.CorrelationRule.addExtractors(CorrelationRule.java:72) ~[jmeter-bzm-correlation-recorder-1.0.jar:?]
at com.blazemeter.jmeter.correlation.core.CorrelationEngine.lambda$process$6(CorrelationEngine.java:75) ~[jmeter-bzm-correlation-recorder-1.0.jar:?]
When we disable any rules in the Correlation Rules
, which leads to duplicating them.
Steps to reproduce:
Correlation Recorder
element againVersion 5.4.3 of JMeter has been working great with the Correlation recorder version 1.2.
Moving to JMeter 5.5 broke all the templates, which is fine but recording the traffic while using the correlation recorder is broke. The script will sometimes start to show up in the Thread Group and then stops part way through a recording or doesn't build out at all.
The View Results Tree of the recorder displays all the necessary traffic to make the script.
Attempting to record traffic with or without recording rules results in same behavior.
Same with and without any requests filtering.
I'm on a Windows 10 developers laptop.
I've attempted to use the version 1.0 of the Correlation recorder with version 5.5 of JMeter and that doesn't work either. JMeters built in recorder works every time with no issues.
Our Entire team has moved to using the latest version of JMeter; are there any plans to update the Correlation Recorder?
Hi @RicardoPoleo @Baraujo25
I created this simple utility which converts LR rules to JMeter correlation recorder rules. Please check it out. Thanks!
https://github.com/QAInsights/LoadRunner-to-JMeter-Correlation-Rules-Converter
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.