You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2012/01/17 20:35:14 UTC

svn commit: r1232550 - in /jmeter/trunk: bin/testfiles/ src/core/org/apache/jmeter/gui/tree/ src/core/org/apache/jmeter/save/ src/core/org/apache/jmeter/save/converters/ src/reports/org/apache/jmeter/report/gui/tree/ xdocs/

Author: sebb
Date: Tue Jan 17 19:35:13 2012
New Revision: 1232550

URL: http://svn.apache.org/viewvc?rev=1232550&view=rev
Log:
Bug 52466 - Upgrade Test Plan feature : NameUpdater does not upgrade properties

Modified:
    jmeter/trunk/bin/testfiles/GuiTest.jmx
    jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java
    jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/ConversionHelp.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java
    jmeter/trunk/src/core/org/apache/jmeter/save/converters/TestElementConverter.java
    jmeter/trunk/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/bin/testfiles/GuiTest.jmx
URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/GuiTest.jmx?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/bin/testfiles/GuiTest.jmx (original)
+++ jmeter/trunk/bin/testfiles/GuiTest.jmx Tue Jan 17 19:35:13 2012
@@ -642,17 +642,12 @@
             <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
               <collectionProp name="Arguments.arguments"/>
             </elementProp>
-            <stringProp name="AccessLogSampler.parser_class_name">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
-            <boolProp name="HTTPSampler.image_parser">false</boolProp>
-            <intProp name="HTTPSampler.port">80</intProp>
             <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
             <stringProp name="portString"></stringProp>
             <stringProp name="logFile"></stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
             <stringProp name="domain"></stringProp>
             <stringProp name="AccessLogSampler.generator_class_name">org.apache.jmeter.protocol.http.util.accesslog.StandardGenerator</stringProp>
             <boolProp name="imageParsing">false</boolProp>
-            <stringProp name="AccessLogSampler.log_file"></stringProp>
           </AccessLogSampler>
           <hashTree/>
         </hashTree>

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java Tue Jan 17 19:35:13 2012
@@ -35,7 +35,6 @@ import org.apache.jmeter.testelement.Tes
 import org.apache.jmeter.testelement.TestPlan;
 import org.apache.jmeter.testelement.WorkBench;
 import org.apache.jmeter.testelement.property.NullProperty;
-import org.apache.jmeter.util.NameUpdater;
 import org.apache.jorphan.collections.HashTree;
 import org.apache.jorphan.collections.ListedHashTree;
 
@@ -120,8 +119,6 @@ public class JMeterTreeModel extends Def
         if (node.getUserObject() instanceof AbstractConfigGui) {
             throw new IllegalUserActionException("This node cannot hold sub-elements");
         }
-        component.setProperty(TestElement.GUI_CLASS, NameUpdater.getCurrentName(component
-                .getPropertyAsString(TestElement.GUI_CLASS)));
 
         GuiPackage guiPackage = GuiPackage.getInstance();
         if (guiPackage != null) {

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java Tue Jan 17 19:35:13 2012
@@ -61,10 +61,13 @@ public class SaveService {
 
     private static final Logger log = LoggingManager.getLoggerForClass();
 
-    // Names of DataHolder entries
+    // Names of DataHolder entries for JTL processing
     public static final String SAMPLE_EVENT_OBJECT = "SampleEvent"; // $NON-NLS-1$
     public static final String RESULTCOLLECTOR_HELPER_OBJECT = "ResultCollectorHelper"; // $NON-NLS-1$
 
+    // Names of DataHolder entries for JMX processing
+    public static final String TEST_CLASS_NAME = "TestClassName"; // $NON-NLS-1$
+
     private static final class XStreamWrapper extends XStream {
         private XStreamWrapper(ReflectionProvider reflectionProvider) {
             super(reflectionProvider);

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java Tue Jan 17 19:35:13 2012
@@ -50,9 +50,12 @@ public class BooleanPropertyConverter im
     }
 
     /** {@inheritDoc} */
-    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) {
-        BooleanProperty prop = new BooleanProperty(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME)), Boolean.valueOf(
-                reader.getValue()).booleanValue());
+    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+        final String name = ConversionHelp.getPropertyName(reader, context);
+        if (name == null) {
+            return null;
+        }
+        BooleanProperty prop = new BooleanProperty(name, Boolean.valueOf(reader.getValue()).booleanValue());
         return prop;
     }
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/ConversionHelp.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/ConversionHelp.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/ConversionHelp.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/ConversionHelp.java Tue Jan 17 19:35:13 2012
@@ -29,9 +29,11 @@ import java.util.Map;
 
 import org.apache.jmeter.save.SaveService;
 import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.util.NameUpdater;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
 
