AutoCorrelation: Add initial support
Description
New Feature Enhancement for auto correlation https://bz.apache.org/bugzilla/show_bug.cgi?id=63640
Motivation and Context
It is hard to fix JMeter's scripts for collaboration like session value. So, we created a prototype for the auto-correlation feature covering the following use case: a. Record the first test plan & Save it. b. Record the second test plan keep it open in JMeter and upload the first test plan for auto-correlation. c. Select the parameters for correlation and save the correlated test plan.
We shared the prototype to our internal teams to try and we received a positive feedback from them.
It encouraged us to share the idea with the community and we received a positive response from community as well.
- Mr. Phillipe responded saying the community will definitely take interest in the PR.
- Mr. Alex shared an additional use case which can be supported. Use case is to allow the user to export the correlation rules file from an existing correlated script. The user can use the rules to correlate scripts in future. These rules can be standardized and distributed across the community. Although this will be implemented in future.
How Has This Been Tested?
We have tested auto-correlation feature on in-house applications and global applications like gitlab, redmine, etc. Business logic is tested using JUnit Test with 100% coverage. GUI has been covered via Functional tests.
Screenshots (if appropriate):
https://bz.apache.org/bugzilla/attachment.cgi?id=36704
Types of changes
- New feature (non-breaking change which adds functionality)
-New feature (non-breaking change which adds functionality) The following modules have been added in the code:
- Comparator (Correlation.java) - Used to compare parameters from two scripts.
- CSS Selector Extractor Creator (CreateCSSSelectorExtractor.java) - Used to create CSS Selector expression for a parameter in response data.
- Create Regular Expression Extractor (CorrelationExtractor.java) - Used to create Regular Expression for a parameter in a response data.
The following changes are done to the code
- GUI Action - "Correlation" (ActionNames.java, MenuFactory.java)
- JTable to Display parameters which are a candidate for correlation. (CorrelationTableModel.java, CorrelationGui.java)
- JFileChooser browse menu to browse for script. (CorrelationDialoger.java, FileDialoger.java)
Checklist:
- [x] My code follows the code style of this project.
- [ ] I have updated the documentation accordingly.
TODOs
-
Mr. Phillipe had some initial comments on the enhancement proposal asking to support different extractors based on different response content type. We have implemented CSSSelectorExtractor and we have plan to implement XPath2Extractor and JSONPathExtractor in future.
-
We have plan to implement the use case shared by Mr. Alex as mentioned in the motivation, i.e., allow the user to export auto-correlation rules file and use that rule file to correlate scripts.
Hi,
I would personally like to be in the team that is testing and validating the Auto-Correlation feature in Jmeter.
Developers - Please contact me privately anytime with any requests.
Thank you very much for all the efforts and cooperation.
Sincerely,
Shay Ginsbourg
Former HP (Mercury) LoadRunner QA Manager
From: Graham Russell [email protected] Sent: Thursday, September 26, 2019 19:12 To: apache/jmeter [email protected] Cc: Subscribed [email protected] Subject: Re: [apache/jmeter] AutoCorrelation: Add initial support (#499)
@ham1 commented on this pull request.
I think this functionality is really valuable for JMeter, I've just made a few comments only based upon quickly reading the code, with the aim of trying to make it easier to read :)
In src/components/src/main/java/org/apache/jmeter/extractor/CreateCssSelectorExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328687471 :
* @param requestUrl URL of the request whose response yields the
-
* parameter required to correlate -
* @param contentType responseData content type -
* @return -
* @throws Error -
* @throws UnsupportedEncodingException -
*/ - public static Map<String, String> createCssSelectorExtractor(String html, String attributeValue,
-
String correlationVariableName, String requestUrl, String contentType) throws UnsupportedEncodingException { -
// parse the HTML string -
Document doc = getDocument(html); -
Map<String, String> cssSelectorExtractor = new HashMap<>(); -
String cssSelectorExpression;
Please declare variables where they are initialised (or at closed as possible in scope)
In src/components/src/main/java/org/apache/jmeter/extractor/CreateCssSelectorExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328687677 :
- static final String TEST_NAME = "testname";
- static final String ONE = "1";
- /**
-
* @param html HTML response -
* @param attributeValue Value of the parameter required to correlate -
* @param correlationVariableName alias of the correlated variable -
* @param requestUrl URL of the request whose response yields the -
* parameter required to correlate -
* @param contentType responseData content type -
* @return -
* @throws Error -
* @throws UnsupportedEncodingException -
*/
no need for the extra blank line :)
In src/core/src/main/java/org/apache/jmeter/functions/CorrelationFunction.java https://github.com/apache/jmeter/pull/499#discussion_r328688911 :
-
- See the License for the specific language governing permissions and
-
- limitations under the License.
- */
+package org.apache.jmeter.functions; + +import org.apache.commons.lang3.StringUtils; + +/**
-
- utility class which contains utility methods.
-
- */ +public class CorrelationFunction {
- // Initialize constants variables
I don't think this comment is required.
In src/core/src/main/java/org/apache/jmeter/gui/CorrelationTableModel.java https://github.com/apache/jmeter/pull/499#discussion_r328689544 :
- distributed under the License is distributed on an "AS IS" BASIS,
-
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-
- implied.
-
-
- See the License for the specific language governing permissions and
-
- limitations under the License.
- */
+package org.apache.jmeter.gui; + +import javax.swing.table.AbstractTableModel; + +public class CorrelationTableModel extends AbstractTableModel { +
- /**
-
* serialVersionUID
This comment isn't required.
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/CorrelationGui.java https://github.com/apache/jmeter/pull/499#discussion_r328690970 :
// prepare the list of user selected parameters
-
for (int i = 0; i < rowCount; i++) { -
if ((Boolean) jTable.getValueAt(i, 0) && jTable.getValueAt(i, 1) != null) { -
argumentsList.add(jTable.getValueAt(i, 1).toString()); -
bodyParameterMap.put(jTable.getValueAt(i, 1).toString(), jTable.getValueAt(i, 3).toString()); -
} -
} -
CorrelationExtractor.readResponse(argumentsList, bodyParameterMap); -
frame.dispose(); -
} -
); -
/**
The comments in this function can be a // comment not a JavaDoc comments.
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/Correlation.java https://github.com/apache/jmeter/pull/499#discussion_r328691762 :
- public static final String UNDERSCORE = "_";
- public static final String EQUAL = "=";
- private Correlation() {
- }
- /**
-
* Compare the list of api-request objects and prepare the map containing -
* the parameter list which are candidates for correlation. -
* -
* @param file JMX file whose parameters need to be extracted -
*/ - public static void extractParameters(File file) {
-
if (file == null) { -
log.error("Unable to load JMX file.");
Should this throw an exception or return? Otherwise the behaviour when the file is null is difficult to understand.
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/Correlation.java https://github.com/apache/jmeter/pull/499#discussion_r328696144 :
- }
- /**
-
* recursively call the method to find the HTTPSamplerProxy object and -
* prepare a list. -
* -
* @param tree -
* @return Set of HTTPSampleProxy objects. -
*/ - private static Set<HTTPSamplerProxy> convertSubTree(HashTree tree) {
-
for (Object o : new LinkedList<>(tree.list())) { -
TestElement item = (TestElement) o; -
if (item instanceof HTTPSamplerProxy) { -
HTTPSamplerProxy proxyObj = (HTTPSamplerProxy) item; -
samplerList.add(proxyObj);
Does this have to be a member variable? It seems a little confusing to me to be modifying the state of this object and then returning it from this method.It's also not obvious from the name.
It might be clearer to create a local list samplerList here, return that then add the result to the global samplerList if required in the calling method.
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/Correlation.java https://github.com/apache/jmeter/pull/499#discussion_r328697823 :
+import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; +import org.apache.jmeter.protocol.http.util.HTTPArgument; +import org.apache.jmeter.save.SaveService; +import org.apache.jmeter.testelement.TestElement; +import org.apache.jmeter.util.JMeterUtils; +import org.apache.jorphan.collections.HashTree; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory;
+public class Correlation { +
- private static final Logger log = LoggerFactory.getLogger(Correlation.class);
- // Initialize member variables
- private static Map<String, List<String>> candidatesMap = new HashMap<>();
- private static Set<HTTPSamplerProxy> samplerList = new HashSet<>();
Why is this called SampleList but is a Set?
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/CorrelationExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328699163 :
Map<String, String> bodyParameterMap) {
-
readBufferObject(arguments, bodyParameterMap); - }
- /**
-
* Iterate the buffer object and prepare the list of extractor tag. -
* -
* @param arguments -
* @param bodyParameterMap -
*/ - public static void readBufferObject(List<String> arguments,
-
Map<String, String> bodyParameterMap) { -
for (Object sampler : CorrelationRecorder.buffer) { -
log.info("processing of buffer objects start.");
I think info is too high a level for this, especially inside a loop, perhaps debug?
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/CorrelationExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328699987 :
- /**
-
* create the extractor tags based on the content type. eg. {if -
* contentType:text/html then create the HTML extractor tag.} -
* -
* @param sampleResult -
* @param arguments -
* @param bodyParameterMap -
*/ - public static void createExtractor(SampleResult sampleResult,List<String> arguments, Map<String, String> bodyParameterMap) {
-
// TODO-support more extractors like JSON Path -
// extractor and XPath2 extractor. -
for (String argument : arguments) { -
try { -
Map<String, String> htmlExtractor = CreateCssSelectorExtractor.createCssSelectorExtractor(sampleResult.getResponseDataAsString(),
Could this line be made slightly more readable, something like
Map<String, String> htmlExtractor = CreateCssSelectorExtractor.createCssSelectorExtractor( sampleResult.getResponseDataAsString(), bodyParameterMap.get(argument), argument, sampleResult.getSampleLabel(), sampleResult.getContentType());
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/CorrelationExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328700972 :
* @param argument
-
* @return Map Modified map with escaped or decoded values -
*/ - public static Map<String, String> modifyValuesForRegularExpression(Map<String, String> map, String argument) {
-
Set<Entry<String, String>> entries = map.entrySet(); -
try { -
for (Entry<String, String> entry : entries) { -
String key = entry.getKey(); -
String temp = map.get(argument); -
if (temp.indexOf("%3A") >= 0) { -
map.put(key, temp.replace("%3A", ":")); -
} else if (temp.indexOf('+') >= 0
Could .indexOf(X) >= 0 be replaced with .contains(X)?
In src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/CorrelationExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328701488 :
RegexExtractor regexExtractor = (RegexExtractor) testElement;
-
regexExtractor.setRefName(extractor.get(REGEX_EXTRACTOR_VARIABLE_NAME)); -
regexExtractor.setRegex(extractor.get(REGEX_EXTRACTOR_EXPRESSION)); -
regexExtractor.setDefaultValue(ONE); -
regexExtractor.setMatchNumber(ONE); -
return regexExtractor; -
} -
return null; - }
- /**
-
* @param arguments -
* @param bodyParameterMap -
*/ - private static void updateJmxFile(List<String> arguments,
Could params be kept visually closer together e.g.
private static void updateJmxFile( List<String> arguments, String, String> bodyParameterMap) {
In src/protocol/http/src/test/java/org/apache/jmeter/gui/action/TestCorrelationExtractor.java https://github.com/apache/jmeter/pull/499#discussion_r328702078 :
+public class TestCorrelationExtractor { + +
- @SuppressWarnings("deprecation")
- @Test
- public void testcreateExtractor() {
-
Map<String, String> bodyParameterMap = new HashMap<>(); -
bodyParameterMap.put("_csrf", "7d1de481-34af-4342-a9b4-b8288c451f7c"); -
List<String> arguments = new ArrayList<>(); -
arguments.add("_csrf"); -
SampleResult sampleResult = new SampleResult(); -
sampleResult.setResponseData("<html><head><title>Login Page</title></head><body onload='document.f.username.focus();'>"
Does this test data need to be so large? Could some of the tags or tag attributes or text be reduced/removed to make the purpose of the test clearer?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/499?email_source=notifications&email_token=AAXQDSS57O4JSQPRVZC46Y3QLTNNJA5CNFSM4IZ46XI2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCGBVSQQ#pullrequestreview-293820738 , or mute the thread https://github.com/notifications/unsubscribe-auth/AAXQDSUNS6WPD7U2CI72M43QLTNNJANCNFSM4IZ46XIQ . https://github.com/notifications/beacon/AAXQDSXGUPRGLQREK7LKURLQLTNNJA5CNFSM4IZ46XI2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCGBVSQQ.gif
Hi, I would personally like to be in the team that is testing and validating the Auto-Correlation feature in Jmeter. Developers - Please contact me privately anytime with any requests. Thank you very much for all the efforts and cooperation. Sincerely, Shay Ginsbourg Former HP (Mercury) LoadRunner QA Manager
That is easy. Clone this PR, build it, test it and give feedback (either here or on the mailing list). Looking forward to your comments.
Where are the installation and user operational instructions ?
Thanks,
Shay
From: Felix Schumacher [email protected] Sent: Friday, September 27, 2019 11:08 To: apache/jmeter [email protected] Cc: Shay Ginsbourg [email protected]; Comment [email protected] Subject: Re: [apache/jmeter] AutoCorrelation: Add initial support (#499)
Hi, I would personally like to be in the team that is testing and validating the Auto-Correlation feature in Jmeter. Developers - Please contact me privately anytime with any requests. Thank you very much for all the efforts and cooperation. Sincerely, Shay Ginsbourg Former HP (Mercury) LoadRunner QA Manager That is easy. Clone this PR, build it, test it and give feedback (either here or on the mailing list). Looking forward to your comments.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/499?email_source=notifications&email_token=AAXQDSUPNYS5G5YEY4TDD3LQLW5NFA5CNFSM4IZ46XI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7YD7UQ#issuecomment-535838674 , or mute the thread https://github.com/notifications/unsubscribe-auth/AAXQDSQ6VD4VWPFJ2X2RGHLQLW5NFANCNFSM4IZ46XIQ .
Where are the installation and user operational instructions ? Thanks, Shay
For building take a look at CONTRIBUTING.md. Instructions for this extension should be included in the PR. If they are not, then reporting it would be your first completed task :) Instructions on general usage of JMeter can be found on the JMeter homepage
@sginsbourg ,
Instructions to test this PR are as follows:
git clone --depth 100 https://github.com/t-imoto002/jmeter.git jmeter_autocorrelation
cd jmeter_autocorrelation
./gradlew runGui
It will build and launch JMeter, then you could follow the instructions in "Motivation and Context" from the first comment.
To: sginsbourg-san
Where are the installation and user operational instructions ?
Attached screen shot explain use case of auto-correlation. https://bz.apache.org/bugzilla/attachment.cgi?id=36704
Official documents will prepare, all of the requirements and fix is finished.
To: sginsbourg-san
I would personally like to be in the team that is testing and validating the Auto-Correlation feature in Jmeter.
Thank you for interesting our request. I want to work with you. So if any idea, please share us.
Hi,
Can the AutoCorrelation be compiled in the form of a standard JAR that is externally added to Jmeter (in the style of the great collection of Plugins) ?
That would make the AutoCorrelation accessible to every Jmeter user and allow a lot of testing a debugging?
Please consider creating that JAR.
Regards,
Shay Ginsbourg
Former HP (Mercury) LoadRunner QA Manager
From: Felix Schumacher [email protected] Sent: Friday, September 27, 2019 11:33 To: apache/jmeter [email protected] Cc: Shay Ginsbourg [email protected]; Comment [email protected] Subject: Re: [apache/jmeter] AutoCorrelation: Add initial support (#499)
Where are the installation and user operational instructions ? Thanks, Shay
For building take a look at CONTRIBUTING.md https://github.com/apache/jmeter/blob/master/CONTRIBUTING.md . Instructions for this extension should be included in the PR. If they are not, then reporting it would be your first completed task :) Instructions on general usage of JMeter can be found on the JMeter homepage https://jmeter.apache.org
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/499?email_source=notifications&email_token=AAXQDSTYLX5WEGMXNVZJX4DQLXANTA5CNFSM4IZ46XI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7YGEJQ#issuecomment-535847462 , or mute the thread https://github.com/notifications/unsubscribe-auth/AAXQDSWZDQNOBG7FWVYH533QLXANTANCNFSM4IZ46XIQ . https://github.com/notifications/beacon/AAXQDSX57WIDQB7DB6AUCY3QLXANTA5CNFSM4IZ46XI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7YGEJQ.gif
Codecov Report
Merging #499 into master will decrease coverage by
0.75%. The diff coverage is22.44%.
@@ Coverage Diff @@
## master #499 +/- ##
============================================
- Coverage 55.28% 54.53% -0.76%
- Complexity 10088 10205 +117
============================================
Files 1038 1068 +30
Lines 63858 65346 +1488
Branches 7229 7435 +206
============================================
+ Hits 35306 35637 +331
- Misses 26060 27178 +1118
- Partials 2492 2531 +39
| Impacted Files | Coverage Δ | Complexity Δ | |
|---|---|---|---|
| ...apache/jmeter/visualizers/CorrelationRecorder.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| .../jmeter/visualizers/ViewResultsFullVisualizer.java | 40.14% <ø> (ø) |
17.00 <0.00> (ø) |
|
| .../java/org/apache/jmeter/gui/util/FileDialoger.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (ø) |
|
| .../main/java/org/apache/jmeter/save/SaveService.java | 73.79% <ø> (ø) |
41.00 <0.00> (ø) |
|
| ...relation/rule/BoundryExtractorCorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ...rotocol/http/correlation/rule/CorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ...correlation/rule/HtmlExtractorCorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ...correlation/rule/JsonExtractorCorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ...orrelation/rule/RegexExtractorCorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ...rrelation/rule/XPath2ExtractorCorrelationRule.java | 0.00% <0.00%> (ø) |
0.00 <0.00> (?) |
|
| ... and 57 more |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing dataPowered by Codecov. Last update 2289ac9...c77b62b. Read the comment docs.
To: sginsbourg -san.
Can the AutoCorrelation be compiled in the form of a standard JAR that is externally added to Jmeter (in the style of the great collection of Plugins) ?
Currently auto correlation feature related to JMeter's code. Because it need to load JTL file, and for easy to use it read JTL variable on memory. So at now, I have not planed standard jar.
Our team consider this issue, and If you try, we are very happy.
To: FSchumacher-san.
About this pull request, currently we get following 3 feedback and requirement items.
- Architecture change: Different extractors should support different response content type.
- Add UseCase : Import and export correlation rule.
- Auto correlation feature release as plugin.
Should I managed these item as other Enhancements of bugzilla and other pull request ?
To: FSchumacher-san.
About this pull request, currently we get following 3 feedback and requirement items.
* Architecture change: Different extractors should support different response content type. * Add UseCase : Import and export correlation rule. * Auto correlation feature release as plugin.Should I managed these item as other Enhancements of bugzilla and other pull request ?
Hello, It would be better to do it in this PR. Regards
To: Pmouawad-san
Thanks comments. Our team first experienced to contribute this kind of new feature.
I want to know what is the conditions to merged and release this pull request to next release. So would you advice me what kind of task that we should.
@vlsi
Instructions to test this PR are as follows:
git clone --depth 100 https://github.com/t-imoto002/jmeter.git jmeter_autocorrelation cd jmeter_autocorrelation ./gradlew runGuiIt will build and launch JMeter, then you could follow the instructions in "Motivation and Context" from the first comment.
Hi,
I was able to build it following these instructions - but I don't see "correlate" in the right-click menu. Is it still valid way to test it?
Thanks, Alex
@apodelko , the build instructions are still valid, however, I do not follow the development of this feature closely, so I don't really know the way to use it.
However, it looks like the feature has been moved to Tools -> Correlation menu
As vlsi-san reply. We change the location of correlation menu.
Tools -> Correlation have 3 menu.
-
Export Rule Export correlation setting as rule file.
-
Import Rule Import correlation rule that previously made.
-
JMX File Input previous execution of JMX File, and list up correlation list.
So, if the comments of menu location and name, please comments me .
thanks.
@vlsi
Instructions to test this PR are as follows:
git clone --depth 100 https://github.com/t-imoto002/jmeter.git jmeter_autocorrelation cd jmeter_autocorrelation ./gradlew runGuiIt will build and launch JMeter, then you could follow the instructions in "Motivation and Context" from the first comment.
Hi,
I was able to build it following these instructions - but I don't see "correlate" in the right-click menu. Is it still valid way to test it?
Thanks, Alex
Do you have a default set of correlation rules ? I see examples in the test classes ( _csrf, Bearer or [id=javax.faces.ViewState]) but you have a file with rules ? What is the format rule syntax in JSON ? More generally do you have a user manual for this very interesting feature ?
To: Vdaburon-san.
Thanks comments.
Do you have a default set of correlation rules ? I see examples in the test classes ( _csrf, Bearer or [id=javax.faces.ViewState]) but you have a file with rules ?
At now, we don't have default correlation rule. And have no plan to add Jmeter's function. But I want to make and contribute same famous correlation rule like spring, JSF, dot net framework. The procedure and upload site is now considering.
What is the format rule syntax in JSON ? Yes. Our rule format is JSON.
More generally do you have a user manual for this very interesting feature ? We create auto-correlation manual as following, if you can please try our feature.
https://t-imoto002.github.io/autocorrelation_doc/usermanual/correlation.html
Thanks.
Hi, I compiled the auto correlation feature and use it on simple personal web application. And the correlation look fine. In the documentation could you be more exhaustive with JSON rule format.
For example, you add the regex_header but what is the regex_body ? I think is important to add all possibilities (boundary_extractor, regex_extractor ...) May be the default value could be optional but could be declare in the rule json Example : {"name":"refDoc","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor", "defaultValue":"##refDoc##"}
Less important, the naming rule for the correlation variable could be prefixe, upcase, or caseFormatSynthaxe ( LOWER_CAMEL, LOWER_HYPHEN, LOWER_UNDERSCORE, UPPER_CAMEL, UPPER_UNDERSCORE) https://guava.dev/releases/20.0/api/docs/com/google/common/base/CaseFormat.html This configuration could be global before rules { globalConfig { "prefixeVariable":"V_", "suffixeVariable":"", "syntaxe":"UPPER_UNDERSCORE", "defaultValuePrefix":"##", "defaultValueSuffix":"_NOT_FOUND"}
{"name":"refDoc","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor"} becomes {"name":"V_REF_DOC","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor", "defaultValue":"##V_REF_DOC_NOT_FOUND"}
To: vdaburon-san.
I compiled the auto correlation feature and use it on simple personal web application. And the correlation look fine.
In the documentation could you be more exhaustive with JSON rule format.
Our intention was to not allow the user to create the rule file manually, rather, the user can correlate using JMX file once and export existing extractors into rule file by using Export Rule feature.
For example, you add the regex_header but what is the regex_body ? I think is important to add all possibilities (boundary_extractor, regex_extractor ...) May be the default value could be optional but could be declare in the rule json Example : {"name":"refDoc","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor", "defaultValue":"##refDoc##"} We will update the existing documents with the details of all extractors with their rule file keys and values.
Less important, the naming rule for the correlation variable could be prefixe, upcase, or caseFormatSynthaxe ( LOWER_CAMEL, >LOWER_HYPHEN, LOWER_UNDERSCORE, UPPER_CAMEL, UPPER_UNDERSCORE) https://guava.dev/releases/20.0/api/docs/com/google/common/base/CaseFormat.html This configuration could be global before rules { globalConfig { "prefixeVariable":"V_", "suffixeVariable":"", "syntaxe":"UPPER_UNDERSCORE", "defaultValuePrefix":"##", >"defaultValueSuffix":"_NOT_FOUND"} {"name":"refDoc","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor"} becomes {"name":"V_REF_DOC","lBoundary":"Doc=","rBoundary":""> D","type":"boundary_extractor", "defaultValue":"##V_REF_DOC_NOT_FOUND"} Since we have not considered above in our previous development. It requires further investigation. So please guide us how to proceed further.
Thanks.
Hello @pmouawad san,
Thank you for sharing the comments, they are very good suggestions. We have incorporated your comments. Please check and let us know, if we have resolved as per your expectations. Also let us know, in case of any other comment.
Thanks.
@t-imoto002 , can you please clarify why the feature is named correlation?
Frankly speaking, it is not clear what is correlated with what.
Hi Vladimir, Dynamic variables. It is quite an established term in load testing - see, for example, https://www.blazemeter.com/blog/how-to-handle-correlation-in-jmeter/https://huddle.eurostarsoftwaretesting.com/tips-correlation-load-testing/ While there were some complains that is not a good use of that term (considering its meaning in math), it looks like it is too late to change - especially because there is no alternative terms for that.
Thanks,Alex
On Tuesday, April 7, 2020, 6:46:09 AM EDT, Vladimir Sitnikov <[email protected]> wrote:
@t-imoto002 , can you please clarify why the feature is named correlation? Frankly speaking, it is not clear what is correlated with what.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
Hi all.
Is auto-correlation functionality included in Jmeter 5.3 ?
When is its release due ?
Thank you very much, Shay
On Tue, Apr 7, 2020 at 3:25 PM Alexander Podelko [email protected] wrote:
Hi Vladimir, Dynamic variables. It is quite an established term in load testing - see, for example,
https://www.blazemeter.com/blog/how-to-handle-correlation-in-jmeter/https://huddle.eurostarsoftwaretesting.com/tips-correlation-load-testing/ While there were some complains that is not a good use of that term (considering its meaning in math), it looks like it is too late to change - especially because there is no alternative terms for that.
Thanks,Alex
On Tuesday, April 7, 2020, 6:46:09 AM EDT, Vladimir Sitnikov < [email protected]> wrote:
@t-imoto002 , can you please clarify why the feature is named correlation? Frankly speaking, it is not clear what is correlated with what.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/499#issuecomment-610356110, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAXQDSROF77AEULHUNZX3QLRLMLU5ANCNFSM4IZ46XIQ .
--
Sincerely,
Shay Ginsbourg *Performance, Automation, and Load Testing Expert. * Regulatory Affairs Consultant for Medical Software. (Since 2008)
Formerly QA Manager of LoadRunner at Mercury Interactive
M.Sc. cum laude in Bio-Medical Engineering M.Sc. in Mechanical Engineering
Mobile: +972(0)54-6690915 Email: [email protected]
Visit my personal page on LinkedIn at: http://www.linkedin.com/in/shayginsbourg
Hello @sginsbourg , Not for now.
Could you checkout jmeter from github and do: git clone https://github.com/apache/jmeter git checkout -b t-imoto002-master master git pull https://github.com/t-imoto002/jmeter.git master ./gradlew clean runGui
And test it, then give some feedback ?
Thank you
@t-imoto002 , can you please clarify why the feature is named
correlation? Frankly speaking, it is not clear what is correlated with what.
I think "correlation" is frequently used at Jmeter's load testing For example, following blog explain "correlation".
https://tudip.com/blog-post/correlation-in-jmeter-using-post-processor-regular-expression-extractor/
Other load testing tool (like Loadrunner) use the correlation name. I saw this name correlation when i use LR in 1999.
Indeed this is the exact correct name.
The recording is being correlated to the replay so that dynamic values are detected and regex-ed.
-S
On Thu, Apr 9, 2020 at 6:37 PM vdaburon [email protected] wrote:
Other load testing tool (like Loadrunner) use the correlation name. I saw this name correlation when i use LR in 1999.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/499#issuecomment-611595962, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAXQDSQMRUYJUETWRJRBRP3RLXTT7ANCNFSM4IZ46XIQ .
--
Sincerely,
Shay Ginsbourg *Performance, Automation, and Load Testing Expert. * Regulatory Affairs Consultant for Medical Software. (Since 2008)
Formerly QA Manager of LoadRunner at Mercury Interactive
M.Sc. cum laude in Bio-Medical Engineering M.Sc. in Mechanical Engineering
Mobile: +972(0)54-6690915 Email: [email protected]
Visit my personal page on LinkedIn at: http://www.linkedin.com/in/shayginsbourg
Hello @t-imoto002 , I tried to follow the Auto Correlation manual. I did a first recording and saved Test Plan in file 1 I did a second recording and saved Test Plan in file 2 I do step 3, I get "No Response data found. Make sure you have recorded the script and not opened it."
I think there is something missing in documentation. Don't we need to add Correlation Response Recorder as a child of HTTP(S) Test Script Recorder ?
Hi all. Is auto-correlation functionality included in Jmeter 5.3 ? When is its release due ? Thank you very much, Shay On Tue, Apr 7, 2020 at 3:25 PM Alexander Podelko [email protected] wrote: … Hi Vladimir, Dynamic variables. It is quite an established term in load testing - see, for example, https://www.blazemeter.com/blog/how-to-handle-correlation-in-jmeter/https://huddle.eurostarsoftwaretesting.com/tips-correlation-load-testing/ While there were some complains that is not a good use of that term (considering its meaning in math), it looks like it is too late to change - especially because there is no alternative terms for that. Thanks,Alex On Tuesday, April 7, 2020, 6:46:09 AM EDT, Vladimir Sitnikov < @.***> wrote: @t-imoto002 , can you please clarify why the feature is named correlation? Frankly speaking, it is not clear what is correlated with what. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#499 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAXQDSROF77AEULHUNZX3QLRLMLU5ANCNFSM4IZ46XIQ . -- Sincerely, Shay Ginsbourg *Performance, Automation, and Load Testing Expert. * Regulatory Affairs Consultant for Medical Software. (Since 2008) Formerly QA Manager of LoadRunner at Mercury Interactive M.Sc. cum laude in Bio-Medical Engineering M.Sc. in Mechanical Engineering Mobile: +972(0)54-6690915 Email: [email protected] Visit my personal page on LinkedIn at: http://www.linkedin.com/in/shayginsbourg
Hello, You request feature integration but have you tested it ? What is your feedback ? Regards