You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2019/10/05 08:16:41 UTC

[jmeter] branch master updated (69a0aee -> 3e2dda1)

This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git.


    from 69a0aee  Rework ParallelResourcesAndIpSource to try all combinations of source and target hosts
     new f20a30f  62861: Ensure thread groups from pre-5.0 jmx are loaded with "same user on each iteration"=true
     new 3e2dda1  Kepp lib/ext/*.jar on gw runGui and gw createDist

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/jmeter/threads/AbstractThreadGroup.java |   2 +-
 .../apache/jmeter/threads/gui/ThreadGroupGui.java  |   8 +-
 .../org/apache/jmeter/threads/ThreadGroupLoad.java | 101 +++++++++++++++++++++
 src/dist/build.gradle.kts                          |   2 +
 4 files changed, 106 insertions(+), 7 deletions(-)
 create mode 100644 src/dist-check/src/test/java/org/apache/jmeter/threads/ThreadGroupLoad.java


[jmeter] 02/02: Kepp lib/ext/*.jar on gw runGui and gw createDist

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 3e2dda1939b89b16d1afd8d175e23d07f9256caf
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Sat Oct 5 11:04:59 2019 +0300

    Kepp lib/ext/*.jar on gw runGui and gw createDist
    
    This helps a bit in case developer has extra plugins in lib/ext/*
---
 src/dist/build.gradle.kts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/dist/build.gradle.kts b/src/dist/build.gradle.kts
index cb1e6a3..2956106 100644
--- a/src/dist/build.gradle.kts
+++ b/src/dist/build.gradle.kts
@@ -152,6 +152,8 @@ val copyLibs by tasks.registering(Sync::class) {
         // it just removes everything it sees.
         // We configure it to keep txt files that should be present there (the files come from Git source tree)
         include("**/*.txt")