+import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 
@@ -47,12 +49,13 @@ public class ConversionHelp {
     // Attributes for TestElement and TestElementProperty
     // Must all be unique
     public static final String ATT_CLASS         = "class"; //$NON-NLS-1$
+    // Also used by PropertyConverter classes
     public static final String ATT_NAME          = "name"; // $NON-NLS-1$
     public static final String ATT_ELEMENT_TYPE  = "elementType"; // $NON-NLS-1$
 
     private static final String ATT_TE_ENABLED   = "enabled"; //$NON-NLS-1$
     private static final String ATT_TE_TESTCLASS = "testclass"; //$NON-NLS-1$
-    private static final String ATT_TE_GUICLASS  = "guiclass"; //$NON-NLS-1$
+            static final String ATT_TE_GUICLASS  = "guiclass"; //$NON-NLS-1$
     private static final String ATT_TE_NAME      = "testname"; //$NON-NLS-1$
 
 
@@ -147,7 +150,11 @@ public class ConversionHelp {
         String att=propertyToAttribute.get(prop);
         String alias=reader.getAttribute(att);
         if (alias!=null){
-            el.setProperty(prop,SaveService.aliasToClass(alias));
+            alias=SaveService.aliasToClass(alias);
+            if (TestElement.GUI_CLASS.equals(prop)) { // mainly for TestElementConverter
+               alias = NameUpdater.getCurrentName(alias);
+            }
+            el.setProperty(prop,alias);
         }
     }
 
@@ -179,6 +186,71 @@ public class ConversionHelp {
     }
 
     /**
+     * Get the property name, updating it if necessary using {@link NameUpdater}.
+     * @param reader where to read the name attribute
+     * @param context the unmarshalling context
+     * 
+     * @return the property name, may be null if the property has been deleted.
+     * @see #getUpgradePropertyName(String, UnmarshallingContext)
+     */
+    public static String getPropertyName(HierarchicalStreamReader reader, UnmarshallingContext context) {
+        String name = ConversionHelp.decode(reader.getAttribute(ATT_NAME));
+        return getUpgradePropertyName(name, context);
+        
+    }
+
+    /**
+     * Get the property value, updating it if necessary using {@link NameUpdater}.
+     * 
+     * Do not use for GUI_CLASS or TEST_CLASS.
+     * 
+     * @param reader where to read the value
+     * @param context the unmarshalling context
+     * 
+     * @return the property value, updated if necessary.
+     * @see #getUpgradePropertyValue(String, String, UnmarshallingContext)
+     */
+    public static String getPropertyValue(HierarchicalStreamReader reader, UnmarshallingContext context, String name) {
+        String value = ConversionHelp.decode(reader.getValue());
+        return getUpgradePropertyValue(name, value, context);
+        
+    }
+
+    /**
+     * Update a property name using {@link NameUpdater}.
+     * @param name the original property name
+     * @param context the unmarshalling context
+     * 
+     * @return the property name, may be null if the property has been deleted.
+     */
+    public static String getUpgradePropertyName(String name, UnmarshallingContext context) {
+        String testClass = (String) context.get(SaveService.TEST_CLASS_NAME);
+        final String newName = NameUpdater.getCurrentName(name, testClass);
+        // Delete any properties whose name converts to the empty string
+        if (name.length() != 0 && newName.length()==0) {
+            return null;
+        }
+        return name;
+    }
+
+    /**
+     * Update a property value using {@link NameUpdater#getCurrentName(String, String, String)}.
+     * 
+     * Do not use for GUI_CLASS or TEST_CLASS.
+     * 
+     * @param name the original property name
+     * @param value the original property value
+     * @param context the unmarshalling context
+     * 
+     * @return the property value, updated if necessary
+     */
+    public static String getUpgradePropertyValue(String name, String value, UnmarshallingContext context) {
+        String testClass = (String) context.get(SaveService.TEST_CLASS_NAME);
+        return NameUpdater.getCurrentName(value, name, testClass);
+    }
+
+
+    /**
      * Save the special properties:
      * <ul>
      * <li>TestElement.GUI_CLASS</li>

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java Tue Jan 17 19:35:13 2012
@@ -49,9 +49,12 @@ public class IntegerPropertyConverter im
     }
 
     /** {@inheritDoc} */
-    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) {
-        IntegerProperty prop = new IntegerProperty(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME)), Integer
-                .parseInt(reader.getValue()));
+    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+        final String name = ConversionHelp.getPropertyName(reader, context);
+        if (name == null) {
+            return null;
+        }
+        IntegerProperty prop = new IntegerProperty(name, Integer.parseInt(reader.getValue()));
         return prop;
     }
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java Tue Jan 17 19:35:13 2012
@@ -49,9 +49,12 @@ public class LongPropertyConverter imple
     }
 
     /** {@inheritDoc} */
