From ba7fc8381ef0be9c5e24e02f68aa540d03a7d3a7 Mon Sep 17 00:00:00 2001 From: fdelpoggio Date: Thu, 17 Jul 2025 11:30:45 -0300 Subject: [PATCH 01/11] Upgrade JMeter to 5.6.3 --- jmeter-java-dsl/pom.xml | 6 +++--- .../javadsl/core/controllers/FragmentMethodCall.java | 4 ++-- .../jmeter/javadsl/http/DslBaseHttpSampler.java | 5 +---- .../javadsl/codegeneration/DslCodeGeneratorTest.java | 6 +++--- .../jmeter/javadsl/core/StringTemplateAssert.java | 2 +- .../core/controllers/DslIncludeControllerTest.java | 4 ++-- .../core/controllers/DslModuleControllerTest.java | 10 +++++----- .../controllers/DslTestFragmentControllerTest.java | 12 ++++++------ .../jmeter/javadsl/http/DslHttpSamplerTest.java | 2 +- .../src/test/resources/test-plan.template.jmx | 2 +- pom.xml | 2 +- 11 files changed, 26 insertions(+), 29 deletions(-) diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index b3ffaf00..a4cb8fb5 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -89,7 +89,7 @@ commons-io commons-io - 2.11.0 + 2.15.1 org.apache.commons @@ -114,7 +114,7 @@ org.apache.commons commons-pool2 - 2.11.1 + 2.12.0 @@ -182,4 +182,4 @@ - + \ No newline at end of file diff --git a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java index 4f419dee..c675fd37 100644 --- a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java +++ b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java @@ -1,8 +1,8 @@ package us.abstracta.jmeter.javadsl.core.controllers; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; +import java.util.IdentityHashMap; import java.util.Map; import java.util.Set; import org.apache.jmeter.testelement.TestElement; @@ -51,7 +51,7 @@ private static String solveMethodName(TestElement element, MethodCallContext con } private static Map getDefinedMethods(MethodCallContext context) { - return context.getRoot().computeEntryIfAbsent(FragmentMethodCall.class, HashMap::new); + return context.getRoot().computeEntryIfAbsent(FragmentMethodCall.class, IdentityHashMap::new); } private static String buildUniqueName(String elementName, Set existingNames) { diff --git a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/http/DslBaseHttpSampler.java b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/http/DslBaseHttpSampler.java index ea1d4e90..73937b82 100644 --- a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/http/DslBaseHttpSampler.java +++ b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/http/DslBaseHttpSampler.java @@ -253,10 +253,7 @@ protected TestElement buildTestElement() { } HTTPSamplerProxy ret = new HTTPSamplerProxy(); HttpElementHelper.modifyTestElementUrl(ret, protocol, host, port, path); - // We need to use this logic since setPath method triggers additional logic - if (path != null) { - ret.setPath(path); - } + HttpElementHelper.modifyTestElementTimeouts(ret, connectionTimeout, responseTimeout); HttpElementHelper.modifyTestElementProxy(ret, proxyUrl, proxyUser, proxyPassword); return configureHttpTestElement(ret); diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/codegeneration/DslCodeGeneratorTest.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/codegeneration/DslCodeGeneratorTest.java index 64bb6b41..f9dae8da 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/codegeneration/DslCodeGeneratorTest.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/codegeneration/DslCodeGeneratorTest.java @@ -24,7 +24,7 @@ public void shouldGenerateExpectedCodeWhenSimpleJmxIsProvided(@TempDir Path temp throws Exception { File solvedTemplate = solveTemplateResource("test-plan.template.jmx", tempDir); assertThat(new DslCodeGenerator().generateCodeFromJmx(solvedTemplate)) - .isEqualTo( + .isEqualToNormalizingNewlines( solveTestClassTemplate(Collections.singleton(ContentType.class.getName()), "SimpleTest.java")); } @@ -50,7 +50,7 @@ private String solveTestClassTemplate(Set imports, String testPlanCodeRe public void shouldGenerateExpectedCodeWhenRecordedJmxIsProvided() throws Exception { assertThat(new DslCodeGenerator() .generateCodeFromJmx(new TestResource(RESOURCES_FOLDER + "/recorded.jmx").file())) - .isEqualTo(solveTestClassTemplate(Collections.singleton(StandardCharsets.class.getName()), + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.singleton(StandardCharsets.class.getName()), "RecordedTest.java")); } @@ -58,7 +58,7 @@ public void shouldGenerateExpectedCodeWhenRecordedJmxIsProvided() throws Excepti public void shouldGenerateCommentedElementsCodeWhenDisabledElementsInJmx() throws Exception { assertThat(new DslCodeGenerator() .generateCodeFromJmx(new TestResource(RESOURCES_FOLDER + "/disabled-elements.jmx").file())) - .isEqualTo(solveTestClassTemplate(Collections.emptySet(), "DisabledElements.java")); + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.emptySet(), "DisabledElements.java")); } } diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/StringTemplateAssert.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/StringTemplateAssert.java index 3ed8e133..649be002 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/StringTemplateAssert.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/StringTemplateAssert.java @@ -43,7 +43,7 @@ public static StringTemplateAssertString assertThat(String actual) { protected abstract ErrorMessageFactory getErrorMessageFactory(List> diffs); public SELF matches(TestResource template) throws IOException { - return matches(template.rawContents()); + return matches(template.rawContents().replace("\r\n", "\n")); } public SELF matches(String templateContents) throws IOException { diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslIncludeControllerTest.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslIncludeControllerTest.java index 0e93c427..270cae75 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslIncludeControllerTest.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslIncludeControllerTest.java @@ -33,7 +33,7 @@ public void shouldGenerateDslWithFragmentWhenConvertingTestPlanWithIncludeContro buildIncludeControllerJmx(includedJmx) )); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo(buildTestPlanDsl(FRAGMENT_METHOD_CALL)); + .isEqualToNormalizingNewlines(buildTestPlanDsl(FRAGMENT_METHOD_CALL)); } private File buildIncludedTestPlanJmx(Path tmp) throws IOException { @@ -69,7 +69,7 @@ public void shouldReuseFragmentWhenTestPlanWithTwoIncludesWithSameFile(@TempDir buildIncludeControllerJmx(includedJmx) )); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo(buildTestPlanDsl(FRAGMENT_METHOD_CALL, FRAGMENT_METHOD_CALL)); + .isEqualToNormalizingNewlines(buildTestPlanDsl(FRAGMENT_METHOD_CALL, FRAGMENT_METHOD_CALL)); } } diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslModuleControllerTest.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslModuleControllerTest.java index f8a38eb4..f70b9e22 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslModuleControllerTest.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslModuleControllerTest.java @@ -31,7 +31,7 @@ public void shouldReuseFragmentMethodWhenModuleUsesPreviousEnabledFragment(@Temp buildFragmentJmx(), buildModuleJmx(DEFAULT_FRAGMENT_NAME)); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo(buildFragmentPlanDsl( + .isEqualToNormalizingNewlines(buildFragmentPlanDsl( buildThreadGroupDsl(FRAGMENT_METHOD_CALL, FRAGMENT_METHOD_CALL))); } @@ -60,7 +60,7 @@ public void shouldDefineAndUseFragmentMethodWhenModuleUsesLaterEnabledFragment( buildModuleJmx(DEFAULT_FRAGMENT_NAME), buildFragmentJmx()); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo(buildFragmentPlanDsl( + .isEqualToNormalizingNewlines(buildFragmentPlanDsl( buildThreadGroupDsl(FRAGMENT_METHOD_CALL, FRAGMENT_METHOD_CALL))); } @@ -72,7 +72,7 @@ public void shouldUseFragmentMethodWhenModuleUsesDisabledFragment(@TempDir Path buildModuleJmx(DEFAULT_FRAGMENT_NAME) ); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo(buildFragmentPlanDsl( + .isEqualToNormalizingNewlines(buildFragmentPlanDsl( "httpCookies()", "httpCache()", buildThreadGroupDsl("//" + FRAGMENT_METHOD_CALL, FRAGMENT_METHOD_CALL))); @@ -85,7 +85,7 @@ public void shouldDefineAndUseMethodWhenModuleUsesPreviouslyDefinedController(@T buildIfControllerJmx(), buildModuleJmx(IF_CONTROLLER_DEFAULT_NAME)); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo( + .isEqualToNormalizingNewlines( buildIfControllerPlanDsl(IF_CONTROLLER_METHOD_CALL, IF_CONTROLLER_METHOD_CALL)); } @@ -109,7 +109,7 @@ public void shouldDefineAndUseMethodWhenModuleUsesLaterDefinedController(@TempDi buildIfControllerJmx() ); assertThat(jmx2dsl(jmx, tmp)) - .isEqualTo( + .isEqualToNormalizingNewlines( buildIfControllerPlanDsl(IF_CONTROLLER_METHOD_CALL, IF_CONTROLLER_METHOD_CALL)); } diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslTestFragmentControllerTest.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslTestFragmentControllerTest.java index 7b497070..99721ca7 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslTestFragmentControllerTest.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/core/controllers/DslTestFragmentControllerTest.java @@ -57,7 +57,7 @@ public void shouldGenerateDslWithFragmentMethodWhenConvertTestPlanWithFragment( @TempDir Path tmp) throws IOException { String testPlanJmx = buildTestPlanJmx(buildFragmentJmx()); assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl(buildFragmentMethod(), DEFAULT_FRAGMENT_METHOD_CALL)); + .isEqualToNormalizingNewlines(buildTestPlanDsl(buildFragmentMethod(), DEFAULT_FRAGMENT_METHOD_CALL)); } private String buildTestPlanDsl(String method, String child) { @@ -79,7 +79,7 @@ public void shouldGenerateDslWithFragmentNameWhenConvertFragmentNonDefaultName( String testPlanJmx = buildTestPlanJmx(buildFragmentJmx(fragmentName)); String methodName = "myFragment"; assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl( + .isEqualToNormalizingNewlines(buildTestPlanDsl( buildFragmentMethod(methodName, fragmentName), methodName + "()")); } @@ -91,7 +91,7 @@ public void shouldGenerateDslWithFragmentNameWhenConvertFragmentWithNameStarting String testPlanJmx = buildTestPlanJmx(buildFragmentJmx(fragmentName)); String methodName = "fragment" + fragmentName; assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl( + .isEqualToNormalizingNewlines(buildTestPlanDsl( buildFragmentMethod(methodName, fragmentName), methodName + "()")); } @@ -103,7 +103,7 @@ public void shouldGenerateDslWithFragmentNameWhenConvertFragmentWithNameWithSpec String testPlanJmx = buildTestPlanJmx(buildFragmentJmx(fragmentName)); String methodName = "myFragment"; assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl( + .isEqualToNormalizingNewlines(buildTestPlanDsl( buildFragmentMethod(methodName, fragmentName), methodName + "()")); } @@ -116,7 +116,7 @@ public void shouldGenerateDslWithFragmentsWhenConvertFragmentsWithCollidingNames buildFragmentJmx()); String methodName2 = "testFragment2"; assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl( + .isEqualToNormalizingNewlines(buildTestPlanDsl( Arrays.asList( buildFragmentMethod(), buildFragmentMethod(methodName2, DEFAULT_FRAGMENT_NAME)), @@ -130,7 +130,7 @@ public void shouldGenerateDslWithCommentedFragmentCallWhenConvertDisabledFragmen String testPlanJmx = buildTestPlanJmx(buildFragmentDisabledJmx()); String cacheMethodCall = "httpCache()"; assertThat(jmx2dsl(testPlanJmx, tmp)) - .isEqualTo(buildTestPlanDsl(Collections.singletonList(buildFragmentMethod()), + .isEqualToNormalizingNewlines(buildTestPlanDsl(Collections.singletonList(buildFragmentMethod()), Arrays.asList("httpCookies()", cacheMethodCall, "//" + DEFAULT_FRAGMENT_METHOD_CALL)) .replace(cacheMethodCall + ",", cacheMethodCall + "//,")); } diff --git a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/http/DslHttpSamplerTest.java b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/http/DslHttpSamplerTest.java index 9d8ad7a2..ebed77f7 100644 --- a/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/http/DslHttpSamplerTest.java +++ b/jmeter-java-dsl/src/test/java/us/abstracta/jmeter/javadsl/http/DslHttpSamplerTest.java @@ -450,7 +450,7 @@ public void shouldSendMultiPartFormWhenPostRequestWithBodyParts() throws Excepti verify(postRequestedFor(anyUrl()) .withHeader(HTTPConstants.HEADER_CONTENT_TYPE, matching(ContentType.MULTIPART_FORM_DATA.withCharset((String) null) + "; boundary=" - + MULTIPART_BOUNDARY_PATTERN)) + + MULTIPART_BOUNDARY_PATTERN + "; charset=UTF-8")) .withRequestBody(matching( buildMultiPartBodyPattern(part1Name, part1Value, part1Encoding, part2Name, part2File, part2Encoding)))); diff --git a/jmeter-java-dsl/src/test/resources/test-plan.template.jmx b/jmeter-java-dsl/src/test/resources/test-plan.template.jmx index 073d8edb..639e435b 100644 --- a/jmeter-java-dsl/src/test/resources/test-plan.template.jmx +++ b/jmeter-java-dsl/src/test/resources/test-plan.template.jmx @@ -1,5 +1,5 @@ - + diff --git a/pom.xml b/pom.xml index 62b09027..54dc23aa 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 1754515950 1.8 1.8 - 5.5 + 5.6.3 1.17.6 2.35.0 5.9.1 From c303f9df27f568ce5af79088cff0bf1e88061b82 Mon Sep 17 00:00:00 2001 From: Sebastian Lorenzo Date: Wed, 6 Aug 2025 15:29:52 -0300 Subject: [PATCH 02/11] Add dependencies to shade jar in dsl-cli --- jmeter-java-dsl-cli/pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index 0ae71352..121f3384 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -201,6 +201,13 @@ org.apache-extras.beanshell:bsh com.jayway.jsonpath:json-path + + org.jetbrains.kotlin:kotlin-stdlib + org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm + org.jetbrains.kotlinx:kotlinx-coroutines-swing + com.github.ben-manes.caffeine:caffeine + org.jetbrains:annotations + org.checkerframework:checker-qual From 899e336cce3889477924e91d7380f631966e277a Mon Sep 17 00:00:00 2001 From: Sebastian Lorenzo Date: Tue, 16 Sep 2025 15:52:39 -0300 Subject: [PATCH 03/11] Upgrade version and add clarifying comment --- jmeter-java-dsl-azure/pom.xml | 2 +- jmeter-java-dsl-base-remote-engine/pom.xml | 2 +- jmeter-java-dsl-blazemeter/pom.xml | 2 +- jmeter-java-dsl-bridge/pom.xml | 2 +- jmeter-java-dsl-cli/pom.xml | 2 +- jmeter-java-dsl-dashboard/pom.xml | 2 +- jmeter-java-dsl-datadog/pom.xml | 2 +- jmeter-java-dsl-elasticsearch-listener/pom.xml | 2 +- jmeter-java-dsl-graphql/pom.xml | 2 +- jmeter-java-dsl-jdbc/pom.xml | 2 +- jmeter-java-dsl-octoperf/pom.xml | 2 +- jmeter-java-dsl-parallel/pom.xml | 2 +- jmeter-java-dsl-prometheus/pom.xml | 2 +- jmeter-java-dsl-recorder/pom.xml | 2 +- jmeter-java-dsl-wrapper/pom.xml | 2 +- jmeter-java-dsl/pom.xml | 2 +- .../jmeter/javadsl/core/controllers/FragmentMethodCall.java | 3 +++ pom.xml | 2 +- 18 files changed, 20 insertions(+), 17 deletions(-) diff --git a/jmeter-java-dsl-azure/pom.xml b/jmeter-java-dsl-azure/pom.xml index 378c97f3..699ca7cf 100644 --- a/jmeter-java-dsl-azure/pom.xml +++ b/jmeter-java-dsl-azure/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-azure diff --git a/jmeter-java-dsl-base-remote-engine/pom.xml b/jmeter-java-dsl-base-remote-engine/pom.xml index 964ed165..f9c90f6a 100644 --- a/jmeter-java-dsl-base-remote-engine/pom.xml +++ b/jmeter-java-dsl-base-remote-engine/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-base-remote-engine diff --git a/jmeter-java-dsl-blazemeter/pom.xml b/jmeter-java-dsl-blazemeter/pom.xml index d22bb70b..acb0e88d 100644 --- a/jmeter-java-dsl-blazemeter/pom.xml +++ b/jmeter-java-dsl-blazemeter/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-blazemeter diff --git a/jmeter-java-dsl-bridge/pom.xml b/jmeter-java-dsl-bridge/pom.xml index f3e88bee..a0f17640 100644 --- a/jmeter-java-dsl-bridge/pom.xml +++ b/jmeter-java-dsl-bridge/pom.xml @@ -7,7 +7,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-bridge diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index 121f3384..8f82a752 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-cli diff --git a/jmeter-java-dsl-dashboard/pom.xml b/jmeter-java-dsl-dashboard/pom.xml index fa558b74..65936249 100644 --- a/jmeter-java-dsl-dashboard/pom.xml +++ b/jmeter-java-dsl-dashboard/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-dashboard diff --git a/jmeter-java-dsl-datadog/pom.xml b/jmeter-java-dsl-datadog/pom.xml index 7de97226..d5f09552 100644 --- a/jmeter-java-dsl-datadog/pom.xml +++ b/jmeter-java-dsl-datadog/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-datadog diff --git a/jmeter-java-dsl-elasticsearch-listener/pom.xml b/jmeter-java-dsl-elasticsearch-listener/pom.xml index d8ad3ff4..939b6871 100644 --- a/jmeter-java-dsl-elasticsearch-listener/pom.xml +++ b/jmeter-java-dsl-elasticsearch-listener/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-elasticsearch-listener diff --git a/jmeter-java-dsl-graphql/pom.xml b/jmeter-java-dsl-graphql/pom.xml index 6ab5dd4b..f55dd6e9 100644 --- a/jmeter-java-dsl-graphql/pom.xml +++ b/jmeter-java-dsl-graphql/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-jdbc/pom.xml b/jmeter-java-dsl-jdbc/pom.xml index dc6cf109..f719558f 100644 --- a/jmeter-java-dsl-jdbc/pom.xml +++ b/jmeter-java-dsl-jdbc/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-octoperf/pom.xml b/jmeter-java-dsl-octoperf/pom.xml index 9938698f..67fe2753 100644 --- a/jmeter-java-dsl-octoperf/pom.xml +++ b/jmeter-java-dsl-octoperf/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-octoperf diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index c1e63e89..7ab615bd 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-parallel diff --git a/jmeter-java-dsl-prometheus/pom.xml b/jmeter-java-dsl-prometheus/pom.xml index f67df7b1..623c9c57 100644 --- a/jmeter-java-dsl-prometheus/pom.xml +++ b/jmeter-java-dsl-prometheus/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-prometheus diff --git a/jmeter-java-dsl-recorder/pom.xml b/jmeter-java-dsl-recorder/pom.xml index b61f218e..b673d217 100644 --- a/jmeter-java-dsl-recorder/pom.xml +++ b/jmeter-java-dsl-recorder/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-recorder diff --git a/jmeter-java-dsl-wrapper/pom.xml b/jmeter-java-dsl-wrapper/pom.xml index 5ad0eca3..84c140c2 100644 --- a/jmeter-java-dsl-wrapper/pom.xml +++ b/jmeter-java-dsl-wrapper/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl-wrapper diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index a4cb8fb5..a508a99f 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 1.31-SNAPSHOT + 2.0-SNAPSHOT ../pom.xml jmeter-java-dsl diff --git a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java index c675fd37..85eba4c8 100644 --- a/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java +++ b/jmeter-java-dsl/src/main/java/us/abstracta/jmeter/javadsl/core/controllers/FragmentMethodCall.java @@ -51,6 +51,9 @@ private static String solveMethodName(TestElement element, MethodCallContext con } private static Map getDefinedMethods(MethodCallContext context) { + // Since JMeter 5.6.3, TestElement hash calculation changed from object identity + // to property-based hashing. IdentityHashMap is used here to prevent hash collisions + // that occur when multiple TestElements share identical property values. return context.getRoot().computeEntryIfAbsent(FragmentMethodCall.class, IdentityHashMap::new); } diff --git a/pom.xml b/pom.xml index 54dc23aa..f41933e9 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent pom - 1.31-SNAPSHOT + 2.0-SNAPSHOT ${project.artifactId} Parent project for all jmeter-java-dsl modules From 94cec7048b5a8d9d0097565b0e424db446ce68ab Mon Sep 17 00:00:00 2001 From: Sebastian Lorenzo Date: Wed, 17 Sep 2025 00:19:07 -0300 Subject: [PATCH 04/11] Fix issue in release with Selenium --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb719b46..8488fc2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: type: string jobs: release: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 concurrency: blazemeter_test steps: - uses: actions/checkout@v4 @@ -43,7 +43,7 @@ jobs: branch: master file_pattern: 'pom.xml */pom.xml README.md docs/index.md docs/guide/**' - name: package release - run: mvn --batch-mode --no-transfer-progress clean install --settings .github/settings.xml + run: mvn --batch-mode --no-transfer-progress -Dwebdriver.chrome.driver=/usr/bin/chromedriver clean install --settings .github/settings.xml env: BZ_TOKEN: ${{ secrets.BZ_TOKEN }} OCTOPERF_API_KEY: ${{ secrets.OCTOPERF_API_KEY }} From f5f0feb596827adeb1bf1a02da0b0ff61b8e7ed8 Mon Sep 17 00:00:00 2001 From: sebastianlorenzo88 <33757553+sebastianlorenzo88@users.noreply.github.com> Date: Wed, 17 Sep 2025 03:25:40 +0000 Subject: [PATCH 05/11] [skip ci] Set release version --- README.md | 2 +- docs/guide/jmx2dsl.md | 4 ++-- docs/guide/protocols/graphql.md | 4 ++-- docs/guide/protocols/jdbc.md | 4 ++-- docs/guide/recorder/index.md | 4 ++-- docs/guide/reporting/dashboard.md | 4 ++-- docs/guide/reporting/real-time/datadog.md | 4 ++-- docs/guide/reporting/real-time/elasticsearch.md | 4 ++-- docs/guide/reporting/real-time/prometheus.md | 4 ++-- docs/guide/request-generation/parallel-controller.md | 4 ++-- docs/guide/scale/azure.md | 4 ++-- docs/guide/scale/blazemeter.md | 4 ++-- docs/guide/scale/distributed/test/pom.xml | 2 +- docs/guide/scale/octoperf.md | 4 ++-- docs/guide/setup.md | 4 ++-- docs/guide/wrapper.md | 4 ++-- docs/index.md | 2 +- jmeter-java-dsl-azure/pom.xml | 2 +- jmeter-java-dsl-base-remote-engine/pom.xml | 2 +- jmeter-java-dsl-blazemeter/pom.xml | 2 +- jmeter-java-dsl-bridge/pom.xml | 2 +- jmeter-java-dsl-cli/pom.xml | 2 +- jmeter-java-dsl-dashboard/pom.xml | 2 +- jmeter-java-dsl-datadog/pom.xml | 2 +- jmeter-java-dsl-elasticsearch-listener/pom.xml | 2 +- jmeter-java-dsl-graphql/pom.xml | 2 +- jmeter-java-dsl-jdbc/pom.xml | 2 +- jmeter-java-dsl-octoperf/pom.xml | 2 +- jmeter-java-dsl-parallel/pom.xml | 2 +- jmeter-java-dsl-prometheus/pom.xml | 2 +- jmeter-java-dsl-recorder/pom.xml | 2 +- jmeter-java-dsl-wrapper/pom.xml | 2 +- jmeter-java-dsl/pom.xml | 2 +- pom.xml | 4 ++-- 34 files changed, 49 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 168aec5e..e339f165 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you use [maven](https://maven.apache.org/what-is-maven.html), just include th us.abstracta.jmeter jmeter-java-dsl - 1.30 + 2.0 test ``` diff --git a/docs/guide/jmx2dsl.md b/docs/guide/jmx2dsl.md index 9449f016..71e014a7 100644 --- a/docs/guide/jmx2dsl.md +++ b/docs/guide/jmx2dsl.md @@ -13,7 +13,7 @@ java -jar jmdsl.jar jmx2dsl test-plan.jmx ::: code-group-item Jbang ```bash -jbang us.abstracta.jmeter:jmeter-java-dsl-cli:1.30 jmx2dsl test-plan.jmx +jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.0 jmx2dsl test-plan.jmx ``` ::: :::: @@ -29,7 +29,7 @@ executable (eg: chmod +x ./PerformanceTest.java) and just executing it with ./Pe //DEPS org.assertj:assertj-core:3.23.1 //DEPS org.junit.jupiter:junit-jupiter-engine:5.9.1 //DEPS org.junit.platform:junit-platform-launcher:1.9.1 -//DEPS us.abstracta.jmeter:jmeter-java-dsl:1.30 +//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.0 import static org.assertj.core.api.Assertions.assertThat; import static us.abstracta.jmeter.javadsl.JmeterDsl.*; diff --git a/docs/guide/protocols/graphql.md b/docs/guide/protocols/graphql.md index 3d855408..530dd194 100644 --- a/docs/guide/protocols/graphql.md +++ b/docs/guide/protocols/graphql.md @@ -8,14 +8,14 @@ When you want to test a GraphQL service, having properly set each field in an HT us.abstracta.jmeter jmeter-java-dsl-graphql - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-graphql:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-graphql:2.0' ``` ::: :::: diff --git a/docs/guide/protocols/jdbc.md b/docs/guide/protocols/jdbc.md index 7cbf7f13..086c1136 100644 --- a/docs/guide/protocols/jdbc.md +++ b/docs/guide/protocols/jdbc.md @@ -12,14 +12,14 @@ Including the following dependency in your project: us.abstracta.jmeter jmeter-java-dsl-jdbc - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-jdbc:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-jdbc:2.0' ``` ::: :::: diff --git a/docs/guide/recorder/index.md b/docs/guide/recorder/index.md index 812bca1a..8ecbdb82 100644 --- a/docs/guide/recorder/index.md +++ b/docs/guide/recorder/index.md @@ -10,7 +10,7 @@ Here is a small demo using it: You can use [jbang](https://www.jbang.dev/documentation/guide/latest/index.html) to easily execute the recorder with the latest version available. E.g.: ```bash -jbang us.abstracta.jmeter:jmeter-java-dsl-cli:1.30 recorder http://retailstore.test +jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.0 recorder http://retailstore.test ``` ::: @@ -58,7 +58,7 @@ executable (eg: chmod +x ./PerformanceTest.java) and just executing it with ./Pe //DEPS org.assertj:assertj-core:3.23.1 //DEPS org.junit.jupiter:junit-jupiter-engine:5.9.1 //DEPS org.junit.platform:junit-platform-launcher:1.9.1 -//DEPS us.abstracta.jmeter:jmeter-java-dsl:1.30 +//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.0 import static org.assertj.core.api.Assertions.assertThat; import static us.abstracta.jmeter.javadsl.JmeterDsl.*; diff --git a/docs/guide/reporting/dashboard.md b/docs/guide/reporting/dashboard.md index c27e222a..559a2d4f 100644 --- a/docs/guide/reporting/dashboard.md +++ b/docs/guide/reporting/dashboard.md @@ -12,14 +12,14 @@ To use it, you need to add the following dependency: us.abstracta.jmeter jmeter-java-dsl-dashboard - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.0' ``` ::: :::: diff --git a/docs/guide/reporting/real-time/datadog.md b/docs/guide/reporting/real-time/datadog.md index d1bc84fc..45ce1dd9 100644 --- a/docs/guide/reporting/real-time/datadog.md +++ b/docs/guide/reporting/real-time/datadog.md @@ -12,7 +12,7 @@ To use the module, just include the dependency: us.abstracta.jmeter jmeter-java-dsl-datadog - 1.30 + 2.0 test ``` @@ -26,7 +26,7 @@ repositories { dependencies { ... - testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-datadog:1.30' + testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-datadog:2.0' } ``` ::: diff --git a/docs/guide/reporting/real-time/elasticsearch.md b/docs/guide/reporting/real-time/elasticsearch.md index 9e31da67..19da88b6 100644 --- a/docs/guide/reporting/real-time/elasticsearch.md +++ b/docs/guide/reporting/real-time/elasticsearch.md @@ -10,7 +10,7 @@ To use the module, you will need to include the following dependency in your pro us.abstracta.jmeter jmeter-java-dsl-elasticsearch-listener - 1.30 + 2.0 test ``` @@ -24,7 +24,7 @@ repositories { dependencies { ... - testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-elasticsearch-listener:1.30' + testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-elasticsearch-listener:2.0' } ``` ::: diff --git a/docs/guide/reporting/real-time/prometheus.md b/docs/guide/reporting/real-time/prometheus.md index 2f8359fd..c7f7cf86 100644 --- a/docs/guide/reporting/real-time/prometheus.md +++ b/docs/guide/reporting/real-time/prometheus.md @@ -10,14 +10,14 @@ To use the module, you will need to include the following dependency in your pro us.abstracta.jmeter jmeter-java-dsl-prometheus - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-prometheus:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-prometheus:2.0' ``` ::: :::: diff --git a/docs/guide/request-generation/parallel-controller.md b/docs/guide/request-generation/parallel-controller.md index 588034fb..a07714ac 100644 --- a/docs/guide/request-generation/parallel-controller.md +++ b/docs/guide/request-generation/parallel-controller.md @@ -10,14 +10,14 @@ To use it, add the following dependency to your project: us.abstracta.jmeter jmeter-java-dsl-parallel - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.0' ``` ::: :::: diff --git a/docs/guide/scale/azure.md b/docs/guide/scale/azure.md index ba6adbfe..eab39f7b 100644 --- a/docs/guide/scale/azure.md +++ b/docs/guide/scale/azure.md @@ -8,14 +8,14 @@ To use [Azure Load Testing](https://azure.microsoft.com/en-us/products/load-test us.abstracta.jmeter jmeter-java-dsl-azure - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-azure:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-azure:2.0' ``` ::: :::: diff --git a/docs/guide/scale/blazemeter.md b/docs/guide/scale/blazemeter.md index 24224bb3..98267016 100644 --- a/docs/guide/scale/blazemeter.md +++ b/docs/guide/scale/blazemeter.md @@ -8,14 +8,14 @@ By including the following module as a dependency: us.abstracta.jmeter jmeter-java-dsl-blazemeter - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-blazemeter:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-blazemeter:2.0' ``` ::: :::: diff --git a/docs/guide/scale/distributed/test/pom.xml b/docs/guide/scale/distributed/test/pom.xml index 0def9bf1..4bcd2282 100644 --- a/docs/guide/scale/distributed/test/pom.xml +++ b/docs/guide/scale/distributed/test/pom.xml @@ -34,7 +34,7 @@ us.abstracta.jmeter jmeter-java-dsl - 1.30 + 2.0 test diff --git a/docs/guide/scale/octoperf.md b/docs/guide/scale/octoperf.md index 660608e0..314fe16d 100644 --- a/docs/guide/scale/octoperf.md +++ b/docs/guide/scale/octoperf.md @@ -8,14 +8,14 @@ In the same fashion as with BlazeMeter, just by including the following module a us.abstracta.jmeter jmeter-java-dsl-octoperf - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-octoperf:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-octoperf:2.0' ``` ::: :::: diff --git a/docs/guide/setup.md b/docs/guide/setup.md index 8d1d4e27..956c9983 100644 --- a/docs/guide/setup.md +++ b/docs/guide/setup.md @@ -8,14 +8,14 @@ To use the DSL just include it in your project: us.abstracta.jmeter jmeter-java-dsl - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation("us.abstracta.jmeter:jmeter-java-dsl:1.30") { +testImplementation("us.abstracta.jmeter:jmeter-java-dsl:2.0") { exclude("org.apache.jmeter", "bom") } ``` diff --git a/docs/guide/wrapper.md b/docs/guide/wrapper.md index 528b76ff..0796a572 100644 --- a/docs/guide/wrapper.md +++ b/docs/guide/wrapper.md @@ -72,14 +72,14 @@ Include the module on your project: us.abstracta.jmeter jmeter-java-dsl-wrapper - 1.30 + 2.0 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-wrapper:1.30' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-wrapper:2.0' ``` ::: :::: diff --git a/docs/index.md b/docs/index.md index 923977c0..f5990abb 100755 --- a/docs/index.md +++ b/docs/index.md @@ -24,7 +24,7 @@ Add dependency to your project: us.abstracta.jmeter jmeter-java-dsl - 1.30 + 2.0 test ``` diff --git a/jmeter-java-dsl-azure/pom.xml b/jmeter-java-dsl-azure/pom.xml index 699ca7cf..7de6248f 100644 --- a/jmeter-java-dsl-azure/pom.xml +++ b/jmeter-java-dsl-azure/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-azure diff --git a/jmeter-java-dsl-base-remote-engine/pom.xml b/jmeter-java-dsl-base-remote-engine/pom.xml index f9c90f6a..8d21f91d 100644 --- a/jmeter-java-dsl-base-remote-engine/pom.xml +++ b/jmeter-java-dsl-base-remote-engine/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-base-remote-engine diff --git a/jmeter-java-dsl-blazemeter/pom.xml b/jmeter-java-dsl-blazemeter/pom.xml index acb0e88d..7d70b6ea 100644 --- a/jmeter-java-dsl-blazemeter/pom.xml +++ b/jmeter-java-dsl-blazemeter/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-blazemeter diff --git a/jmeter-java-dsl-bridge/pom.xml b/jmeter-java-dsl-bridge/pom.xml index a0f17640..aa282d8c 100644 --- a/jmeter-java-dsl-bridge/pom.xml +++ b/jmeter-java-dsl-bridge/pom.xml @@ -7,7 +7,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-bridge diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index 8f82a752..e5c8c632 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-cli diff --git a/jmeter-java-dsl-dashboard/pom.xml b/jmeter-java-dsl-dashboard/pom.xml index 65936249..0b65a3dc 100644 --- a/jmeter-java-dsl-dashboard/pom.xml +++ b/jmeter-java-dsl-dashboard/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-dashboard diff --git a/jmeter-java-dsl-datadog/pom.xml b/jmeter-java-dsl-datadog/pom.xml index d5f09552..7e07d4c4 100644 --- a/jmeter-java-dsl-datadog/pom.xml +++ b/jmeter-java-dsl-datadog/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-datadog diff --git a/jmeter-java-dsl-elasticsearch-listener/pom.xml b/jmeter-java-dsl-elasticsearch-listener/pom.xml index 939b6871..8ac0a3bc 100644 --- a/jmeter-java-dsl-elasticsearch-listener/pom.xml +++ b/jmeter-java-dsl-elasticsearch-listener/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-elasticsearch-listener diff --git a/jmeter-java-dsl-graphql/pom.xml b/jmeter-java-dsl-graphql/pom.xml index f55dd6e9..08ffe48e 100644 --- a/jmeter-java-dsl-graphql/pom.xml +++ b/jmeter-java-dsl-graphql/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0-SNAPSHOT + 2.0 ../pom.xml diff --git a/jmeter-java-dsl-jdbc/pom.xml b/jmeter-java-dsl-jdbc/pom.xml index f719558f..08803ae9 100644 --- a/jmeter-java-dsl-jdbc/pom.xml +++ b/jmeter-java-dsl-jdbc/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0-SNAPSHOT + 2.0 ../pom.xml diff --git a/jmeter-java-dsl-octoperf/pom.xml b/jmeter-java-dsl-octoperf/pom.xml index 67fe2753..6bca38cd 100644 --- a/jmeter-java-dsl-octoperf/pom.xml +++ b/jmeter-java-dsl-octoperf/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-octoperf diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index 7ab615bd..4487c011 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-parallel diff --git a/jmeter-java-dsl-prometheus/pom.xml b/jmeter-java-dsl-prometheus/pom.xml index 623c9c57..1adf7821 100644 --- a/jmeter-java-dsl-prometheus/pom.xml +++ b/jmeter-java-dsl-prometheus/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-prometheus diff --git a/jmeter-java-dsl-recorder/pom.xml b/jmeter-java-dsl-recorder/pom.xml index b673d217..8934bcdd 100644 --- a/jmeter-java-dsl-recorder/pom.xml +++ b/jmeter-java-dsl-recorder/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-recorder diff --git a/jmeter-java-dsl-wrapper/pom.xml b/jmeter-java-dsl-wrapper/pom.xml index 84c140c2..d2543bf6 100644 --- a/jmeter-java-dsl-wrapper/pom.xml +++ b/jmeter-java-dsl-wrapper/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl-wrapper diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index a508a99f..e47a70c3 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0-SNAPSHOT + 2.0 ../pom.xml jmeter-java-dsl diff --git a/pom.xml b/pom.xml index f41933e9..d9db2ce3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent pom - 2.0-SNAPSHOT + 2.0 ${project.artifactId} Parent project for all jmeter-java-dsl modules @@ -38,7 +38,7 @@ UTF-8 UTF-8 - 1754515950 + 1758079539 1.8 1.8 5.6.3 From bf2f3c29e801a1f8035ae66d767b746fbb7b1def Mon Sep 17 00:00:00 2001 From: sebastianlorenzo88 <33757553+sebastianlorenzo88@users.noreply.github.com> Date: Wed, 17 Sep 2025 03:50:08 +0000 Subject: [PATCH 06/11] [skip ci] Set SNAPSHOT version --- jmeter-java-dsl-azure/pom.xml | 2 +- jmeter-java-dsl-base-remote-engine/pom.xml | 2 +- jmeter-java-dsl-blazemeter/pom.xml | 2 +- jmeter-java-dsl-bridge/pom.xml | 2 +- jmeter-java-dsl-cli/pom.xml | 2 +- jmeter-java-dsl-dashboard/pom.xml | 2 +- jmeter-java-dsl-datadog/pom.xml | 2 +- jmeter-java-dsl-elasticsearch-listener/pom.xml | 2 +- jmeter-java-dsl-graphql/pom.xml | 2 +- jmeter-java-dsl-jdbc/pom.xml | 2 +- jmeter-java-dsl-octoperf/pom.xml | 2 +- jmeter-java-dsl-parallel/pom.xml | 2 +- jmeter-java-dsl-prometheus/pom.xml | 2 +- jmeter-java-dsl-recorder/pom.xml | 2 +- jmeter-java-dsl-wrapper/pom.xml | 2 +- jmeter-java-dsl/pom.xml | 2 +- pom.xml | 4 ++-- 17 files changed, 18 insertions(+), 18 deletions(-) diff --git a/jmeter-java-dsl-azure/pom.xml b/jmeter-java-dsl-azure/pom.xml index 7de6248f..5fd141c9 100644 --- a/jmeter-java-dsl-azure/pom.xml +++ b/jmeter-java-dsl-azure/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-azure diff --git a/jmeter-java-dsl-base-remote-engine/pom.xml b/jmeter-java-dsl-base-remote-engine/pom.xml index 8d21f91d..7f47bb18 100644 --- a/jmeter-java-dsl-base-remote-engine/pom.xml +++ b/jmeter-java-dsl-base-remote-engine/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-base-remote-engine diff --git a/jmeter-java-dsl-blazemeter/pom.xml b/jmeter-java-dsl-blazemeter/pom.xml index 7d70b6ea..9d2866b8 100644 --- a/jmeter-java-dsl-blazemeter/pom.xml +++ b/jmeter-java-dsl-blazemeter/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-blazemeter diff --git a/jmeter-java-dsl-bridge/pom.xml b/jmeter-java-dsl-bridge/pom.xml index aa282d8c..99d71fcc 100644 --- a/jmeter-java-dsl-bridge/pom.xml +++ b/jmeter-java-dsl-bridge/pom.xml @@ -7,7 +7,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-bridge diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index e5c8c632..ec42acaa 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-cli diff --git a/jmeter-java-dsl-dashboard/pom.xml b/jmeter-java-dsl-dashboard/pom.xml index 0b65a3dc..f11d7dca 100644 --- a/jmeter-java-dsl-dashboard/pom.xml +++ b/jmeter-java-dsl-dashboard/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-dashboard diff --git a/jmeter-java-dsl-datadog/pom.xml b/jmeter-java-dsl-datadog/pom.xml index 7e07d4c4..79363a0a 100644 --- a/jmeter-java-dsl-datadog/pom.xml +++ b/jmeter-java-dsl-datadog/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-datadog diff --git a/jmeter-java-dsl-elasticsearch-listener/pom.xml b/jmeter-java-dsl-elasticsearch-listener/pom.xml index 8ac0a3bc..d57c4067 100644 --- a/jmeter-java-dsl-elasticsearch-listener/pom.xml +++ b/jmeter-java-dsl-elasticsearch-listener/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-elasticsearch-listener diff --git a/jmeter-java-dsl-graphql/pom.xml b/jmeter-java-dsl-graphql/pom.xml index 08ffe48e..20734594 100644 --- a/jmeter-java-dsl-graphql/pom.xml +++ b/jmeter-java-dsl-graphql/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0 + 2.1-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-jdbc/pom.xml b/jmeter-java-dsl-jdbc/pom.xml index 08803ae9..b237b49a 100644 --- a/jmeter-java-dsl-jdbc/pom.xml +++ b/jmeter-java-dsl-jdbc/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0 + 2.1-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-octoperf/pom.xml b/jmeter-java-dsl-octoperf/pom.xml index 6bca38cd..119f5a90 100644 --- a/jmeter-java-dsl-octoperf/pom.xml +++ b/jmeter-java-dsl-octoperf/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-octoperf diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index 4487c011..7a5898ed 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-parallel diff --git a/jmeter-java-dsl-prometheus/pom.xml b/jmeter-java-dsl-prometheus/pom.xml index 1adf7821..7f8bc166 100644 --- a/jmeter-java-dsl-prometheus/pom.xml +++ b/jmeter-java-dsl-prometheus/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-prometheus diff --git a/jmeter-java-dsl-recorder/pom.xml b/jmeter-java-dsl-recorder/pom.xml index 8934bcdd..e2c1eb2b 100644 --- a/jmeter-java-dsl-recorder/pom.xml +++ b/jmeter-java-dsl-recorder/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-recorder diff --git a/jmeter-java-dsl-wrapper/pom.xml b/jmeter-java-dsl-wrapper/pom.xml index d2543bf6..9725cc7c 100644 --- a/jmeter-java-dsl-wrapper/pom.xml +++ b/jmeter-java-dsl-wrapper/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl-wrapper diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index e47a70c3..27d31b06 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.0 + 2.1-SNAPSHOT ../pom.xml jmeter-java-dsl diff --git a/pom.xml b/pom.xml index d9db2ce3..a4143e65 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent pom - 2.0 + 2.1-SNAPSHOT ${project.artifactId} Parent project for all jmeter-java-dsl modules @@ -38,7 +38,7 @@ UTF-8 UTF-8 - 1758079539 + 1758081007 1.8 1.8 5.6.3 From 66a0f1d723e53d28609851c96f5040c556d4bb90 Mon Sep 17 00:00:00 2001 From: Sebastian Lorenzo Date: Tue, 23 Sep 2025 15:27:21 -0300 Subject: [PATCH 07/11] Update parallel controller version and add test validation --- jmeter-java-dsl-parallel/pom.xml | 2 +- .../jmeter/javadsl/parallel/ParallelControllerTest.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index 7a5898ed..d129b9a2 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -23,7 +23,7 @@ com.blazemeter jmeter-parallel - 0.11 + 0.12 javax.servlet diff --git a/jmeter-java-dsl-parallel/src/test/java/us/abstracta/jmeter/javadsl/parallel/ParallelControllerTest.java b/jmeter-java-dsl-parallel/src/test/java/us/abstracta/jmeter/javadsl/parallel/ParallelControllerTest.java index 67121f05..1c17eae5 100644 --- a/jmeter-java-dsl-parallel/src/test/java/us/abstracta/jmeter/javadsl/parallel/ParallelControllerTest.java +++ b/jmeter-java-dsl-parallel/src/test/java/us/abstracta/jmeter/javadsl/parallel/ParallelControllerTest.java @@ -5,6 +5,7 @@ import static us.abstracta.jmeter.javadsl.JmeterDsl.testPlan; import static us.abstracta.jmeter.javadsl.JmeterDsl.threadGroup; import static us.abstracta.jmeter.javadsl.parallel.ParallelController.parallelController; +import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.CyclicBarrier; import org.junit.jupiter.api.Nested; @@ -13,6 +14,8 @@ import us.abstracta.jmeter.javadsl.JmeterDslTest; import us.abstracta.jmeter.javadsl.codegeneration.MethodCallBuilderTest; import us.abstracta.jmeter.javadsl.core.DslTestPlan; +import us.abstracta.jmeter.javadsl.core.TestPlanStats; + public class ParallelControllerTest extends JmeterDslTest { @@ -21,7 +24,7 @@ public class ParallelControllerTest extends JmeterDslTest { public void shouldExecuteRequestsInParallelWhenRequestsInsideParallelController() throws Exception { CyclicBarrier barrier = new CyclicBarrier(2); - testPlan( + TestPlanStats stats = testPlan( threadGroup(1, 1, parallelController( httpSampler(wiremockUri) @@ -31,6 +34,7 @@ public void shouldExecuteRequestsInParallelWhenRequestsInsideParallelController( ) ) ).run(); + assertThat(stats.overall().samplesCount()).isEqualTo(2); } @Nested From 8c3886f5444a9541cc70dc374f27e1ddc2aceb88 Mon Sep 17 00:00:00 2001 From: Sebastian Lorenzo Date: Tue, 23 Sep 2025 16:47:50 -0300 Subject: [PATCH 08/11] Update Selenium version --- .github/workflows/release.yml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8488fc2c..11b5a342 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,7 +43,7 @@ jobs: branch: master file_pattern: 'pom.xml */pom.xml README.md docs/index.md docs/guide/**' - name: package release - run: mvn --batch-mode --no-transfer-progress -Dwebdriver.chrome.driver=/usr/bin/chromedriver clean install --settings .github/settings.xml + run: mvn --batch-mode --no-transfer-progress clean install --settings .github/settings.xml env: BZ_TOKEN: ${{ secrets.BZ_TOKEN }} OCTOPERF_API_KEY: ${{ secrets.OCTOPERF_API_KEY }} diff --git a/pom.xml b/pom.xml index a4143e65..5019304f 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ 1.9.1 3.23.1 2.14.2 - 4.18.0 + 4.19.1 1.7.36 2.9.0 From 2c83dd6c42bd6638455f8c3eeb25d0844e028f1f Mon Sep 17 00:00:00 2001 From: sebastianlorenzo88 <33757553+sebastianlorenzo88@users.noreply.github.com> Date: Wed, 24 Sep 2025 01:46:05 +0000 Subject: [PATCH 09/11] [skip ci] Set release version --- README.md | 2 +- docs/guide/jmx2dsl.md | 4 ++-- docs/guide/protocols/graphql.md | 4 ++-- docs/guide/protocols/jdbc.md | 4 ++-- docs/guide/recorder/index.md | 4 ++-- docs/guide/reporting/dashboard.md | 4 ++-- docs/guide/reporting/real-time/datadog.md | 4 ++-- docs/guide/reporting/real-time/elasticsearch.md | 4 ++-- docs/guide/reporting/real-time/prometheus.md | 4 ++-- docs/guide/request-generation/parallel-controller.md | 4 ++-- docs/guide/scale/azure.md | 4 ++-- docs/guide/scale/blazemeter.md | 4 ++-- docs/guide/scale/distributed/test/pom.xml | 2 +- docs/guide/scale/octoperf.md | 4 ++-- docs/guide/setup.md | 4 ++-- docs/guide/wrapper.md | 4 ++-- docs/index.md | 2 +- jmeter-java-dsl-azure/pom.xml | 2 +- jmeter-java-dsl-base-remote-engine/pom.xml | 2 +- jmeter-java-dsl-blazemeter/pom.xml | 2 +- jmeter-java-dsl-bridge/pom.xml | 2 +- jmeter-java-dsl-cli/pom.xml | 2 +- jmeter-java-dsl-dashboard/pom.xml | 2 +- jmeter-java-dsl-datadog/pom.xml | 2 +- jmeter-java-dsl-elasticsearch-listener/pom.xml | 2 +- jmeter-java-dsl-graphql/pom.xml | 2 +- jmeter-java-dsl-jdbc/pom.xml | 2 +- jmeter-java-dsl-octoperf/pom.xml | 2 +- jmeter-java-dsl-parallel/pom.xml | 2 +- jmeter-java-dsl-prometheus/pom.xml | 2 +- jmeter-java-dsl-recorder/pom.xml | 2 +- jmeter-java-dsl-wrapper/pom.xml | 2 +- jmeter-java-dsl/pom.xml | 2 +- pom.xml | 4 ++-- 34 files changed, 49 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index e339f165..a5916b42 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you use [maven](https://maven.apache.org/what-is-maven.html), just include th us.abstracta.jmeter jmeter-java-dsl - 2.0 + 2.1 test ``` diff --git a/docs/guide/jmx2dsl.md b/docs/guide/jmx2dsl.md index 71e014a7..5732d114 100644 --- a/docs/guide/jmx2dsl.md +++ b/docs/guide/jmx2dsl.md @@ -13,7 +13,7 @@ java -jar jmdsl.jar jmx2dsl test-plan.jmx ::: code-group-item Jbang ```bash -jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.0 jmx2dsl test-plan.jmx +jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.1 jmx2dsl test-plan.jmx ``` ::: :::: @@ -29,7 +29,7 @@ executable (eg: chmod +x ./PerformanceTest.java) and just executing it with ./Pe //DEPS org.assertj:assertj-core:3.23.1 //DEPS org.junit.jupiter:junit-jupiter-engine:5.9.1 //DEPS org.junit.platform:junit-platform-launcher:1.9.1 -//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.0 +//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.1 import static org.assertj.core.api.Assertions.assertThat; import static us.abstracta.jmeter.javadsl.JmeterDsl.*; diff --git a/docs/guide/protocols/graphql.md b/docs/guide/protocols/graphql.md index 530dd194..4c0ac063 100644 --- a/docs/guide/protocols/graphql.md +++ b/docs/guide/protocols/graphql.md @@ -8,14 +8,14 @@ When you want to test a GraphQL service, having properly set each field in an HT us.abstracta.jmeter jmeter-java-dsl-graphql - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-graphql:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-graphql:2.1' ``` ::: :::: diff --git a/docs/guide/protocols/jdbc.md b/docs/guide/protocols/jdbc.md index 086c1136..ff1b0173 100644 --- a/docs/guide/protocols/jdbc.md +++ b/docs/guide/protocols/jdbc.md @@ -12,14 +12,14 @@ Including the following dependency in your project: us.abstracta.jmeter jmeter-java-dsl-jdbc - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-jdbc:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-jdbc:2.1' ``` ::: :::: diff --git a/docs/guide/recorder/index.md b/docs/guide/recorder/index.md index 8ecbdb82..29ffd74f 100644 --- a/docs/guide/recorder/index.md +++ b/docs/guide/recorder/index.md @@ -10,7 +10,7 @@ Here is a small demo using it: You can use [jbang](https://www.jbang.dev/documentation/guide/latest/index.html) to easily execute the recorder with the latest version available. E.g.: ```bash -jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.0 recorder http://retailstore.test +jbang us.abstracta.jmeter:jmeter-java-dsl-cli:2.1 recorder http://retailstore.test ``` ::: @@ -58,7 +58,7 @@ executable (eg: chmod +x ./PerformanceTest.java) and just executing it with ./Pe //DEPS org.assertj:assertj-core:3.23.1 //DEPS org.junit.jupiter:junit-jupiter-engine:5.9.1 //DEPS org.junit.platform:junit-platform-launcher:1.9.1 -//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.0 +//DEPS us.abstracta.jmeter:jmeter-java-dsl:2.1 import static org.assertj.core.api.Assertions.assertThat; import static us.abstracta.jmeter.javadsl.JmeterDsl.*; diff --git a/docs/guide/reporting/dashboard.md b/docs/guide/reporting/dashboard.md index 559a2d4f..a049a482 100644 --- a/docs/guide/reporting/dashboard.md +++ b/docs/guide/reporting/dashboard.md @@ -12,14 +12,14 @@ To use it, you need to add the following dependency: us.abstracta.jmeter jmeter-java-dsl-dashboard - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.1' ``` ::: :::: diff --git a/docs/guide/reporting/real-time/datadog.md b/docs/guide/reporting/real-time/datadog.md index 45ce1dd9..4d04becc 100644 --- a/docs/guide/reporting/real-time/datadog.md +++ b/docs/guide/reporting/real-time/datadog.md @@ -12,7 +12,7 @@ To use the module, just include the dependency: us.abstracta.jmeter jmeter-java-dsl-datadog - 2.0 + 2.1 test ``` @@ -26,7 +26,7 @@ repositories { dependencies { ... - testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-datadog:2.0' + testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-datadog:2.1' } ``` ::: diff --git a/docs/guide/reporting/real-time/elasticsearch.md b/docs/guide/reporting/real-time/elasticsearch.md index 19da88b6..073408b7 100644 --- a/docs/guide/reporting/real-time/elasticsearch.md +++ b/docs/guide/reporting/real-time/elasticsearch.md @@ -10,7 +10,7 @@ To use the module, you will need to include the following dependency in your pro us.abstracta.jmeter jmeter-java-dsl-elasticsearch-listener - 2.0 + 2.1 test ``` @@ -24,7 +24,7 @@ repositories { dependencies { ... - testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-elasticsearch-listener:2.0' + testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-elasticsearch-listener:2.1' } ``` ::: diff --git a/docs/guide/reporting/real-time/prometheus.md b/docs/guide/reporting/real-time/prometheus.md index c7f7cf86..6d04e56a 100644 --- a/docs/guide/reporting/real-time/prometheus.md +++ b/docs/guide/reporting/real-time/prometheus.md @@ -10,14 +10,14 @@ To use the module, you will need to include the following dependency in your pro us.abstracta.jmeter jmeter-java-dsl-prometheus - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-prometheus:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-prometheus:2.1' ``` ::: :::: diff --git a/docs/guide/request-generation/parallel-controller.md b/docs/guide/request-generation/parallel-controller.md index a07714ac..e8f7856f 100644 --- a/docs/guide/request-generation/parallel-controller.md +++ b/docs/guide/request-generation/parallel-controller.md @@ -10,14 +10,14 @@ To use it, add the following dependency to your project: us.abstracta.jmeter jmeter-java-dsl-parallel - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-dashboard:2.1' ``` ::: :::: diff --git a/docs/guide/scale/azure.md b/docs/guide/scale/azure.md index eab39f7b..3468b486 100644 --- a/docs/guide/scale/azure.md +++ b/docs/guide/scale/azure.md @@ -8,14 +8,14 @@ To use [Azure Load Testing](https://azure.microsoft.com/en-us/products/load-test us.abstracta.jmeter jmeter-java-dsl-azure - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-azure:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-azure:2.1' ``` ::: :::: diff --git a/docs/guide/scale/blazemeter.md b/docs/guide/scale/blazemeter.md index 98267016..b6f31105 100644 --- a/docs/guide/scale/blazemeter.md +++ b/docs/guide/scale/blazemeter.md @@ -8,14 +8,14 @@ By including the following module as a dependency: us.abstracta.jmeter jmeter-java-dsl-blazemeter - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-blazemeter:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-blazemeter:2.1' ``` ::: :::: diff --git a/docs/guide/scale/distributed/test/pom.xml b/docs/guide/scale/distributed/test/pom.xml index 4bcd2282..b41bbd15 100644 --- a/docs/guide/scale/distributed/test/pom.xml +++ b/docs/guide/scale/distributed/test/pom.xml @@ -34,7 +34,7 @@ us.abstracta.jmeter jmeter-java-dsl - 2.0 + 2.1 test diff --git a/docs/guide/scale/octoperf.md b/docs/guide/scale/octoperf.md index 314fe16d..792befbb 100644 --- a/docs/guide/scale/octoperf.md +++ b/docs/guide/scale/octoperf.md @@ -8,14 +8,14 @@ In the same fashion as with BlazeMeter, just by including the following module a us.abstracta.jmeter jmeter-java-dsl-octoperf - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-octoperf:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-octoperf:2.1' ``` ::: :::: diff --git a/docs/guide/setup.md b/docs/guide/setup.md index 956c9983..18f012ea 100644 --- a/docs/guide/setup.md +++ b/docs/guide/setup.md @@ -8,14 +8,14 @@ To use the DSL just include it in your project: us.abstracta.jmeter jmeter-java-dsl - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation("us.abstracta.jmeter:jmeter-java-dsl:2.0") { +testImplementation("us.abstracta.jmeter:jmeter-java-dsl:2.1") { exclude("org.apache.jmeter", "bom") } ``` diff --git a/docs/guide/wrapper.md b/docs/guide/wrapper.md index 0796a572..b0c1a60f 100644 --- a/docs/guide/wrapper.md +++ b/docs/guide/wrapper.md @@ -72,14 +72,14 @@ Include the module on your project: us.abstracta.jmeter jmeter-java-dsl-wrapper - 2.0 + 2.1 test ``` ::: ::: code-group-item Gradle ```groovy -testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-wrapper:2.0' +testImplementation 'us.abstracta.jmeter:jmeter-java-dsl-wrapper:2.1' ``` ::: :::: diff --git a/docs/index.md b/docs/index.md index f5990abb..c89660aa 100755 --- a/docs/index.md +++ b/docs/index.md @@ -24,7 +24,7 @@ Add dependency to your project: us.abstracta.jmeter jmeter-java-dsl - 2.0 + 2.1 test ``` diff --git a/jmeter-java-dsl-azure/pom.xml b/jmeter-java-dsl-azure/pom.xml index 5fd141c9..f1b9296f 100644 --- a/jmeter-java-dsl-azure/pom.xml +++ b/jmeter-java-dsl-azure/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-azure diff --git a/jmeter-java-dsl-base-remote-engine/pom.xml b/jmeter-java-dsl-base-remote-engine/pom.xml index 7f47bb18..93c20f03 100644 --- a/jmeter-java-dsl-base-remote-engine/pom.xml +++ b/jmeter-java-dsl-base-remote-engine/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-base-remote-engine diff --git a/jmeter-java-dsl-blazemeter/pom.xml b/jmeter-java-dsl-blazemeter/pom.xml index 9d2866b8..63abc82f 100644 --- a/jmeter-java-dsl-blazemeter/pom.xml +++ b/jmeter-java-dsl-blazemeter/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-blazemeter diff --git a/jmeter-java-dsl-bridge/pom.xml b/jmeter-java-dsl-bridge/pom.xml index 99d71fcc..17903bf6 100644 --- a/jmeter-java-dsl-bridge/pom.xml +++ b/jmeter-java-dsl-bridge/pom.xml @@ -7,7 +7,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-bridge diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index ec42acaa..5c6b3367 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-cli diff --git a/jmeter-java-dsl-dashboard/pom.xml b/jmeter-java-dsl-dashboard/pom.xml index f11d7dca..34a7ba23 100644 --- a/jmeter-java-dsl-dashboard/pom.xml +++ b/jmeter-java-dsl-dashboard/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-dashboard diff --git a/jmeter-java-dsl-datadog/pom.xml b/jmeter-java-dsl-datadog/pom.xml index 79363a0a..5cc545e7 100644 --- a/jmeter-java-dsl-datadog/pom.xml +++ b/jmeter-java-dsl-datadog/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-datadog diff --git a/jmeter-java-dsl-elasticsearch-listener/pom.xml b/jmeter-java-dsl-elasticsearch-listener/pom.xml index d57c4067..8ac44b06 100644 --- a/jmeter-java-dsl-elasticsearch-listener/pom.xml +++ b/jmeter-java-dsl-elasticsearch-listener/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-elasticsearch-listener diff --git a/jmeter-java-dsl-graphql/pom.xml b/jmeter-java-dsl-graphql/pom.xml index 20734594..8d6a2e32 100644 --- a/jmeter-java-dsl-graphql/pom.xml +++ b/jmeter-java-dsl-graphql/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1-SNAPSHOT + 2.1 ../pom.xml diff --git a/jmeter-java-dsl-jdbc/pom.xml b/jmeter-java-dsl-jdbc/pom.xml index b237b49a..9a1fdb6f 100644 --- a/jmeter-java-dsl-jdbc/pom.xml +++ b/jmeter-java-dsl-jdbc/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1-SNAPSHOT + 2.1 ../pom.xml diff --git a/jmeter-java-dsl-octoperf/pom.xml b/jmeter-java-dsl-octoperf/pom.xml index 119f5a90..77346de5 100644 --- a/jmeter-java-dsl-octoperf/pom.xml +++ b/jmeter-java-dsl-octoperf/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-octoperf diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index d129b9a2..286afb22 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-parallel diff --git a/jmeter-java-dsl-prometheus/pom.xml b/jmeter-java-dsl-prometheus/pom.xml index 7f8bc166..bda49425 100644 --- a/jmeter-java-dsl-prometheus/pom.xml +++ b/jmeter-java-dsl-prometheus/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-prometheus diff --git a/jmeter-java-dsl-recorder/pom.xml b/jmeter-java-dsl-recorder/pom.xml index e2c1eb2b..f6e65e07 100644 --- a/jmeter-java-dsl-recorder/pom.xml +++ b/jmeter-java-dsl-recorder/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-recorder diff --git a/jmeter-java-dsl-wrapper/pom.xml b/jmeter-java-dsl-wrapper/pom.xml index 9725cc7c..18ea502f 100644 --- a/jmeter-java-dsl-wrapper/pom.xml +++ b/jmeter-java-dsl-wrapper/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl-wrapper diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index 27d31b06..1767947d 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1-SNAPSHOT + 2.1 ../pom.xml jmeter-java-dsl diff --git a/pom.xml b/pom.xml index 5019304f..0b6c29cd 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent pom - 2.1-SNAPSHOT + 2.1 ${project.artifactId} Parent project for all jmeter-java-dsl modules @@ -38,7 +38,7 @@ UTF-8 UTF-8 - 1758081007 + 1758678364 1.8 1.8 5.6.3 From 325c554e71bd5c5f1a30cf055d1a478ad76bbaee Mon Sep 17 00:00:00 2001 From: sebastianlorenzo88 <33757553+sebastianlorenzo88@users.noreply.github.com> Date: Wed, 24 Sep 2025 02:12:10 +0000 Subject: [PATCH 10/11] [skip ci] Set SNAPSHOT version --- jmeter-java-dsl-azure/pom.xml | 2 +- jmeter-java-dsl-base-remote-engine/pom.xml | 2 +- jmeter-java-dsl-blazemeter/pom.xml | 2 +- jmeter-java-dsl-bridge/pom.xml | 2 +- jmeter-java-dsl-cli/pom.xml | 2 +- jmeter-java-dsl-dashboard/pom.xml | 2 +- jmeter-java-dsl-datadog/pom.xml | 2 +- jmeter-java-dsl-elasticsearch-listener/pom.xml | 2 +- jmeter-java-dsl-graphql/pom.xml | 2 +- jmeter-java-dsl-jdbc/pom.xml | 2 +- jmeter-java-dsl-octoperf/pom.xml | 2 +- jmeter-java-dsl-parallel/pom.xml | 2 +- jmeter-java-dsl-prometheus/pom.xml | 2 +- jmeter-java-dsl-recorder/pom.xml | 2 +- jmeter-java-dsl-wrapper/pom.xml | 2 +- jmeter-java-dsl/pom.xml | 2 +- pom.xml | 4 ++-- 17 files changed, 18 insertions(+), 18 deletions(-) diff --git a/jmeter-java-dsl-azure/pom.xml b/jmeter-java-dsl-azure/pom.xml index f1b9296f..7656fc07 100644 --- a/jmeter-java-dsl-azure/pom.xml +++ b/jmeter-java-dsl-azure/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-azure diff --git a/jmeter-java-dsl-base-remote-engine/pom.xml b/jmeter-java-dsl-base-remote-engine/pom.xml index 93c20f03..d8cd4d0c 100644 --- a/jmeter-java-dsl-base-remote-engine/pom.xml +++ b/jmeter-java-dsl-base-remote-engine/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-base-remote-engine diff --git a/jmeter-java-dsl-blazemeter/pom.xml b/jmeter-java-dsl-blazemeter/pom.xml index 63abc82f..bb2fe346 100644 --- a/jmeter-java-dsl-blazemeter/pom.xml +++ b/jmeter-java-dsl-blazemeter/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-blazemeter diff --git a/jmeter-java-dsl-bridge/pom.xml b/jmeter-java-dsl-bridge/pom.xml index 17903bf6..1b741c78 100644 --- a/jmeter-java-dsl-bridge/pom.xml +++ b/jmeter-java-dsl-bridge/pom.xml @@ -7,7 +7,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-bridge diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index 5c6b3367..e6a72064 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-cli diff --git a/jmeter-java-dsl-dashboard/pom.xml b/jmeter-java-dsl-dashboard/pom.xml index 34a7ba23..dd6a3229 100644 --- a/jmeter-java-dsl-dashboard/pom.xml +++ b/jmeter-java-dsl-dashboard/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-dashboard diff --git a/jmeter-java-dsl-datadog/pom.xml b/jmeter-java-dsl-datadog/pom.xml index 5cc545e7..c80769bb 100644 --- a/jmeter-java-dsl-datadog/pom.xml +++ b/jmeter-java-dsl-datadog/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-datadog diff --git a/jmeter-java-dsl-elasticsearch-listener/pom.xml b/jmeter-java-dsl-elasticsearch-listener/pom.xml index 8ac44b06..82a51702 100644 --- a/jmeter-java-dsl-elasticsearch-listener/pom.xml +++ b/jmeter-java-dsl-elasticsearch-listener/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-elasticsearch-listener diff --git a/jmeter-java-dsl-graphql/pom.xml b/jmeter-java-dsl-graphql/pom.xml index 8d6a2e32..2c2198eb 100644 --- a/jmeter-java-dsl-graphql/pom.xml +++ b/jmeter-java-dsl-graphql/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1 + 2.2-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-jdbc/pom.xml b/jmeter-java-dsl-jdbc/pom.xml index 9a1fdb6f..a0d8e563 100644 --- a/jmeter-java-dsl-jdbc/pom.xml +++ b/jmeter-java-dsl-jdbc/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1 + 2.2-SNAPSHOT ../pom.xml diff --git a/jmeter-java-dsl-octoperf/pom.xml b/jmeter-java-dsl-octoperf/pom.xml index 77346de5..8655d11d 100644 --- a/jmeter-java-dsl-octoperf/pom.xml +++ b/jmeter-java-dsl-octoperf/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-octoperf diff --git a/jmeter-java-dsl-parallel/pom.xml b/jmeter-java-dsl-parallel/pom.xml index 286afb22..af16d69a 100644 --- a/jmeter-java-dsl-parallel/pom.xml +++ b/jmeter-java-dsl-parallel/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-parallel diff --git a/jmeter-java-dsl-prometheus/pom.xml b/jmeter-java-dsl-prometheus/pom.xml index bda49425..374cde4d 100644 --- a/jmeter-java-dsl-prometheus/pom.xml +++ b/jmeter-java-dsl-prometheus/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-prometheus diff --git a/jmeter-java-dsl-recorder/pom.xml b/jmeter-java-dsl-recorder/pom.xml index f6e65e07..315eb109 100644 --- a/jmeter-java-dsl-recorder/pom.xml +++ b/jmeter-java-dsl-recorder/pom.xml @@ -6,7 +6,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-recorder diff --git a/jmeter-java-dsl-wrapper/pom.xml b/jmeter-java-dsl-wrapper/pom.xml index 18ea502f..4f5bc5ad 100644 --- a/jmeter-java-dsl-wrapper/pom.xml +++ b/jmeter-java-dsl-wrapper/pom.xml @@ -6,7 +6,7 @@ jmeter-java-dsl-parent us.abstracta.jmeter - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl-wrapper diff --git a/jmeter-java-dsl/pom.xml b/jmeter-java-dsl/pom.xml index 1767947d..9cda035c 100644 --- a/jmeter-java-dsl/pom.xml +++ b/jmeter-java-dsl/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent - 2.1 + 2.2-SNAPSHOT ../pom.xml jmeter-java-dsl diff --git a/pom.xml b/pom.xml index 0b6c29cd..105ad5fa 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ us.abstracta.jmeter jmeter-java-dsl-parent pom - 2.1 + 2.2-SNAPSHOT ${project.artifactId} Parent project for all jmeter-java-dsl modules @@ -38,7 +38,7 @@ UTF-8 UTF-8 - 1758678364 + 1758679929 1.8 1.8 5.6.3 From cb80fd80763560d31c76bfadd695ec5100b53ef0 Mon Sep 17 00:00:00 2001 From: fdelpoggio Date: Tue, 28 Oct 2025 10:52:13 -0300 Subject: [PATCH 11/11] Add WebSocket support to JMeterDSL --- docs/guide/protocols/websocket/index.md | 210 ++++++++ jmeter-java-dsl-cli/pom.xml | 1 - .../jmeter/javadsl/jmx2dsl/Jmx2DslIT.java | 4 +- jmeter-java-dsl-websocket/pom.xml | 39 ++ .../websocket/DslWebsocketSampler.java | 463 ++++++++++++++++++ .../java/DslWebsocketCodeGeneratorTest.java | 86 ++++ .../test/java/DslWebsocketSamplerTest.java | 217 ++++++++ .../ComplexWebSocketTest.java | 14 + .../DisabledWebSocketElements.java | 16 + .../DisabledWebSocketElementsTest.java | 28 ++ .../SimpleWebSocketTest.java | 14 + .../WebSocketWithAssertionsTest.java | 18 + .../WebSocketWithVariablesTest.java | 18 + .../complex-websocket.jmx | 68 +++ .../disabled-websocket-elements.jmx | 84 ++++ .../websocket-test-plan.template.jmx | 71 +++ .../websocket-with-assertions.jmx | 82 ++++ .../websocket-with-variables.jmx | 100 ++++ pom.xml | 1 + 19 files changed, 1531 insertions(+), 3 deletions(-) create mode 100644 docs/guide/protocols/websocket/index.md create mode 100644 jmeter-java-dsl-websocket/pom.xml create mode 100644 jmeter-java-dsl-websocket/src/main/java/us/abstracta/jmeter/javadsl/websocket/DslWebsocketSampler.java create mode 100644 jmeter-java-dsl-websocket/src/test/java/DslWebsocketCodeGeneratorTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/java/DslWebsocketSamplerTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/ComplexWebSocketTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElements.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElementsTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/SimpleWebSocketTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithAssertionsTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithVariablesTest.java create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/complex-websocket.jmx create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/disabled-websocket-elements.jmx create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-test-plan.template.jmx create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-assertions.jmx create mode 100644 jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-variables.jmx diff --git a/docs/guide/protocols/websocket/index.md b/docs/guide/protocols/websocket/index.md new file mode 100644 index 00000000..0add822f --- /dev/null +++ b/docs/guide/protocols/websocket/index.md @@ -0,0 +1,210 @@ +# WebSocket Sampler Documentation + +## Overview + +The `DslWebsocketSampler` class provides a Java DSL for creating WebSocket performance tests using JMeter. It supports the full WebSocket lifecycle including connection, data transmission, and disconnection operations. + +## Features + +- **Connection Management**: Establish and close WebSocket connections +- **Data Transmission**: Send and receive WebSocket messages +- **URL Parsing**: Automatic parsing of WebSocket URLs (ws:// and wss://) +- **Timeout Configuration**: Configurable connection and response timeouts +- **TLS Support**: Secure WebSocket connections with WSS protocol +- **Fluent API**: Method chaining for easy configuration + +## Main Components + +### 1. DslWebsocketSampler (Main Class) + +The main class that provides static factory methods for creating different types of WebSocket samplers. + +#### Static Methods + +- `webSocketSampler()` - Creates a basic WebSocket sampler +- `connect()` - Creates a WebSocket connection sampler +- `connect(String url)` - Creates a WebSocket connection sampler with URL parsing +- `disconnect()` - Creates a WebSocket disconnection sampler +- `write()` - Creates a WebSocket write sampler +- `read()` - Creates a WebSocket read sampler + +### 2. DslConnectSampler (Connection Operations) + +Handles WebSocket connection establishment. + +#### Configuration Methods + +- `connectionTimeout(String timeout)` - Sets connection timeout in milliseconds +- `responseTimeout(String timeout)` - Sets response timeout in milliseconds +- `server(String server)` - Sets the WebSocket server hostname +- `port(String port)` - Sets the WebSocket server port +- `path(String path)` - Sets the WebSocket path +- `tls(boolean tls)` - Enables/disables TLS encryption + +#### URL Parsing + +The `connect(String url)` method automatically parses WebSocket URLs and extracts: +- Protocol (ws:// or wss://) +- Hostname +- Port (defaults to 80 for ws://, 443 for wss://) +- Path and query parameters +- TLS configuration + +**Supported URL formats:** +- `ws://localhost:8080/websocket` +- `wss://example.com:8443/chat?room=general` +- `wss://api.example.com/ws` + +### 3. DslDisconnectSampler (Disconnection Operations) + +Handles WebSocket connection closure. + +#### Configuration Methods + +- `responseTimeout(String timeout)` - Sets response timeout in milliseconds +- `statusCode(String statusCode)` - Sets the close status code (e.g., "1000" for normal closure) + +### 4. DslWriteSampler (Write Operations) + +Handles sending data through WebSocket connections. + +#### Configuration Methods + +- `connectionTimeout(String timeout)` - Sets connection timeout in milliseconds +- `requestData(String requestData)` - Sets the data to send +- `createNewConnection(boolean createNewConnection)` - Whether to create a new connection +- `loadDataFromFile(boolean loadDataFromFile)` - Whether to load data from a file + +### 5. DslReadSampler (Read Operations) + +Handles receiving data from WebSocket connections. + +#### Configuration Methods + +- `connectionTimeout(String timeout)` - Sets connection timeout in milliseconds +- `responseTimeout(String timeout)` - Sets response timeout in milliseconds +- `createNewConnection(boolean createNewConnection)` - Whether to create a new connection + +## Usage Examples + +### Basic WebSocket Test + +```java +import static us.abstracta.jmeter.javadsl.JmeterDsl.*; +import us.abstracta.jmeter.javadsl.websocket.DslWebsocketSampler; +import us.abstracta.jmeter.javadsl.core.TestPlanStats; + +public class Test { + public static void main(String[] args) throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + // Connect to WebSocket server + DslWebsocketSampler + .connect("wss://ws.postman-echo.com/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + + // Send a message + DslWebsocketSampler + .write() + .requestData("Hello WebSocket!") + .createNewConnection(false), + + // Read the response + DslWebsocketSampler + .read() + .responseTimeout("5000") + .createNewConnection(false) + .children( + responseAssertion() + .equalsToStrings("Hello WebSocket!") + ), + + // Close the connection + DslWebsocketSampler + .disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ).run(); + } +} +``` + +### Manual Connection Configuration + +```java +DslWebsocketSampler + .connect() + .server("localhost") + .port("8080") + .path("/websocket") + .tls(false) + .connectionTimeout("5000") + .responseTimeout("3000") +``` + +### Connection with Assertions + +```java +DslWebsocketSampler + .read() + .responseTimeout("5000") + .createNewConnection(false) + .children( + responseAssertion() + .containsSubstrings("expected response") + ) +``` + +## Error Handling + +### Invalid URL Handling + +```java +// This will throw IllegalArgumentException +DslWebsocketSampler.connect("http://localhost:80/test"); +``` + +The URL parser validates: +- Protocol must be `ws://` or `wss://` +- Hostname is required +- Valid URI syntax + +### Connection Timeouts + +Configure appropriate timeouts to handle network issues: + +```java +DslWebsocketSampler + .connect("wss://example.com/ws") + .connectionTimeout("10000") // 10 seconds + .responseTimeout("5000") // 5 seconds +``` + +## Best Practices + +1. **Connection Reuse**: Set `createNewConnection(false)` for write/read operations to reuse existing connections +2. **Timeout Configuration**: Always set appropriate timeouts to avoid hanging tests +3. **Error Handling**: Use response assertions to validate WebSocket responses +4. **URL Parsing**: Use the `connect(String url)` method for cleaner code when you have complete URLs +5. **Status Codes**: Use standard WebSocket close codes (1000 for normal closure) + +## Integration with Test Plans + +WebSocket samplers integrate seamlessly with other JMeter DSL components: + +```java +testPlan( + threadGroup(10, 100, + // WebSocket operations + DslWebsocketSampler.connect("wss://api.example.com/ws"), + DslWebsocketSampler.write().requestData("test data"), + DslWebsocketSampler.read(), + DslWebsocketSampler.disconnect(), + ), + // Results collection + jtlWriter("results.jtl"), + resultsTreeVisualizer() +) +``` diff --git a/jmeter-java-dsl-cli/pom.xml b/jmeter-java-dsl-cli/pom.xml index e6a72064..edc2097b 100644 --- a/jmeter-java-dsl-cli/pom.xml +++ b/jmeter-java-dsl-cli/pom.xml @@ -201,7 +201,6 @@ org.apache-extras.beanshell:bsh com.jayway.jsonpath:json-path - org.jetbrains.kotlin:kotlin-stdlib org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm org.jetbrains.kotlinx:kotlinx-coroutines-swing diff --git a/jmeter-java-dsl-cli/src/test/java/us/abstracta/jmeter/javadsl/jmx2dsl/Jmx2DslIT.java b/jmeter-java-dsl-cli/src/test/java/us/abstracta/jmeter/javadsl/jmx2dsl/Jmx2DslIT.java index 0cba9a49..fa99aeb9 100644 --- a/jmeter-java-dsl-cli/src/test/java/us/abstracta/jmeter/javadsl/jmx2dsl/Jmx2DslIT.java +++ b/jmeter-java-dsl-cli/src/test/java/us/abstracta/jmeter/javadsl/jmx2dsl/Jmx2DslIT.java @@ -18,8 +18,8 @@ public class Jmx2DslIT { @Test public void shouldGetConvertedFileWhenConvert() throws Exception { Process p = startCommand("jmx2dsl", new TestResource("test-plan.jmx").filePath()); - assertThat(getProcessOutput(p)) - .isEqualTo(buildConvertedTestClass()); + assertThat(getProcessOutput(p).replace("\r\n", "\n")) + .isEqualTo(buildConvertedTestClass().replace("\r\n", "\n")); } private Process startCommand(String command, String... args) throws IOException { diff --git a/jmeter-java-dsl-websocket/pom.xml b/jmeter-java-dsl-websocket/pom.xml new file mode 100644 index 00000000..af4f3d0e --- /dev/null +++ b/jmeter-java-dsl-websocket/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + us.abstracta.jmeter + jmeter-java-dsl-parent + 1.30-SNAPSHOT + ../pom.xml + + + us.abstracta.jmeter.javadsl.websocket + jmeter-java-dsl-websocket + + + + us.abstracta.jmeter + jmeter-java-dsl + ${project.version} + + + net.luminis.jmeter + jmeter-websocket-samplers + 1.3.1 + + + org.apache.jmeter + ApacheJMeter_core + + + org.apache.jmeter + jorphan + + + + + + \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/main/java/us/abstracta/jmeter/javadsl/websocket/DslWebsocketSampler.java b/jmeter-java-dsl-websocket/src/main/java/us/abstracta/jmeter/javadsl/websocket/DslWebsocketSampler.java new file mode 100644 index 00000000..f49b21fe --- /dev/null +++ b/jmeter-java-dsl-websocket/src/main/java/us/abstracta/jmeter/javadsl/websocket/DslWebsocketSampler.java @@ -0,0 +1,463 @@ +package us.abstracta.jmeter.javadsl.websocket; + +import eu.luminis.jmeter.wssampler.CloseWebSocketSampler; +import eu.luminis.jmeter.wssampler.CloseWebSocketSamplerGui; +import eu.luminis.jmeter.wssampler.DataPayloadType; +import eu.luminis.jmeter.wssampler.OpenWebSocketSampler; +import eu.luminis.jmeter.wssampler.OpenWebSocketSamplerGui; +import eu.luminis.jmeter.wssampler.SingleReadWebSocketSampler; +import eu.luminis.jmeter.wssampler.SingleReadWebSocketSampler.DataType; +import eu.luminis.jmeter.wssampler.SingleReadWebSocketSamplerGui; +import eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler; +import eu.luminis.jmeter.wssampler.SingleWriteWebSocketSamplerGui; +import java.lang.reflect.Method; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.List; +import org.apache.jmeter.testelement.TestElement; +import us.abstracta.jmeter.javadsl.codegeneration.MethodCall; +import us.abstracta.jmeter.javadsl.codegeneration.MethodCallContext; +import us.abstracta.jmeter.javadsl.codegeneration.MethodParam; +import us.abstracta.jmeter.javadsl.codegeneration.SingleTestElementCallBuilder; +import us.abstracta.jmeter.javadsl.codegeneration.TestElementParamBuilder; +import us.abstracta.jmeter.javadsl.codegeneration.params.StringParam; +import us.abstracta.jmeter.javadsl.core.samplers.BaseSampler; + +public class DslWebsocketSampler extends BaseSampler { + private static final String DEFAULT_NAME = "Websocket Sampler"; + + /** + * Creates a WebSocket sampler with URL parsing. + * + * @param name the name of the sampler + */ + protected DslWebsocketSampler(String name) { + super(name == null ? DEFAULT_NAME : name, OpenWebSocketSamplerGui.class); + } + + /** + * Creates a WebSocket sampler. + * + * @return the configured sampler + */ + public static DslWebsocketSampler webSocketSampler() { + return new DslWebsocketSampler("WebSocket Sampler"); + } + + /** + * Creates a WebSocket connect sampler. + * + * @return the connect sampler + */ + public static DslConnectSampler connect() { + return new DslConnectSampler(); + } + + /** + * Creates a WebSocket connect sampler with URL parsing. + * + * @param url the WebSocket URL to parse + * @return the connect sampler + */ + public static DslConnectSampler connect(String url) { + DslConnectSampler sampler = new DslConnectSampler(); + sampler.parseUrl(url); + return sampler; + } + + /** + * Creates a WebSocket disconnect sampler. + * + * @return the disconnect sampler + */ + public static DslDisconnectSampler disconnect() { + return new DslDisconnectSampler(); + } + + /** + * Creates a WebSocket write sampler. + * + * @return the write sampler + */ + public static DslWriteSampler write() { + return new DslWriteSampler(); + } + + /** + * Creates a WebSocket read sampler. + * + * @return the read sampler + */ + public static DslReadSampler read() { + return new DslReadSampler(); + } + + @Override + protected TestElement buildTestElement() { + throw new UnsupportedOperationException( + "Use specific sampler types: connect(), disconnect(), write(), or read()"); + } + + /** + * Inner class for WebSocket connect operations. + */ + public static class DslConnectSampler extends BaseSampler { + private String connectionTimeout; + private String responseTimeout; + private String server; + private String port; + private String path; + private boolean tls; + + public DslConnectSampler() { + super("WebSocket Open Connection", OpenWebSocketSamplerGui.class); + } + + /** + * Parses a WebSocket URL and sets the corresponding fields. + * + * @param url the WebSocket URL to parse + * @throws IllegalArgumentException if the URL is invalid + */ + private void parseUrl(String url) { + try { + URI uri = new URI(url); + + // Validate protocol + String scheme = uri.getScheme(); + if (scheme == null || (!"ws".equals(scheme) && !"wss".equals(scheme))) { + throw new IllegalArgumentException( + "Invalid WebSocket URL. Must start with 'ws://' or 'wss://'"); + } + + // Set TLS based on protocol + this.tls("wss".equals(scheme)); + + // Set server + this.server(uri.getHost()); + if (this.server == null) { + throw new IllegalArgumentException("Invalid WebSocket URL. Host is required"); + } + + // Set port + int port = uri.getPort(); + if (port == -1) { + // Default ports based on protocol + this.port(this.tls ? "443" : "80"); + } else { + this.port(String.valueOf(port)); + } + + // Set path + String path = uri.getPath(); + if (path == null || path.isEmpty()) { + this.path("/"); + } else { + this.path(path); + } + + // Add query string if present + String query = uri.getQuery(); + if (query != null && !query.isEmpty()) { + this.path(this.getPath() + "?" + query); + } + + } catch (URISyntaxException e) { + throw new IllegalArgumentException("Invalid WebSocket URL: " + url, e); + } + } + + @Override + protected TestElement buildTestElement() { + OpenWebSocketSampler ret = new OpenWebSocketSampler(); + ret.setConnectTimeout(connectionTimeout); + ret.setReadTimeout(responseTimeout); + ret.setTLS(tls); + ret.setServer(server); + ret.setPort(port); + ret.setPath(path); + return ret; + } + + /** + * Sets the connection timeout for the WebSocket connection. + * + * @param timeout the connection timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslConnectSampler connectionTimeout(String timeout) { + this.connectionTimeout = timeout; + return this; + } + + /** + * Sets the response timeout for the WebSocket operations. + * + * @param timeout the response timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslConnectSampler responseTimeout(String timeout) { + this.responseTimeout = timeout; + return this; + } + + public DslConnectSampler server(String server) { + this.server = server; + return this; + } + + public DslConnectSampler port(String port) { + this.port = port; + return this; + } + + public DslConnectSampler path(String path) { + this.path = path; + return this; + } + + public String getPath() { + return path; + } + + public DslConnectSampler tls(boolean tls) { + this.tls = tls; + return this; + } + + public static class CodeBuilder extends SingleTestElementCallBuilder { + + public CodeBuilder(List builderMethods) { + super(OpenWebSocketSampler.class, builderMethods); + } + + @Override + protected MethodCall buildMethodCall(OpenWebSocketSampler testElement, + MethodCallContext context) { + TestElementParamBuilder paramBuilder = new TestElementParamBuilder(testElement); + MethodParam server = paramBuilder.stringParam("server"); + MethodParam port = paramBuilder.stringParam("port"); + MethodParam path = paramBuilder.stringParam("path"); + MethodParam tls = paramBuilder.boolParam("TLS", false); + + // Try to build URL if all required parameters are available + if (!server.isDefault() && !port.isDefault() && !path.isDefault()) { + String protocol = tls.isDefault() ? "ws" + : (tls.getExpression().equals("true") ? "wss" : "ws"); + String url = protocol + "://" + server.getExpression() + ":" + + port.getExpression() + path.getExpression(); + MethodCall ret = new MethodCall("DslWebsocketSampler.connect", + DslConnectSampler.class, new StringParam(url)); + + // Add non-default timeout parameters + MethodParam connectionTimeout = paramBuilder.stringParam("connectTimeout"); + if (!connectionTimeout.isDefault()) { + ret.chain("connectionTimeout", connectionTimeout); + } + MethodParam responseTimeout = paramBuilder.stringParam("readTimeout"); + if (!responseTimeout.isDefault()) { + ret.chain("responseTimeout", responseTimeout); + } + + return ret; + } else { + // Fall back to individual method calls + return buildMethodCall() + .chain("server", server) + .chain("port", port) + .chain("path", path) + .chain("tls", tls) + .chain("connectionTimeout", paramBuilder.stringParam("connectTimeout")) + .chain("responseTimeout", paramBuilder.stringParam("readTimeout")); + } + } + } + } + + /** + * Inner class for WebSocket disconnect operations. + */ + public static class DslDisconnectSampler extends BaseSampler { + private String responseTimeout; + private String statusCode; + + public DslDisconnectSampler() { + super("WebSocket Close", CloseWebSocketSamplerGui.class); + } + + @Override + protected TestElement buildTestElement() { + CloseWebSocketSampler close = new CloseWebSocketSampler(); + close.setReadTimeout(responseTimeout); + close.setStatusCode(statusCode); + return close; + } + + /** + * Sets the response timeout for the WebSocket operations. + * + * @param timeout the response timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslDisconnectSampler responseTimeout(String timeout) { + this.responseTimeout = timeout; + return this; + } + + public DslDisconnectSampler statusCode(String statusCode) { + this.statusCode = statusCode; + return this; + } + + public static class CodeBuilder extends SingleTestElementCallBuilder { + + public CodeBuilder(List builderMethods) { + super(CloseWebSocketSampler.class, builderMethods); + } + + @Override + protected MethodCall buildMethodCall(CloseWebSocketSampler testElement, + MethodCallContext context) { + TestElementParamBuilder paramBuilder = new TestElementParamBuilder(testElement); + return new MethodCall("DslWebsocketSampler.disconnect", DslDisconnectSampler.class) + .chain("responseTimeout", paramBuilder.stringParam("readTimeout")) + .chain("statusCode", paramBuilder.stringParam("statusCode")); + } + } + } + + /** + * Inner class for WebSocket write operations. + */ + public static class DslWriteSampler extends BaseSampler { + private String connectionTimeout; + private String requestData; + private boolean createNewConnection = false; + private boolean loadDataFromFile = false; + + public DslWriteSampler() { + super("WebSocket Single Write", SingleWriteWebSocketSamplerGui.class); + } + + @Override + protected TestElement buildTestElement() { + SingleWriteWebSocketSampler write = new SingleWriteWebSocketSampler(); + write.setConnectTimeout(connectionTimeout != null ? connectionTimeout : "20000"); + write.setType(DataPayloadType.Text); + write.setRequestData(requestData); + write.setCreateNewConnection(createNewConnection); + return write; + } + + /** + * Sets the connection timeout for the WebSocket connection. + * + * @param timeout the connection timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslWriteSampler connectionTimeout(String timeout) { + this.connectionTimeout = timeout; + return this; + } + + public DslWriteSampler requestData(String requestData) { + this.requestData = requestData; + return this; + } + + public DslWriteSampler loadDataFromFile(boolean loadDataFromFile) { + this.loadDataFromFile = loadDataFromFile; + return this; + } + + public DslWriteSampler createNewConnection(boolean createNewConnection) { + this.createNewConnection = createNewConnection; + return this; + } + + public static class CodeBuilder + extends SingleTestElementCallBuilder { + + public CodeBuilder(List builderMethods) { + super(SingleWriteWebSocketSampler.class, builderMethods); + } + + @Override + protected MethodCall buildMethodCall(SingleWriteWebSocketSampler testElement, + MethodCallContext context) { + TestElementParamBuilder paramBuilder = new TestElementParamBuilder(testElement); + return new MethodCall("DslWebsocketSampler.write", DslWriteSampler.class) + .chain("requestData", paramBuilder.stringParam("requestData")) + .chain("createNewConnection", paramBuilder.boolParam("createNewConnection", false)); + } + } + } + + /** + * Inner class for WebSocket read operations. + */ + public static class DslReadSampler extends BaseSampler { + private String connectionTimeout; + private String responseTimeout; + private boolean createNewConnection = false; + + public DslReadSampler() { + super("WebSocket Single Read", SingleReadWebSocketSamplerGui.class); + } + + @Override + protected TestElement buildTestElement() { + SingleReadWebSocketSampler read = new SingleReadWebSocketSampler(); + read.setConnectTimeout(connectionTimeout != null ? connectionTimeout : "20000"); + read.setReadTimeout(responseTimeout != null ? responseTimeout : "7000"); + read.setDataType(DataType.Text); + read.setOptional(false); + read.setCreateNewConnection(createNewConnection); + return read; + } + + /** + * Sets the connection timeout for the WebSocket connection. + * + * @param timeout the connection timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslReadSampler connectionTimeout(String timeout) { + this.connectionTimeout = timeout; + return this; + } + + /** + * Sets the response timeout for the WebSocket operations. + * + * @param timeout the response timeout in milliseconds + * @return the sampler for further configuration or usage + */ + public DslReadSampler responseTimeout(String timeout) { + this.responseTimeout = timeout; + return this; + } + + public DslReadSampler createNewConnection(boolean createNewConnection) { + this.createNewConnection = createNewConnection; + return this; + } + + public static class CodeBuilder + extends SingleTestElementCallBuilder { + + public CodeBuilder(List builderMethods) { + super(SingleReadWebSocketSampler.class, builderMethods); + } + + @Override + protected MethodCall buildMethodCall(SingleReadWebSocketSampler testElement, + MethodCallContext context) { + TestElementParamBuilder paramBuilder = new TestElementParamBuilder(testElement); + return new MethodCall("DslWebsocketSampler.read", DslReadSampler.class) + .chain("responseTimeout", paramBuilder.stringParam("readTimeout")) + .chain("createNewConnection", paramBuilder.boolParam("createNewConnection", false)); + } + } + } +} diff --git a/jmeter-java-dsl-websocket/src/test/java/DslWebsocketCodeGeneratorTest.java b/jmeter-java-dsl-websocket/src/test/java/DslWebsocketCodeGeneratorTest.java new file mode 100644 index 00000000..2bdf7e94 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/java/DslWebsocketCodeGeneratorTest.java @@ -0,0 +1,86 @@ +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Collections; +import java.util.Set; +import org.apache.http.entity.ContentType; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import us.abstracta.jmeter.javadsl.codegeneration.DslCodeGenerator; +import us.abstracta.jmeter.javadsl.codegeneration.TestClassTemplate; +import us.abstracta.jmeter.javadsl.core.util.StringTemplate; +import us.abstracta.jmeter.javadsl.util.TestResource; +import us.abstracta.jmeter.javadsl.websocket.DslWebsocketSampler; + +public class DslWebsocketCodeGeneratorTest { + + private static final String RESOURCES_FOLDER = "websocket-codegeneration"; + + @Test + public void shouldGenerateExpectedCodeWhenSimpleWebSocketJmxIsProvided(@TempDir Path tempDir) + throws Exception { + File solvedTemplate = solveTemplateResource("websocket-test-plan.template.jmx", tempDir); + assertThat(new DslCodeGenerator().addBuildersFrom(DslWebsocketSampler.class).generateCodeFromJmx(solvedTemplate)) + .isEqualToNormalizingNewlines( + solveTestClassTemplate(Collections.emptySet(), + "SimpleWebSocketTest.java")); + } + + @Test + public void shouldGenerateExpectedCodeWhenComplexWebSocketJmxIsProvided(@TempDir Path tempDir) throws Exception { + File solvedTemplate = solveTemplateResource("/complex-websocket.jmx", tempDir); + assertThat(new DslCodeGenerator().addBuildersFrom(DslWebsocketSampler.class).generateCodeFromJmx(solvedTemplate)) + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.emptySet(), + "ComplexWebSocketTest.java")); + } + + @Test + public void shouldGenerateExpectedCodeWhenWebSocketWithAssertionsJmxIsProvided(@TempDir Path tempDir) throws Exception { + File solvedTemplate = solveTemplateResource("/websocket-with-assertions.jmx", tempDir); + assertThat(new DslCodeGenerator().addBuildersFrom(DslWebsocketSampler.class).generateCodeFromJmx(solvedTemplate)) + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.emptySet(), + "WebSocketWithAssertionsTest.java")); + } + + @Test + public void shouldGenerateExpectedCodeWhenWebSocketWithVariablesJmxIsProvided(@TempDir Path tempDir) throws Exception { + assertThat(new DslCodeGenerator() + .addBuildersFrom(DslWebsocketSampler.class) + .addDependency(DslWebsocketSampler.class, "us.abstracta.jmeter:jmeter-java-dsl-websocket") + .generateCodeFromJmx(new TestResource(RESOURCES_FOLDER + "/websocket-with-variables.jmx").file())) + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.emptySet(), + "WebSocketWithVariablesTest.java")); + } + + @Test + public void shouldGenerateCommentedElementsCodeWhenDisabledWebSocketElementsInJmx(@TempDir Path tempDir) throws Exception { + assertThat(new DslCodeGenerator() + .addBuildersFrom(DslWebsocketSampler.class) + .addDependency(DslWebsocketSampler.class, "us.abstracta.jmeter:jmeter-java-dsl-websocket") + .generateCodeFromJmx(new TestResource(RESOURCES_FOLDER + "/disabled-websocket-elements.jmx").file())) + .isEqualToNormalizingNewlines(solveTestClassTemplate(Collections.emptySet(), + "DisabledWebSocketElements.java")); + } + + private File solveTemplateResource(String resourcePath, Path tempDir) throws IOException { + String templateContents = new StringTemplate(new TestResource(RESOURCES_FOLDER + "/" + resourcePath).rawContents()) + .solve(); + Path solvedTemplate = tempDir.resolve("websocket-test-plan.jmx"); + Files.write(solvedTemplate, templateContents.getBytes(StandardCharsets.UTF_8)); + return solvedTemplate.toFile(); + } + + private String solveTestClassTemplate(Set imports, String testPlanCodeResource) + throws IOException { + return new TestClassTemplate() + .dependencies(Collections.singleton("us.abstracta.jmeter:jmeter-java-dsl")) + .imports(imports) + .testPlan(new TestResource(RESOURCES_FOLDER + "/" + testPlanCodeResource).rawContents()) + .solve(); + } + +} diff --git a/jmeter-java-dsl-websocket/src/test/java/DslWebsocketSamplerTest.java b/jmeter-java-dsl-websocket/src/test/java/DslWebsocketSamplerTest.java new file mode 100644 index 00000000..539c6bb1 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/java/DslWebsocketSamplerTest.java @@ -0,0 +1,217 @@ +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static us.abstracta.jmeter.javadsl.JmeterDsl.responseAssertion; +import static us.abstracta.jmeter.javadsl.JmeterDsl.testPlan; +import static us.abstracta.jmeter.javadsl.JmeterDsl.threadGroup; + +import org.junit.jupiter.api.*; + +import us.abstracta.jmeter.javadsl.core.TestPlanStats; +import us.abstracta.jmeter.javadsl.websocket.*; + +public class DslWebsocketSamplerTest { + + @Test + public void shouldConnectAndEchoMessageWhenWebSocketTestPlanWithEchoServer() throws Exception { + + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .connect("wss://ws.postman-echo.com/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + DslWebsocketSampler + .write() + .requestData("Hello WebSocket Test!") + .createNewConnection(false), + DslWebsocketSampler + .read() + .connectionTimeout("10000") + .createNewConnection(false) + .responseTimeout("5000") + .children( + responseAssertion() + .containsSubstrings("Hello WebSocket Test!") + ), + DslWebsocketSampler + .disconnect() + .responseTimeout("1000") + .statusCode("1000"))) + .run(); + assertThat(stats.overall().errorsCount()).isEqualTo(0); + } + + @Test + public void shouldThrowIllegalArgumentExceptionWhenConnectWithInvalidUrl() { + assertThrows(IllegalArgumentException.class, () -> { + DslWebsocketSampler.connect("http://localhost:80/test"); + }); + } + + @Test + public void shouldHandleConnectionFailureWhenConnectToUnavailableServer() throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .connect("ws://localhost:9999/nonexistent") + .connectionTimeout("2000") + .responseTimeout("1000"))) + .run(); + assertThat(stats.overall().errorsCount()).isEqualTo(1); + } + + @Test + public void shouldHandleTimeoutWhenConnectWithVeryShortTimeout() throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .connect("ws://localhost:8080/test") + .connectionTimeout("1") + .responseTimeout("1"))) + .run(); + assertThat(stats.overall().errorsCount()).isEqualTo(1); + } + + @Test + public void shouldHandleWriteOperationWhenNoPreviousConnection() throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .write() + .requestData("Test message") + .createNewConnection(false) + )).run(); + assertThat(stats.overall().errorsCount()).isEqualTo(1); + } + + @Test + public void shouldHandleReadOperationWhenNoPreviousConnection() throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .read() + .createNewConnection(false) + .responseTimeout("1000"))) + .run(); + assertThat(stats.overall().errorsCount()).isEqualTo(1); + } + + @Test + public void shouldHandleDisconnectOperationWhenNoPreviousConnection() throws Exception { + TestPlanStats stats = testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .disconnect() + .responseTimeout("1000") + .statusCode("1000"))) + .run(); + assertThat(stats.overall().errorsCount()).isEqualTo(1); + } +} + + +// import eu.luminis.jmeter.wssampler.*; + +// import java.net.URISyntaxException; + +// import static org.junit.jupiter.api.Assertions.*; + +// class DslWebsocketSamplerTest { + +// @Test +// void shouldParseWsUrlCorrectly() { +// DslWebsocketSampler.DslConnectSampler sampler = DslWebsocketSampler.connect("ws://localhost:8080/chat"); + +// assertEquals("localhost", sampler.server); +// assertEquals("8080", sampler.port); +// assertEquals("/chat", sampler.getPath()); +// assertFalse(sampler.tls); +// } + +// @Test +// void shouldParseWssUrlWithDefaultPortAndQuery() { +// DslWebsocketSampler.DslConnectSampler sampler = DslWebsocketSampler.connect("wss://example.com/socket?token=abc"); + +// assertEquals("example.com", sampler.server); +// assertEquals("443", sampler.port); +// assertEquals("/socket?token=abc", sampler.getPath()); +// assertTrue(sampler.tls); +// } + +// @Test +// void shouldThrowExceptionWhenParsingInvalidUrl() { +// IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, () -> { +// DslWebsocketSampler.connect("http://invalid.com"); +// }); + +// assertTrue(ex.getMessage().contains("Invalid WebSocket URL")); +// } + +// @Test +// void shouldBuildOpenWebSocketSamplerWithAllFields() { +// DslWebsocketSampler.DslConnectSampler sampler = new DslWebsocketSampler.DslConnectSampler() +// .server("localhost") +// .port("9000") +// .path("/ws") +// .tls(true) +// .connectionTimeout("10000") +// .responseTimeout("5000"); + +// OpenWebSocketSampler element = (OpenWebSocketSampler) sampler.buildTestElement(); + +// assertEquals("localhost", element.getServer()); +// assertEquals("9000", element.getPort()); +// assertEquals("/ws", element.getPath()); +// assertTrue(element.isTLS()); +// assertEquals("10000", element.getConnectTimeout()); +// assertEquals("5000", element.getReadTimeout()); +// } + +// @Test +// void shouldBuildCloseWebSocketSamplerWithAllFields() { +// DslWebsocketSampler.DslDisconnectSampler sampler = new DslWebsocketSampler.DslDisconnectSampler() +// .responseTimeout("7000") +// .statusCode("1001"); + +// CloseWebSocketSampler element = (CloseWebSocketSampler) sampler.buildTestElement(); + +// assertEquals("7000", element.getReadTimeout()); +// assertEquals("1001", element.getStatusCode()); +// } + +// @Test +// void shouldBuildWriteSamplerWithCustomValues() { +// DslWebsocketSampler.DslWriteSampler sampler = new DslWebsocketSampler.DslWriteSampler() +// .connectionTimeout("15000") +// .requestData("Hello WebSocket") +// .createNewConnection(true); + +// SingleWriteWebSocketSampler element = (SingleWriteWebSocketSampler) sampler.buildTestElement(); + +// assertEquals("15000", element.getConnectTimeout()); +// assertEquals("Hello WebSocket", element.getRequestData()); +// assertTrue(element.isCreateNewConnection()); +// } + +// @Test +// void shouldBuildReadSamplerWithCustomValues() { +// DslWebsocketSampler.DslReadSampler sampler = new DslWebsocketSampler.DslReadSampler() +// .connectionTimeout("12000") +// .responseTimeout("9000") +// .createNewConnection(true); + +// SingleReadWebSocketSampler element = (SingleReadWebSocketSampler) sampler.buildTestElement(); + +// assertEquals("12000", element.getConnectTimeout()); +// assertEquals("9000", element.getReadTimeout()); +// assertTrue(element.isCreateNewConnection()); +// assertEquals(SingleReadWebSocketSampler.DataType.Text, element.getDataType()); +// assertFalse(element.isOptional()); +// } + +// @Test +// void shouldThrowExceptionWhenUsingBaseWebsocketSamplerDirectly() { +// DslWebsocketSampler sampler = DslWebsocketSampler.webSocketSampler(); +// assertThrows(UnsupportedOperationException.class, sampler::buildTestElement); +// } +// } diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/ComplexWebSocketTest.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/ComplexWebSocketTest.java new file mode 100644 index 00000000..e7f07c11 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/ComplexWebSocketTest.java @@ -0,0 +1,14 @@ +testPlan( + threadGroup(1, 1, + DslWebsocketSampler.connect("ws://echo.websocket.org:80/") + .connectionTimeout("15000") + .responseTimeout("10000"), + DslWebsocketSampler.write() + .requestData("Hello from JMeter WebSocket Test"), + DslWebsocketSampler.read() + .responseTimeout("10000"), + DslWebsocketSampler.disconnect() + .responseTimeout("2000") + .statusCode("1000") + ) + ) \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElements.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElements.java new file mode 100644 index 00000000..6879315d --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElements.java @@ -0,0 +1,16 @@ +testPlan( + threadGroup(1, 1, + DslWebsocketSampler.connect("ws://ws.postman-echo.com:80/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + //DslWebsocketSampler.write() + // .requestData("Disabled write message"), + DslWebsocketSampler.read() + .responseTimeout("5000"), + //DslWebsocketSampler.write() + // .requestData("Another disabled write"), + DslWebsocketSampler.disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ) \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElementsTest.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElementsTest.java new file mode 100644 index 00000000..0f7fe5a6 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/DisabledWebSocketElementsTest.java @@ -0,0 +1,28 @@ + testPlan( + threadGroup(1, 1, + DslWebsocketSampler + .connect() + .server("ws.postman-echo.com") + .port("80") + .path("/raw") + .tls(false) + .connectionTimeout("10000") + .responseTimeout("5000"), + // DslWebsocketSampler + // .write() + // .requestData("Disabled write message") + // .createNewConnection(false), + DslWebsocketSampler + .read() + .responseTimeout("5000") + .createNewConnection(false), + // DslWebsocketSampler + // .write() + // .requestData("Another disabled write") + // .createNewConnection(false), + DslWebsocketSampler + .disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ) diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/SimpleWebSocketTest.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/SimpleWebSocketTest.java new file mode 100644 index 00000000..30f37243 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/SimpleWebSocketTest.java @@ -0,0 +1,14 @@ +testPlan( + threadGroup(1, 1, + DslWebsocketSampler.connect("ws://ws.postman-echo.com:80/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + DslWebsocketSampler.write() + .requestData("Hello WebSocket Test!"), + DslWebsocketSampler.read() + .responseTimeout("5000"), + DslWebsocketSampler.disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ) \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithAssertionsTest.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithAssertionsTest.java new file mode 100644 index 00000000..4f3c53ae --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithAssertionsTest.java @@ -0,0 +1,18 @@ +testPlan( + threadGroup(1, 1, + DslWebsocketSampler.connect("ws://ws.postman-echo.com:80/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + DslWebsocketSampler.write() + .requestData("Test message with assertions"), + DslWebsocketSampler.read() + .responseTimeout("5000") + .children( + responseAssertion() + .containsRegexes("Test message with assertions") + ), + DslWebsocketSampler.disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ) \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithVariablesTest.java b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithVariablesTest.java new file mode 100644 index 00000000..d1f0f82f --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/WebSocketWithVariablesTest.java @@ -0,0 +1,18 @@ +testPlan( + vars() + .set("WEBSOCKET_SERVER", "ws.postman-echo.com") + .set("WEBSOCKET_PORT", "80") + .set("MESSAGE", "Hello from variable"), + threadGroup(1, 1, + DslWebsocketSampler.connect("ws://${WEBSOCKET_SERVER}:${WEBSOCKET_PORT}/raw") + .connectionTimeout("10000") + .responseTimeout("5000"), + DslWebsocketSampler.write() + .requestData("${MESSAGE}"), + DslWebsocketSampler.read() + .responseTimeout("5000"), + DslWebsocketSampler.disconnect() + .responseTimeout("1000") + .statusCode("1000") + ) + ) \ No newline at end of file diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/complex-websocket.jmx b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/complex-websocket.jmx new file mode 100644 index 00000000..fc50f39d --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/complex-websocket.jmx @@ -0,0 +1,68 @@ + + + + + + false + true + false + + + + + + + + 1 + 1 + true + continue + + 1 + false + + + + + 15000 + 10000 + false + echo.websocket.org + 80 + / + + + + 20000 + Text + Hello from JMeter WebSocket Test + false + false + + 80 + + false + + + + + 20000 + 10000 + Text + false + false + false + + 80 + + + + + 2000 + 1000 + + + + + + diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/disabled-websocket-elements.jmx b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/disabled-websocket-elements.jmx new file mode 100644 index 00000000..a3b06e7f --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/disabled-websocket-elements.jmx @@ -0,0 +1,84 @@ + + + + + + false + true + false + + + + + + + + continue + + false + 1 + + 1 + 1 + false + + + true + + + + 10000 + 5000 + false + ws.postman-echo.com + 80 + /raw + + + + 20000 + Text + Disabled write message + false + false + + 80 + + false + + + + + 20000 + 5000 + Text + false + false + false + + 80 + + + + + 20000 + Text + Another disabled write + false + false + + 80 + + false + + + + + 1000 + 1000 + + + + + + diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-test-plan.template.jmx b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-test-plan.template.jmx new file mode 100644 index 00000000..7ce05446 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-test-plan.template.jmx @@ -0,0 +1,71 @@ + + + + + + false + true + false + + + + + + + + continue + + false + 1 + + 1 + 1 + false + + + true + + + + 10000 + 5000 + false + ws.postman-echo.com + 80 + /raw + + + + 20000 + Text + Hello WebSocket Test! + false + false + + 80 + + false + + + + + 20000 + 5000 + Text + false + false + false + + 80 + + + + + 1000 + 1000 + + + + + + diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-assertions.jmx b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-assertions.jmx new file mode 100644 index 00000000..0fb1f417 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-assertions.jmx @@ -0,0 +1,82 @@ + + + + + + false + true + false + + + + + + + + continue + + false + 1 + + 1 + 1 + false + + + true + + + + 10000 + 5000 + false + ws.postman-echo.com + 80 + /raw + + + + 20000 + Text + Test message with assertions + false + false + + 80 + + false + + + + + 20000 + 5000 + Text + false + false + false + + 80 + + + + + + Test message with assertions + + + Assertion.response_data + false + 2 + + + + + 1000 + 1000 + + + + + + diff --git a/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-variables.jmx b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-variables.jmx new file mode 100644 index 00000000..332d7b25 --- /dev/null +++ b/jmeter-java-dsl-websocket/src/test/resources/websocket-codegeneration/websocket-with-variables.jmx @@ -0,0 +1,100 @@ + + + + + true + + + + WEBSOCKET_SERVER + ws.postman-echo.com + = + + + WEBSOCKET_PORT + 80 + = + + + MESSAGE + Hello from variable + = + + + + + + + + + WEBSOCKET_SERVER + ws.postman-echo.com + = + + + WEBSOCKET_PORT + 80 + = + + + MESSAGE + Hello from variable + = + + + + + + 1 + 1 + true + continue + + 1 + false + + + + + 10000 + 5000 + false + ${WEBSOCKET_SERVER} + ${WEBSOCKET_PORT} + /raw + + + + 20000 + Text + ${MESSAGE} + false + false + + 80 + + false + + + + + 20000 + 5000 + Text + false + false + false + + 80 + + + + + 1000 + 1000 + + + + + + diff --git a/pom.xml b/pom.xml index 105ad5fa..ee9121e4 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ jmeter-java-dsl-datadog jmeter-java-dsl-bridge jmeter-java-dsl-prometheus + jmeter-java-dsl-websocket