+        // Keep jars in lib/ext so developers don't have to re-install the plugsin again and again
+        include("ext/*.jar")
     }
     into("ext") {
         with(libsExt)


[jmeter] 01/02: 62861: Ensure thread groups from pre-5.0 jmx are loaded with "same user on each iteration"=true

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit f20a30fcebd919f78bfd191a04255721c2c36171
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Sat Oct 5 11:13:02 2019 +0300

    62861: Ensure thread groups from pre-5.0 jmx are loaded with "same user on each iteration"=true
---
 .../apache/jmeter/threads/AbstractThreadGroup.java |   2 +-
 .../apache/jmeter/threads/gui/ThreadGroupGui.java  |   8 +-
 .../org/apache/jmeter/threads/ThreadGroupLoad.java | 101 +++++++++++++++++++++
 3 files changed, 104 insertions(+), 7 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/threads/AbstractThreadGroup.java b/src/core/src/main/java/org/apache/jmeter/threads/AbstractThreadGroup.java
index 17ceed8..1864600 100644
--- a/src/core/src/main/java/org/apache/jmeter/threads/AbstractThreadGroup.java
+++ b/src/core/src/main/java/org/apache/jmeter/threads/AbstractThreadGroup.java
@@ -325,6 +325,6 @@ public abstract class AbstractThreadGroup extends AbstractTestElement
      * @return the kind of user.
      */
     public boolean isSameUserOnNextIteration() {
-        return getPropertyAsBoolean(ThreadGroup.IS_SAME_USER_ON_NEXT_ITERATION);
+        return getPropertyAsBoolean(ThreadGroup.IS_SAME_USER_ON_NEXT_ITERATION, true);
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/threads/gui/ThreadGroupGui.java b/src/core/src/main/java/org/apache/jmeter/threads/gui/ThreadGroupGui.java
index 80bb43e..9978565 100644
--- a/src/core/src/main/java/org/apache/jmeter/threads/gui/ThreadGroupGui.java
+++ b/src/core/src/main/java/org/apache/jmeter/threads/gui/ThreadGroupGui.java
@@ -125,12 +125,8 @@ public class ThreadGroupGui extends AbstractThreadGroupGui implements ItemListen
 
         duration.setText(tg.getPropertyAsString(ThreadGroup.DURATION));
         delay.setText(tg.getPropertyAsString(ThreadGroup.DELAY));
-        final boolean isSameUser = tg.getPropertyAsBoolean(AbstractThreadGroup.IS_SAME_USER_ON_NEXT_ITERATION, false);
-        if (isSameUser){
-            sameUserBox.setSelected(true);
-        } else {
-            differentUserBox.setSelected(true);
-        }
+        final boolean isSameUser = tg.getPropertyAsBoolean(AbstractThreadGroup.IS_SAME_USER_ON_NEXT_ITERATION, true);
+        sameUserBox.setSelected(isSameUser);
     }
 
     @Override
diff --git a/src/dist-check/src/test/java/org/apache/jmeter/threads/ThreadGroupLoad.java b/src/dist-check/src/test/java/org/apache/jmeter/threads/ThreadGroupLoad.java
new file mode 100644
index 0000000..a1f2401
--- /dev/null
+++ b/src/dist-check/src/test/java/org/apache/jmeter/threads/ThreadGroupLoad.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.threads;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Collections;
+
+import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.save.SaveService;
+import org.apache.jorphan.collections.HashTree;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+public class ThreadGroupLoad {
+    static {
+        // Initialize properties
+        JMeterTestCase.assertPrimitiveEquals(true, true);
+    }
+
+    @TempDir
+    public Path tmpDir;
+
+    @Test
+    public void readJmxSavedWithJMeter26() throws IOException {
+        String jmx26 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<jmeterTestPlan version=\"1.2\" properties=\"2.2\">\n" +
+                "  <hashTree>\n" +
+                "    <TestPlan guiclass=\"TestPlanGui\" testclass=\"TestPlan\" testname=\"Test Plan\" enabled=\"true\">\n" +
+                "      <stringProp name=\"TestPlan.comments\"></stringProp>\n" +
+                "      <boolProp name=\"TestPlan.functional_mode\">false</boolProp>\n" +
+                "      <boolProp name=\"TestPlan.serialize_threadgroups\">false</boolProp>\n" +
+                "      <elementProp name=\"TestPlan.user_defined_variables\" elementType=\"Arguments\"" +
+                " guiclass=\"ArgumentsPanel\" testclass=\"Arguments\" testname=\"User Defined Variables\n" +
+                "\" enabled=\"true\">\n" +
+                "        <collectionProp name=\"Arguments.arguments\"/>\n" +
+                "      </elementProp>\n" +
+                "      <stringProp name=\"TestPlan.user_define_classpath\"></stringProp>\n" +
+                "    </TestPlan>\n" +
+                "    <hashTree>\n" +
+                "      <ThreadGroup guiclass=\"ThreadGroupGui\" testclass=\"ThreadGroup\" testname=\"Thread Group\" enabled=\"true\">\n" +
+                "        <stringProp name=\"ThreadGroup.on_sample_error\">continue</stringProp>\n" +
+                "        <elementProp name=\"ThreadGroup.main_controller\" elementType=\"LoopController\"" +
+                " guiclass=\"LoopControlPanel\" testclass=\"LoopController\" testname=\"Loop Control\n" +
+                "ler\" enabled=\"true\">\n" +
+                "          <boolProp name=\"LoopController.continue_forever\">false</boolProp>\n" +
+                "          <stringProp name=\"LoopController.loops\">1</stringProp>\n" +
+                "        </elementProp>\n" +
+                "        <stringProp name=\"ThreadGroup.num_threads\">1</stringProp>\n" +
+                "        <stringProp name=\"ThreadGroup.ramp_time\">1</stringProp>\n" +
+                "        <longProp name=\"ThreadGroup.start_time\">1570221190000</longProp>\n" +
+                "        <longProp name=\"ThreadGroup.end_time\">1570221190000</longProp>\n" +
+                "        <boolProp name=\"ThreadGroup.scheduler\">false</boolProp>\n" +
+                "        <stringProp name=\"ThreadGroup.duration\"></stringProp>\n" +
+                "        <stringProp name=\"ThreadGroup.delay\"></stringProp>\n" +
+                "      </ThreadGroup>\n" +
+                "      <hashTree/>\n" +
+                "    </hashTree>\n" +
+                "  </hashTree>\n" +
+                "</jmeterTestPlan>";
+
+        Path jmx = tmpDir.resolve("default_thread_group_2_6.xml");
+
+        Files.write(jmx, Collections.singleton(jmx26));
+
+        HashTree hashTree = SaveService.loadTree(jmx.toFile());
+        HashTree testPlanTree = hashTree.values().iterator().next();
+        ThreadGroup tg = (ThreadGroup) testPlanTree.keySet().iterator().next();
+
+        tg.setRunningVersion(true);
+        String actual = "getName: " + tg.getName() + "\n" +
+                "getNumThreads: " + tg.getNumThreads() + "\n" +
+                "getRampUp: " + tg.getRampUp() + "\n" +
+                "getScheduler: " + tg.getScheduler() + "\n" +
+                "isSameUserOnNextIteration: " + tg.isSameUserOnNextIteration() + "\n";
+
+        Assertions.assertEquals("getName: Thread Group\n" +
+                "getNumThreads: 1\n" +
+                "getRampUp: 1\n" +
+                "getScheduler: false\n" +
+                "isSameUserOnNextIteration: true\n", actual);
+    }
+}