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 =================== -->