Author: pmouawad
Date: Thu Oct 13 20:12:23 2011
New Revision: 1183065
URL: http://svn.apache.org/viewvc?rev=1183065&view=rev
Log:
Bug 52019 - Add menu option to Start a test ignoring Pause Timers
Added:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java
(with props)
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeCloner.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Start.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_es.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_pt_BR.properties
jakarta/jmeter/trunk/xdocs/changes.xml
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeCloner.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeCloner.java?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeCloner.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeCloner.java Thu
Oct 13 20:12:23 2011
@@ -56,7 +56,6 @@ public class TreeCloner implements HashT
}
public void addNode(Object node, HashTree subTree) {
-
if ( (node instanceof TestElement) // Check can cast for clone
// Don't clone NoThreadClone unless honourNoThreadClone == false
&& (!honourNoThreadClone || !(node instanceof NoThreadClone))
@@ -66,6 +65,14 @@ public class TreeCloner implements HashT
} else {
newTree.add(objects, node);
}
+ addLast(node);
+ }
+
+ /**
+ * add node to objects LinkedList
+ * @param node Object
+ */
+ protected final void addLast(Object node) {
objects.addLast(node);
}
Added:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java?rev=1183065&view=auto
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java
(added)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java
Thu Oct 13 20:12:23 2011
@@ -0,0 +1,59 @@
+/*
+ * 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.engine;
+
+import org.apache.jmeter.timers.Timer;
+import org.apache.jorphan.collections.HashTree;
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.log.Logger;
+
+/**
+ * Clones the test tree, skipping test elements that implement {@link Timer}
by default.
+ */
+public class TreeClonerNoTimer extends TreeCloner{
+ private Logger logger = LoggingManager.getLoggerForClass();
+
+ /**
+ * {@inheritDoc}
+ */
+ public TreeClonerNoTimer() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public TreeClonerNoTimer(boolean honourNoThreadClone) {
+ super(honourNoThreadClone);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void addNode(Object node, HashTree subTree) {
+ if(!(node instanceof Timer)) {
+ super.addNode(node, subTree);
+ } else {
+ if(logger.isDebugEnabled()) {
+ logger.debug("Ignoring timer node:"+ node);
+ }
+ addLast(node);
+ }
+ }
+}
\ No newline at end of file
Propchange:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
Thu Oct 13 20:12:23 2011
@@ -29,6 +29,7 @@ public class ActionNames {
public static final String ABOUT = "about"; // $NON-NLS-1$
public static final String ACTION_SHUTDOWN = "shutdown"; // $NON-NLS-1$
public static final String ACTION_START = "start"; // $NON-NLS-1$
+ public static final String ACTION_START_NO_TIMERS = "start_no_timers"; //
$NON-NLS-1$
public static final String ACTION_STOP = "stop"; // $NON-NLS-1$
public static final String ADD = "Add"; // $NON-NLS-1$
public static final String ADD_ALL = "add_all"; // $NON-NLS-1$
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Start.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Start.java?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Start.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Start.java Thu
Oct 13 20:12:23 2011
@@ -28,8 +28,10 @@ import org.apache.jmeter.JMeter;
import org.apache.jmeter.engine.JMeterEngineException;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.engine.TreeCloner;
+import org.apache.jmeter.engine.TreeClonerNoTimer;
import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.timers.Timer;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import org.apache.jorphan.logging.LoggingManager;
@@ -42,6 +44,7 @@ public class Start extends AbstractActio
static {
commands.add(ActionNames.ACTION_START);
+ commands.add(ActionNames.ACTION_START_NO_TIMERS);
commands.add(ActionNames.ACTION_STOP);
commands.add(ActionNames.ACTION_SHUTDOWN);
}
@@ -68,7 +71,10 @@ public class Start extends AbstractActio
public void doAction(ActionEvent e) {
if (e.getActionCommand().equals(ActionNames.ACTION_START)) {
popupShouldSave(e);
- startEngine();
+ startEngine(false);
+ } else if
(e.getActionCommand().equals(ActionNames.ACTION_START_NO_TIMERS)) {
+ popupShouldSave(e);
+ startEngine(true);
} else if (e.getActionCommand().equals(ActionNames.ACTION_STOP)) {
if (engine != null) {
log.info("Stopping test");
@@ -84,15 +90,18 @@ public class Start extends AbstractActio
}
}
- private void startEngine() {
+ /**
+ * Start JMeter engine
+ * @param noTimer ignore timers
+ */
+ private void startEngine(boolean ignoreTimer) {
GuiPackage gui = GuiPackage.getInstance();
HashTree testTree = gui.getTreeModel().getTestPlan();
JMeter.convertSubTree(testTree);
testTree.add(testTree.getArray()[0], gui.getMainFrame());
log.debug("test plan before cloning is running version: "
+ ((TestPlan) testTree.getArray()[0]).isRunningVersion());
- TreeCloner cloner = new TreeCloner(false);
- testTree.traverse(cloner);
+ TreeCloner cloner = cloneTree(testTree, ignoreTimer);
engine = new StandardJMeterEngine();
engine.configure(cloner.getClonedTree());
try {
@@ -104,4 +113,21 @@ public class Start extends AbstractActio
log.debug("test plan after cloning and running test is running
version: "
+ ((TestPlan) testTree.getArray()[0]).isRunningVersion());
}
+
+ /**
+ * Create a Cloner that ignores {@link Timer} if removeTimers is true
+ * @param testTree {@link HashTree}
+ * @param removeTimers boolean remove timers
+ * @return {@link TreeCloner}
+ */
+ private TreeCloner cloneTree(HashTree testTree, boolean removeTimers) {
+ TreeCloner cloner = null;
+ if(!removeTimers) {
+ cloner = new TreeCloner(false);
+ } else {
+ cloner = new TreeClonerNoTimer(false);
+ }
+ testTree.traverse(cloner);
+ return cloner;
+ }
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
Thu Oct 13 20:12:23 2011
@@ -81,6 +81,8 @@ public class JMeterMenuBar extends JMenu
private JMenuItem run_start;
+ private JMenuItem run_start_no_timers;
+
private JMenu remote_start;
private JMenuItem remote_start_all;
@@ -394,6 +396,8 @@ public class JMeterMenuBar extends JMenu
run_start = makeMenuItemRes("start", 'S', ActionNames.ACTION_START,
KeyStrokes.ACTION_START); //$NON-NLS-1$
+ run_start_no_timers = makeMenuItemRes("start_no_timers",
ActionNames.ACTION_START_NO_TIMERS); //$NON-NLS-1$
+
run_stop = makeMenuItemRes("stop", 'T', ActionNames.ACTION_STOP,
KeyStrokes.ACTION_STOP); //$NON-NLS-1$
run_stop.setEnabled(false);
@@ -405,6 +409,7 @@ public class JMeterMenuBar extends JMenu
run_clearAll = makeMenuItemRes("clear_all", 'a',
ActionNames.CLEAR_ALL, KeyStrokes.CLEAR_ALL); //$NON-NLS-1$
runMenu.add(run_start);
+ runMenu.add(run_start_no_timers);
if (remote_start != null) {
runMenu.add(remote_start);
}
@@ -543,6 +548,7 @@ public class JMeterMenuBar extends JMenu
@Override
public void setEnabled(boolean enable) {
run_start.setEnabled(!enable);
+ run_start_no_timers.setEnabled(!enable);
run_stop.setEnabled(enable);
run_shut.setEnabled(enable);
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
Thu Oct 13 20:12:23 2011
@@ -869,6 +869,7 @@ ssl_pass_title=KeyStore Password
ssl_port=SSL Port
sslmanager=SSL Manager
start=Start
+start_no_timers=Start no pauses
starttime=Start Time
stop=Stop
stopping_test=Shutting down all test threads. Please be patient.
@@ -998,6 +999,7 @@ view_results_response_code=Response code
view_results_response_headers=Response headers:
view_results_response_message=Response message:
view_results_response_too_large_message=Response too large to be displayed.
Size:
+view_results_response_partial_message=Start of message:
view_results_sample_count=Sample Count:
view_results_sample_start=Sample Start:
view_results_search_pane=Search pane
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_es.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_es.properties?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_es.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_es.properties
Thu Oct 13 20:12:23 2011
@@ -851,6 +851,7 @@ ssl_pass_title=Contrase\u00F1a de KeySto
ssl_port=Puerto SSL
sslmanager=Gestor SSL
start=Arrancar
+start_no_timers=Inicio no se detiene
starttime=Tiempo de Arranque
stop=Parar
stopping_test=Parando todos los hilos. Por favor, sea paciente.
@@ -976,6 +977,7 @@ view_results_response_code=C\u00F3digo d
view_results_response_headers=Cabeceras de respuesta\:
view_results_response_message=Mensaje de respuesta\:
view_results_response_too_large_message=Respuesta muy larga a ser mostrada.
Tama\u00F1o\:
+view_results_response_partial_message=Principio del mensaje:
view_results_sample_count=Conteo de muestra\:
view_results_sample_start=Comienzo de muestra\:
view_results_search_pane=Panel de b\u00FAsqueda
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
Thu Oct 13 20:12:23 2011
@@ -785,6 +785,7 @@ ssl_pass_title=Mot de passe KeyStore
ssl_port=Port SSL
sslmanager=Gestionnaire SSL
start=Lancer
+start_no_timers=Lancer sans pauses
starttime=Date et heure de d\u00E9marrage \:
stop=Arr\u00EAter
stopping_test=En train d'\u00E9teindre toutes les unit\u00E9s de tests. Soyez
patient, merci.
@@ -904,6 +905,7 @@ view_results_response_code=Code de retou
view_results_response_headers=Ent\u00EAtes de r\u00E9ponse \:
view_results_response_message=Message de retour \:
view_results_response_too_large_message=R\u00E9ponse d\u00E9passant la taille
maximale d'affichage. Taille \:
+view_results_response_partial_message=D\u00E9but du message:
view_results_sample_count=Compteur \u00E9chantillon \:
view_results_sample_start=Date d\u00E9but \u00E9chantillon \:
view_results_search_pane=Volet recherche
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_pt_BR.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_pt_BR.properties?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_pt_BR.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_pt_BR.properties
Thu Oct 13 20:12:23 2011
@@ -734,6 +734,7 @@ ssl_pass_title=Senha do Armaz\u00E9m de
ssl_port=Porta SSL
sslmanager=Gerenciador SSL
start=Iniciar
+start_no_timers=Iniciar sem pausas
starttime=Tempo de In\u00EDcio
stop=Interromper
stopping_test=Interrompendo todos os usu\u00E1rios virtuais. Por favor, seja
paciente.
@@ -840,6 +841,7 @@ view_results_response_code=C\u00F3digo d
view_results_response_headers=Cabe\u00E7alhos da Resposta\:
view_results_response_message=Mensagem de resposta\:
view_results_response_too_large_message=Resposta muito grande para ser
exibida. Tamanho\:
+view_results_response_partial_message=In\u00EDcio da mensagem:
view_results_sample_count=Contagem de amostras\:
view_results_sample_start=In\u00EDcio da Amostra\:
view_results_size_in_bytes=Tamanho em bytes\:
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1183065&r1=1183064&r2=1183065&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Oct 13 20:12:23 2011
@@ -167,6 +167,7 @@ Mirror server now uses default port 8081
<li>Bug 51892 - Default mirror port should be different from default proxy
port</li>
<li>Bug 51817 - Moving variables up and down in User Defined Variables
control</li>
<li>Bug 51876 - Functionnality to search in Samplers TreeView</li>
+<li>Bug 52019 - Add menu option to Start a test ignoring Pause Timers</li>
</ul>
<h2>Non-functional changes</h2>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]