-    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) {
-        LongProperty prop = new LongProperty(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME)), Long.parseLong(reader
-                .getValue()));
+    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+        final String name = ConversionHelp.getPropertyName(reader, context);
+        if (name == null) {
+            return null;
+        }
+        LongProperty prop = new LongProperty(name, Long.parseLong(reader.getValue()));
         return prop;
     }
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java Tue Jan 17 19:35:13 2012
@@ -49,9 +49,13 @@ public class StringPropertyConverter imp
     }
 
     /** {@inheritDoc} */
-    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) {
-        StringProperty prop = new StringProperty(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME)), ConversionHelp
-                .decode(reader.getValue()));
+    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
+        final String name = ConversionHelp.getPropertyName(reader, context);
+        if (name == null) {
+            return null;
+        }
+        final String value = ConversionHelp.getPropertyValue(reader, context, name);
+        StringProperty prop = new StringProperty(name, value);
         return prop;
     }
 }
\ No newline at end of file

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/converters/TestElementConverter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/TestElementConverter.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/converters/TestElementConverter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/converters/TestElementConverter.java Tue Jan 17 19:35:13 2012
@@ -23,6 +23,7 @@ import org.apache.jmeter.testelement.Tes
 import org.apache.jmeter.testelement.TestPlan;
 import org.apache.jmeter.testelement.property.JMeterProperty;
 import org.apache.jmeter.testelement.property.PropertyIterator;
+import org.apache.jmeter.util.NameUpdater;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
 
@@ -86,10 +87,21 @@ public class TestElementConverter extend
         } else {
             type = mapper().realClass(classAttribute);
         }
+        // Update the test class name if necessary (Bug 52466)
+        String inputName = type.getName();
+        String targetName = inputName;
+        String guiClassName = SaveService.aliasToClass(reader.getAttribute(ConversionHelp.ATT_TE_GUICLASS));
+        targetName = NameUpdater.getCurrentTestName(inputName, guiClassName);
+        if (!targetName.equals(inputName)) { // remap the class name
+            type = mapper().realClass(targetName);
+        }
+        context.put(SaveService.TEST_CLASS_NAME, targetName); // needed by property converters  (Bug 52466)
         try {
             TestElement el = (TestElement) type.newInstance();
             // No need to check version, just process the attributes if present
             ConversionHelp.restoreSpecialProperties(el, reader);
+            // Slight hack - we need to ensure the TestClass is not reset by the previous call
+            el.setProperty(TestElement.TEST_CLASS, targetName);
             while (reader.hasMoreChildren()) {
                 reader.moveDown();
                 JMeterProperty prop = (JMeterProperty) readItem(reader, context, el);

Modified: jmeter/trunk/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java (original)
+++ jmeter/trunk/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java Tue Jan 17 19:35:13 2012
@@ -34,7 +34,6 @@ import org.apache.jmeter.report.gui.tree
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.testelement.ReportPlan;
 import org.apache.jmeter.testelement.property.NullProperty;
-import org.apache.jmeter.util.NameUpdater;
 import org.apache.jorphan.collections.HashTree;
 import org.apache.jorphan.collections.ListedHashTree;
 
@@ -94,9 +93,6 @@ public class ReportTreeModel extends Def
             throw new IllegalUserActionException(
                     "This node cannot hold sub-elements");
         }
-        component.setProperty(TestElement.GUI_CLASS, NameUpdater
-                .getCurrentName(component
-                        .getPropertyAsString(TestElement.GUI_CLASS)));
         ReportGuiPackage.getInstance().updateCurrentNode();
         JMeterGUIComponent guicomp = ReportGuiPackage.getInstance().getGui(component);
         guicomp.configure(component);

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1232550&r1=1232549&r2=1232550&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Tue Jan 17 19:35:13 2012
@@ -169,6 +169,7 @@ fix code which assumes that a new instan
 <li>Bug 52399 - URLRewritingModifier uses default file.encoding to match text content</li>
 <li>Bug 50438 - code calculates average with integer math, expecting double value</li>
 <li>Bug 52469 - Changes in Support of SSH-Tunneling of RMI traffic for Remote Testing</li>
+<li>Bug 52466 - Upgrade Test Plan feature : NameUpdater does not upgrade properties</li>
 </ul>
 
 <!-- =================== Improvements =================== -->