You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2017/11/08 20:23:55 UTC

svn commit: r1814635 - in /jmeter/trunk: src/core/org/apache/jmeter/gui/ src/core/org/apache/jmeter/gui/action/ src/core/org/apache/jmeter/resources/ xdocs/

Author: pmouawad
Date: Wed Nov  8 20:23:55 2017
New Revision: 1814635

URL: http://svn.apache.org/viewvc?rev=1814635&view=rev
Log:
Bug 61731 - Enhance Test plan Backup with option to save before run
Bugzilla Id: 61731

Added:
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java   (with props)
Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractAction.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java Wed Nov  8 20:23:55 2017
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.prefs.Preferences;
 
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JOptionPane;
@@ -72,6 +73,14 @@ public final class GuiPackage implements
     /** Logging. */
     private static final Logger log = LoggerFactory.getLogger(GuiPackage.class);
 
+    private static final String SBR_PREFS_KEY = "save_before_run";
+
+    private static final String SAVE_BEFORE_RUN_PROPERTY = "save_automatically_before_run"; // $NON-NLS-1$
+    
+    private static final boolean SAVE_BEFORE_RUN_PROPERTY_DEFAULT_VALUE = true;
+
+    private static final Preferences PREFS = Preferences.userNodeForPackage(GuiPackage.class);
+
     /** Singleton instance. */
     private static GuiPackage guiPack;
 
@@ -115,13 +124,18 @@ public final class GuiPackage implements
 
     /** The main JMeter toolbar. */
     private JToolBar toolbar;
-
+    
     /**
      * The LoggerPanel menu item
      */
     private JCheckBoxMenuItem menuItemLoggerPanel;
 
     /**
+     * The LoggerPanel menu item
+     */
+    private JCheckBoxMenuItem menuItemSaveBeforeRunPanel;
+    
+    /**
      * Logger Panel reference
      */
     private LoggerPanel loggerPanel;
@@ -783,16 +797,35 @@ public final class GuiPackage implements
      * @param menuItemLoggerPanel The menu item LoggerPanel
      */
     public void setMenuItemLoggerPanel(JCheckBoxMenuItem menuItemLoggerPanel) {
-        this.menuItemLoggerPanel = menuItemLoggerPanel;
+    	this.menuItemLoggerPanel = menuItemLoggerPanel;
     }
-
+        
     /**
      * Get the menu item LoggerPanel.
      *
      * @return the menu item LoggerPanel
      */
     public JCheckBoxMenuItem getMenuItemLoggerPanel() {
-        return menuItemLoggerPanel;
+    	return menuItemLoggerPanel;
+    }
+    
+    /**
+     * Set the menu item SaveBeforeRunPanel.
+     * 
+     * @param menuItemSaveBeforeRunPanel
+     *            The menu item SaveBeforeRunPanel
+     */
+    public void setMenuItemSaveBeforeRunPanel(JCheckBoxMenuItem menuItemSaveBeforeRunPanel) {
+        this.menuItemSaveBeforeRunPanel = menuItemSaveBeforeRunPanel;
+    }
+
+    /**
+     * Get the menu item SaveBeforeRunPanel.
+     *
+     * @return the menu item SaveBeforeRunPanel
+     */
+    public JCheckBoxMenuItem getMenuItemSaveBeforeRunPanel() {
+        return menuItemSaveBeforeRunPanel;
     }
 
     /**
@@ -920,4 +953,37 @@ public final class GuiPackage implements
     public void endUndoTransaction() {
         undoHistory.endUndoTransaction();
     }
+    
+    
+    /**
+     * Should Save Before Run by Preference Only
+     * @return boolean
+     */
+    public boolean shouldSaveBeforeRunByPreference() {
+        return Boolean.TRUE.toString().
+                equalsIgnoreCase(PREFS.get(SBR_PREFS_KEY, null));
+    }
+    
+    /**
+     * Should Save Before Run by Preference Only
+     * @param saveBeforeRun boolean
+     */
+    public void setSaveBeforeRunByPreference(boolean saveBeforeRun) {
+        PREFS.put(SBR_PREFS_KEY, Boolean.toString(saveBeforeRun)); // $NON-NLS-1$ // $NON-NLS-2$
+    }
+    
+    /**
+     * Should Save Before Run 
+     * Decide by Preference and if not exists by Property
+     */
+    public boolean shouldSaveBeforeRun() {
+        String sbr = PREFS.get(SBR_PREFS_KEY, null);
+        if (sbr == null) {
+            // use property if no preference
+            return JMeterUtils.getPropDefault(SAVE_BEFORE_RUN_PROPERTY, 
+                    SAVE_BEFORE_RUN_PROPERTY_DEFAULT_VALUE);         
+        } else {
+            return shouldSaveBeforeRunByPreference();
+        }
+    }
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractAction.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractAction.java?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractAction.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/AbstractAction.java Wed Nov  8 20:23:55 2017
@@ -22,7 +22,6 @@ import java.awt.event.ActionEvent;
 import java.io.File;
 import java.text.MessageFormat;
 import java.util.Iterator;
-import java.util.Set;
 
 import javax.swing.JOptionPane;
 
@@ -43,7 +42,7 @@ public abstract class AbstractAction imp
         DELETE,
         ASK
     }
-    
+
     private static final ActionOnFile actionOnFile = 
             ActionOnFile.valueOf(
                     JMeterUtils.getPropDefault(
@@ -58,18 +57,22 @@ public abstract class AbstractAction imp
     }
 
     /**
-     * @param e the event that led to the call of this method
+     * Check if we should save before run
+     * 
+     * @param e
+     *            the event that led to the call of this method
      */
     protected void popupShouldSave(ActionEvent e) {
         log.debug("popupShouldSave");
         if (GuiPackage.getInstance().getTestPlanFile() == null) {
             if (JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(),
-                    JMeterUtils.getResString("should_save"),  //$NON-NLS-1$
-                    JMeterUtils.getResString("warning"),  //$NON-NLS-1$
-                    JOptionPane.YES_NO_OPTION,
-                    JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
-                ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(),ActionNames.SAVE));
+                    JMeterUtils.getResString("should_save"), //$NON-NLS-1$
+                    JMeterUtils.getResString("warning"), //$NON-NLS-1$
+                    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+                ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.SAVE));
             }
+        } else if (GuiPackage.getInstance().shouldSaveBeforeRun()) {
+            ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.SAVE));
         }
     }
     

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/ActionNames.java Wed Nov  8 20:23:55 2017
@@ -104,6 +104,7 @@ public final class ActionNames {
     public static final String EXPAND           = "expand"; // $NON-NLS-1$
     public static final String RUN_TG           = "run_tg"; // $NON-NLS-1$
     public static final String RUN_TG_NO_TIMERS = "run_tg_no_timers"; // $NON-NLS-1$
+    public static final String SAVE_BEFORE_RUN  = "save_before_run"; //$NON-NLS-1$
     public static final String THREAD_DUMP      = "thread_dump"; // $NON-NLS-1$
     public static final String VALIDATE_TG      = "validate_tg"; //$NON-NLS-1$
     public static final String ZOOM_IN          = "zoom_in"; //$NON-NLS-1$

Added: jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java?rev=1814635&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java (added)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java Wed Nov  8 20:23:55 2017
@@ -0,0 +1,55 @@
+/*
+ * 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.gui.action;
+
+import java.awt.event.ActionEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.jmeter.gui.GuiPackage;
+/**
+ * Save Before Run Action
+ * To save test plan before GUI execution
+ * 
+ * @since 4.0
+ */
+public class SaveBeforeRun extends AbstractAction {
+	private static final Set<String> commands = new HashSet<>();
+		
+	static {
+		commands.add(ActionNames.SAVE_BEFORE_RUN);
+	}
+
+	@Override
+	public Set<String> getActionNames() {
+		return commands;
+	}
+
+	@Override
+	public void doAction(ActionEvent e) {
+		if (ActionNames.SAVE_BEFORE_RUN.equals(e.getActionCommand())) {
+			// toggle boolean preference value
+            GuiPackage guiInstance = GuiPackage.getInstance();
+			boolean togglePreferenceValue = !guiInstance.shouldSaveBeforeRunByPreference();
+			guiInstance.setSaveBeforeRunByPreference(togglePreferenceValue);
+			// toggle check box
+            guiInstance.getMenuItemSaveBeforeRunPanel().getModel().setSelected(togglePreferenceValue);
+		}
+	}
+}

Propchange: jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jmeter/trunk/src/core/org/apache/jmeter/gui/action/SaveBeforeRun.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Wed Nov  8 20:23:55 2017
@@ -689,6 +689,7 @@ menu_post_processors=Post Processors
 menu_pre_processors=Pre Processors
 menu_recent=Open Recent
 menu_response_based_modifiers=Response Based Modifiers
+menu_save_before_run=Save automatically before run
 menu_search=Search
 menu_search_reset=Reset Search
 menu_tables=Table

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Wed Nov  8 20:23:55 2017
@@ -679,6 +679,7 @@ menu_post_processors=Post-Processeurs
 menu_pre_processors=Pr\u00E9-Processeurs
 menu_recent=Ouvrir R\u00E9cents
 menu_response_based_modifiers=Modificateurs bas\u00E9s sur la r\u00E9ponse
+menu_save_before_run=Enregistrer automatiquement avant l'ex\u00e9cution
 menu_search=Rechercher
 menu_search_reset=Effacer la recherche
 menu_tables=Table

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1814635&r1=1814634&r2=1814635&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Nov  8 20:23:55 2017
@@ -149,7 +149,7 @@ Summary
     <li><bug>61694</bug>Add -server option in jmeter.bat</li>
     <li><bug>61697</bug>Introduce Darcula Look And Feel to make JMeter UI more attractive</li>
     <li><bug>61704</bug>Toolbar : Improve a bit the right part</li>
-    <li><pr>319</pr> Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)</li>
+    <li><bug>61731</bug>Enhance Test plan Backup with option to save before run. Based on a contribution by orimarko at gmail.com</li>
 </ul>
 
 <ch_section>Non-functional changes</ch_section>
@@ -160,6 +160,7 @@ Summary
     <li><bug>61641</bug>Improve JMS test coverage</li>
     <li><bug>61651</bug>Improve TCP test coverage</li>
     <li><bug>61651</bug>Improve OS test coverage. Partly contributed by Aleksei Balan (abalanonline at gmail.com)</li> 
+    <li><pr>319</pr> Removed commented out code. Contributed by Graham Russell (graham at ham1.co.uk)</li>
 </ul>
 
  <!-- =================== Bug fixes =================== -->