You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2004/05/21 18:58:26 UTC
cvs commit: jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler JDBCSamplerBeanInfo.java
mstover1 2004/05/21 09:58:26
Modified: bin jmeter.properties
src/core/org/apache/jmeter/control IfController.java
LoopController.java
src/core/org/apache/jmeter/testbeans TestBean.java
src/core/org/apache/jmeter/testbeans/gui
GenericTestBeanCustomizer.java
src/core/org/apache/jmeter/testelement/property
FunctionProperty.java
src/core/org/apache/jmeter/threads SamplePackage.java
TestCompiler.java
src/core/org/apache/jmeter/util JMeterVersion.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy
HttpRequestHdr.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler
AccessLogSampler.java
src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog
LogFilter.java TCLogParser.java
src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler
JDBCSamplerBeanInfo.java
Added: src/core/org/apache/jmeter/testbeans/gui TextAreaEditor.java
src/jorphan/org/apache/jorphan/util Converter.java
Log:
Fixing AccessLog filter, fixing caching of Controller property values
Revision Changes Path
1.104 +2 -1 jakarta-jmeter/bin/jmeter.properties
Index: jmeter.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -r1.103 -r1.104
--- jmeter.properties 20 May 2004 19:18:39 -0000 1.103
+++ jmeter.properties 21 May 2004 16:58:25 -0000 1.104
@@ -117,6 +117,7 @@
log_level.jmeter=INFO
log_level.jmeter.junit=DEBUG
+log_level.jmeter.control=DEBUG
#log_level.jmeter.testbeans=DEBUG
#log_level.jmeter.engine=DEBUG
#log_level.jmeter.gui=WARN
@@ -124,7 +125,7 @@
#log_level.jmeter.util=WARN
#log_level.jmeter.util.classfinder=WARN
#log_level.jmeter.test=DEBUG
-#log_level.jmeter.protocol.http=DEBUG
+log_level.jmeter.protocol.http=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=DEBUG
#log_level.jmeter.protocol.java=WARN
1.6 +3 -6 jakarta-jmeter/src/core/org/apache/jmeter/control/IfController.java
Index: IfController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/IfController.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- IfController.java 19 Apr 2004 19:05:56 -0000 1.5
+++ IfController.java 21 May 2004 16:58:26 -0000 1.6
@@ -86,10 +86,7 @@
* Condition Accessor - this is gonna be like ${count}<10
*/
public String getCondition() {
- JMeterProperty prop = getProperty(CONDITION);
- if (prop instanceof FunctionProperty)
- ((FunctionProperty)prop).setUseCache(false);
- return prop.getStringValue();
+ return getPropertyAsString(CONDITION);
}
/**
1.23 +2 -5 jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java
Index: LoopController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- LoopController.java 8 Apr 2004 19:16:44 -0000 1.22
+++ LoopController.java 21 May 2004 16:58:26 -0000 1.23
@@ -25,7 +25,6 @@
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.property.BooleanProperty;
-import org.apache.jmeter.testelement.property.FunctionProperty;
import org.apache.jmeter.testelement.property.IntegerProperty;
import org.apache.jmeter.testelement.property.JMeterProperty;
import org.apache.jmeter.testelement.property.StringProperty;
@@ -66,8 +65,6 @@
try
{
JMeterProperty prop = getProperty(LOOPS);
- if (prop instanceof FunctionProperty)
- ((FunctionProperty)prop).setUseCache(false);
return Integer.parseInt(prop.getStringValue());
}
catch (NumberFormatException e)
1.10 +4 -344 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBean.java
Index: TestBean.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBean.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TestBean.java 18 Feb 2004 23:57:16 -0000 1.9
+++ TestBean.java 21 May 2004 16:58:26 -0000 1.10
@@ -26,17 +26,13 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.jmeter.control.NextIsNullException;
-import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.testelement.TestElement;
-import org.apache.jmeter.testelement.TestElementTraverser;
-import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.testelement.property.JMeterProperty;
-import org.apache.jmeter.testelement.property.MapProperty;
import org.apache.jmeter.testelement.property.NullProperty;
import org.apache.jmeter.testelement.property.PropertyIterator;
import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jorphan.util.Converter;
import org.apache.jorphan.util.JOrphanUtils;
import org.apache.log.Logger;
@@ -181,59 +177,7 @@
// proper type? Or pre-building a type-to-valuegetter map?
// Or maybe just getting rid of all this property mess and storing
// the original objects instead?
-
- Object value;
- if (property instanceof NullProperty)
- {
- // Because we work through primitive types, we need to handle
- // the null case differently.
- value= null;
- }
- else if (type == boolean.class || type == Boolean.class)
- {
- value= JOrphanUtils.valueOf(property.getBooleanValue());//JDK1.4:
- }
- else if (type == double.class || type == Double.class)
- {
- value= new Double(property.getDoubleValue());
- }
- else if (type == float.class || type == Float.class)
- {
- value= new Float(property.getFloatValue());
- }
- else if (type == int.class || type == Integer.class)
- {
- value= new Integer(property.getIntValue());
- }
- else if (type == long.class || type == Long.class)
- {
- value= new Long(property.getLongValue());
- }
- else if (type == String.class)
- {
- value= property.getStringValue();
- }
- else
- {
- value= property.getObjectValue();
- }
-
- return value;
- }
-
- /*
- * ---------------------------------------------------------------------
- * All AbstractTestElement methods overriden just to mark them deprecate.
- * ---------------------------------------------------------------------
- */
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#addProperty(org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- protected void addProperty(JMeterProperty property)
- {
- super.addProperty(property);
+ return Converter.convert(property.getObjectValue(),type);
}
/**
@@ -263,288 +207,4 @@
// If we found no property for this one...
super.addTestElement(el);
}
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#clear()
- * @deprecated
- */
- public void clear()
- {
- super.clear();
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#clearTemporary(org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- protected void clearTemporary(JMeterProperty property)
- {
- super.clearTemporary(property);
- }
-
- /**
- * @see java.lang.Object#clone()
- * @deprecated
- */
- public Object clone()
- {
- return super.clone();
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#emptyTemporary()
- * @deprecated
- */
- protected void emptyTemporary()
- {
- super.emptyTemporary();
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- * @deprecated
- */
- public boolean equals(Object o)
- {
- return super.equals(o);
- }
-
- /**
- * This one is NOT deprecated.
- *
- * @see org.apache.jmeter.testelement.AbstractTestElement#getName()
- */
- public String getName()
- {
- return super.getName();
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getProperty(java.lang.String)
- * @deprecated
- */
- public JMeterProperty getProperty(String key)
- {
- return super.getProperty(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#getPropertyAsBoolean(java.lang.String, boolean)
- * @deprecated
- */
- public boolean getPropertyAsBoolean(String key, boolean defaultVal)
- {
- return super.getPropertyAsBoolean(key, defaultVal);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getPropertyAsBoolean(java.lang.String)
- * @deprecated
- */
- public boolean getPropertyAsBoolean(String key)
- {
- return super.getPropertyAsBoolean(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#getPropertyAsDouble(java.lang.String)
- * @deprecated
- */
- public double getPropertyAsDouble(String key)
- {
- return super.getPropertyAsDouble(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getPropertyAsFloat(java.lang.String)
- * @deprecated
- */
- public float getPropertyAsFloat(String key)
- {
- return super.getPropertyAsFloat(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getPropertyAsInt(java.lang.String)
- * @deprecated
- */
- public int getPropertyAsInt(String key)
- {
- return super.getPropertyAsInt(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getPropertyAsLong(java.lang.String)
- * @deprecated
- */
- public long getPropertyAsLong(String key)
- {
- return super.getPropertyAsLong(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#getPropertyAsString(java.lang.String)
- * @deprecated
- */
- public String getPropertyAsString(String key)
- {
- return super.getPropertyAsString(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#isRunningVersion()
- * @deprecated
- */
- public boolean isRunningVersion()
- {
- return super.isRunningVersion();
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#isTemporary(org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- public boolean isTemporary(JMeterProperty property)
- {
- return super.isTemporary(property);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#logProperties()
- * @deprecated
- */
- protected void logProperties()
- {
- super.logProperties();
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#mergeIn(org.apache.jmeter.testelement.TestElement)
- * @deprecated
- */
- protected void mergeIn(TestElement element)
- {
- super.mergeIn(element);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#nextIsNull()
- * @deprecated
- */
- protected Sampler nextIsNull() throws NextIsNullException
- {
- return super.nextIsNull();
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#propertyIterator()
- * @deprecated
- */
- public PropertyIterator propertyIterator()
- {
- return super.propertyIterator();
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#recoverRunningVersion()
- * @deprecated
- */
- public void recoverRunningVersion()
- {
- super.recoverRunningVersion();
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#removeProperty(java.lang.String)
- * @deprecated
- */
- public void removeProperty(String key)
- {
- super.removeProperty(key);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#setName(java.lang.String)
- * @deprecated
- */
- public void setName(String name)
- {
- super.setName(name);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#setProperty(org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- public void setProperty(JMeterProperty property)
- {
- super.setProperty(property);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#setProperty(java.lang.String, java.lang.String)
- * @deprecated
- */
- public void setProperty(String name, String value)
- {
- super.setProperty(name, value);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#setRunningVersion(boolean)
- * @deprecated
- */
- public void setRunningVersion(boolean runningVersion)
- {
- super.setRunningVersion(runningVersion);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#setTemporary(org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- public void setTemporary(JMeterProperty property)
- {
- super.setTemporary(property);
- }
-
- /**
- * @see org.apache.jmeter.testelement.TestElement#traverse(org.apache.jmeter.testelement.TestElementTraverser)
- * @deprecated
- */
- public void traverse(TestElementTraverser traverser)
- {
- super.traverse(traverser);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#traverseCollection(org.apache.jmeter.testelement.property.CollectionProperty, org.apache.jmeter.testelement.TestElementTraverser)
- * @deprecated
- */
- protected void traverseCollection(
- CollectionProperty col,
- TestElementTraverser traverser)
- {
- super.traverseCollection(col, traverser);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#traverseMap(org.apache.jmeter.testelement.property.MapProperty, org.apache.jmeter.testelement.TestElementTraverser)
- * @deprecated
- */
- protected void traverseMap(MapProperty map, TestElementTraverser traverser)
- {
- super.traverseMap(map, traverser);
- }
-
- /**
- * @see org.apache.jmeter.testelement.AbstractTestElement#traverseProperty(org.apache.jmeter.testelement.TestElementTraverser, org.apache.jmeter.testelement.property.JMeterProperty)
- * @deprecated
- */
- protected void traverseProperty(
- TestElementTraverser traverser,
- JMeterProperty value)
- {
- super.traverseProperty(traverser, value);
- }
}
1.8 +10 -5 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
Index: GenericTestBeanCustomizer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- GenericTestBeanCustomizer.java 20 May 2004 19:18:40 -0000 1.7
+++ GenericTestBeanCustomizer.java 21 May 2004 16:58:26 -0000 1.8
@@ -20,14 +20,12 @@
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
-
import java.beans.BeanInfo;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyDescriptor;
import java.beans.PropertyEditor;
import java.beans.PropertyEditorManager;
-
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Comparator;
@@ -39,6 +37,7 @@
import javax.swing.Box;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JScrollPane;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
@@ -115,6 +114,8 @@
}
public static final String DEFAULT_GROUP= "";
+
+ private int scrollerCount = 0;
/**
* BeanInfo object for the class of the objects being edited.
@@ -236,6 +237,10 @@
+" is wrapped in "+propertyEditor);
}
}
+ if(propertyEditor.getCustomEditor() instanceof JScrollPane)
+ {
+ scrollerCount++;
+ }
editors[i]= propertyEditor;
@@ -453,7 +458,7 @@
Component customEditor= editors[i].getCustomEditor();
boolean multiLineEditor= false;
- if (customEditor.getPreferredSize().height > 50)
+ if (customEditor.getPreferredSize().height > 50 || customEditor instanceof JScrollPane)
{
// TODO: the above works in the current situation, but it's
// just a hack. How to get each editor to report whether it
1.1 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java
Index: TextAreaEditor.java
===================================================================
/*
* Created on May 21, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.apache.jmeter.testbeans.gui;
import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.beans.PropertyEditorSupport;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* @author mstover
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class TextAreaEditor extends PropertyEditorSupport implements
FocusListener
{
JTextArea textUI;
JScrollPane scroller;
/* (non-Javadoc)
* @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
*/
public void focusGained(FocusEvent e)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
*/
public void focusLost(FocusEvent e)
{
firePropertyChange();
}
public static void main(String[] args)
{
}
protected void init()
{
textUI= new JTextArea();
textUI.addFocusListener(this);
textUI.setWrapStyleWord(true);
textUI.setLineWrap(true);
scroller = new JScrollPane(textUI,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
}
/**
*
*/
public TextAreaEditor()
{
super();
init();
}
/**
* @param source
*/
public TextAreaEditor(Object source)
{
super(source);
init();
setValue(source);
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getAsText()
*/
public String getAsText()
{
return textUI.getText();
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getCustomEditor()
*/
public Component getCustomEditor()
{
return scroller;
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#setAsText(java.lang.String)
*/
public void setAsText(String text) throws IllegalArgumentException
{
textUI.setText(text);
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#setValue(java.lang.Object)
*/
public void setValue(Object value)
{
if(value != null)
{
textUI.setText(value.toString());
}
else
{
textUI.setText("");
}
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getValue()
*/
public Object getValue()
{
return textUI.getText();
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#supportsCustomEditor()
*/
public boolean supportsCustomEditor()
{
// TODO Auto-generated method stub
return true;
}
}
1.17 +109 -131 jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java
Index: FunctionProperty.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- FunctionProperty.java 8 Apr 2004 19:16:44 -0000 1.16
+++ FunctionProperty.java 21 May 2004 16:58:26 -0000 1.17
@@ -1,20 +1,20 @@
// $Header$
/*
* Copyright 2003-2004 The Apache Software Foundation.
- *
- * Licensed 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.
*
-*/
+ * Licensed 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.testelement.property;
@@ -28,120 +28,98 @@
*/
public class FunctionProperty extends AbstractProperty
{
- CompoundVariable function;
- int testIteration = -1;
- String cacheValue;
- boolean useCache = true;
-
- public FunctionProperty(String name, CompoundVariable func)
- {
- super(name);
- function = func;
- }
-
- public FunctionProperty()
- {
- super();
- }
-
- public void setObjectValue(Object v)
- {
- if (v instanceof CompoundVariable && !isRunningVersion())
- {
- function = (CompoundVariable) v;
- }
- else
- {
- cacheValue = v.toString();
- }
- }
-
- public boolean equals(Object o)
- {
- if (o instanceof FunctionProperty)
- {
- if (function != null)
- {
- return function.equals(((JMeterProperty) o).getObjectValue());
- }
- }
- return false;
- }
-
- /**
- * Executes the function (and caches the value for the duration of the test
- * iteration) if the property is a running version. Otherwise, the raw
- * string representation of the function is provided.
- * @see JMeterProperty#getStringValue()
- */
- public String getStringValue()
- {
- log.debug("Calling getStringValue from FunctionProperty");
- log.debug("boogedy boogedy");
- JMeterContext ctx = JMeterContextService.getContext();//Expensive, so do once
- if (!isRunningVersion()
- || !ctx.isSamplingStarted())
- {
- log.debug("Not running version, return raw function string");
- return function.getRawParameters();
- }
- else
- {
- log.debug("Running version, executing function");
- int iter =
- ctx.getVariables().getIteration();
- if (iter < testIteration)
- {
- testIteration = -1;
- }
- if (useCache)
- {
- if(iter > testIteration || cacheValue == null)
- {
- testIteration = iter;
- cacheValue = function.execute();
- }
- return cacheValue;
- }
- else
- {
- return function.execute();
- }
- }
- }
-
- /**
- * @see JMeterProperty#getObjectValue()
- */
- public Object getObjectValue()
- {
- return function;
- }
-
- public Object clone()
- {
- FunctionProperty prop = (FunctionProperty) super.clone();
- prop.cacheValue = cacheValue;
- prop.testIteration = testIteration;
- prop.function = function;
- return prop;
- }
-
- /**
- * @see JMeterProperty#recoverRunningVersion(TestElement)
- */
- public void recoverRunningVersion(TestElement owner)
- {
- cacheValue = null;
- }
-
- public void setUseCache(boolean useCache)
- {
- this.useCache = useCache;
- }
-
- public boolean getUseCache()
- {
- return useCache;
- }
+ CompoundVariable function;
+ int testIteration = -1;
+ String cacheValue;
+
+ public FunctionProperty(String name, CompoundVariable func)
+ {
+ super(name);
+ function = func;
+ }
+
+ public FunctionProperty()
+ {
+ super();
+ }
+
+ public void setObjectValue(Object v)
+ {
+ if (v instanceof CompoundVariable && !isRunningVersion())
+ {
+ function = (CompoundVariable) v;
+ }
+ else
+ {
+ cacheValue = v.toString();
+ }
+ }
+
+ public boolean equals(Object o)
+ {
+ if (o instanceof FunctionProperty)
+ {
+ if (function != null) { return function.equals(((JMeterProperty) o)
+ .getObjectValue()); }
+ }
+ return false;
+ }
+
+ /**
+ * Executes the function (and caches the value for the duration of the test
+ * iteration) if the property is a running version. Otherwise, the raw
+ * string representation of the function is provided.
+ *
+ * @see JMeterProperty#getStringValue()
+ */
+ public String getStringValue()
+ {
+ JMeterContext ctx = JMeterContextService.getContext();//Expensive, so do
+ // once
+ if (!isRunningVersion() || !ctx.isSamplingStarted())
+ {
+ log.debug("Not running version, return raw function string");
+ return function.getRawParameters();
+ }
+ else
+ {
+ log.debug("Running version, executing function");
+ int iter = ctx.getVariables().getIteration();
+ if (iter < testIteration)
+ {
+ testIteration = -1;
+ }
+ if (iter > testIteration || cacheValue == null)
+ {
+ testIteration = iter;
+ cacheValue = function.execute();
+ }
+ return cacheValue;
+ }
+ }
+
+ /**
+ * @see JMeterProperty#getObjectValue()
+ */
+ public Object getObjectValue()
+ {
+ return function;
+ }
+
+ public Object clone()
+ {
+ FunctionProperty prop = (FunctionProperty) super.clone();
+ prop.cacheValue = cacheValue;
+ prop.testIteration = testIteration;
+ prop.function = function;
+ return prop;
+ }
+
+ /**
+ * @see JMeterProperty#recoverRunningVersion(TestElement)
+ */
+ public void recoverRunningVersion(TestElement owner)
+ {
+ cacheValue = null;
+ }
}
1.9 +8 -3 jakarta-jmeter/src/core/org/apache/jmeter/threads/SamplePackage.java
Index: SamplePackage.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/SamplePackage.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SamplePackage.java 14 Feb 2004 03:34:29 -0000 1.8
+++ SamplePackage.java 21 May 2004 16:58:26 -0000 1.9
@@ -47,6 +47,7 @@
List responseModifiers;
List configs;
List modifiers;
+ List controllers;
Sampler sampler;
public SamplePackage()
@@ -61,7 +62,8 @@
List timers,
List assertions,
List extractors,
- List pres)
+ List pres,
+ List controllers)
{
log.debug("configs is null: " + (configs == null));
this.configs = configs;
@@ -72,6 +74,7 @@
this.assertions = assertions;
this.postProcessors = extractors;
this.preProcessors = pres;
+ this.controllers = controllers;
}
public void setRunningVersion(boolean running)
@@ -84,6 +87,7 @@
setRunningVersion(responseModifiers, running);
setRunningVersion(postProcessors, running);
setRunningVersion(preProcessors, running);
+ setRunningVersion(controllers,running);
sampler.setRunningVersion(running);
}
@@ -115,6 +119,7 @@
recoverRunningVersion(responseModifiers);
recoverRunningVersion(postProcessors);
recoverRunningVersion(preProcessors);
+ recoverRunningVersion(controllers);
sampler.recoverRunningVersion();
}
1.39 +10 -4 jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java
Index: TestCompiler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- TestCompiler.java 14 Feb 2004 03:34:29 -0000 1.38
+++ TestCompiler.java 21 May 2004 16:58:26 -0000 1.39
@@ -205,6 +205,7 @@
{
List configs = new LinkedList();
List modifiers = new LinkedList();
+ List controllers = new LinkedList();
List responseModifiers = new LinkedList();
List listeners = new LinkedList();
List timers = new LinkedList();
@@ -243,6 +244,10 @@
{
tempPre.add(item);
}
+ if(item instanceof Controller)
+ {
+ controllers.add(item);
+ }
}
pres.addAll(0,tempPre);
posts.addAll(0,tempPost);
@@ -257,7 +262,8 @@
timers,
assertions,
posts,
- pres);
+ pres,
+ controllers);
pack.setSampler(sam);
pack.setRunningVersion(true);
samplerConfigMap.put(sam, pack);
1.19 +3 -3 jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterVersion.java
Index: JMeterVersion.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterVersion.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- JMeterVersion.java 20 May 2004 19:18:40 -0000 1.18
+++ JMeterVersion.java 21 May 2004 16:58:26 -0000 1.19
@@ -41,7 +41,7 @@
* pattern: VERSION = <quote>.*<quote>
*
*/
- static final String VERSION = "2.0.20040520";
+ static final String VERSION = "2.0.20040521";
private JMeterVersion() // Not instantiable
{
1.1 jakarta-jmeter/src/jorphan/org/apache/jorphan/util/Converter.java
Index: Converter.java
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed 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.jorphan.util;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
/**
* @author Michael Stover
*/
public class Converter
{
/**
* Convert the given value object to an object of the given type
* @param value
* @param toType
* @return
* Object
*/
public static Object convert(Object value,Class toType)
{
if(value == null)
{
return null;
}
else if(toType.isAssignableFrom(value.getClass()))
{
return value;
}
else if(toType.equals(float.class) || toType.equals(Float.class))
{
return new Float(getFloat(value));
}
else if(toType.equals(double.class) || toType.equals(Double.class))
{
return new Double(getDouble(value));
}
else if(toType.equals(String.class))
{
return getString(value);
}
else if(toType.equals(int.class) || toType.equals(Integer.class))
{
return new Integer(getInt(value));
}
else if(toType.equals(long.class) || toType.equals(Long.class))
{
return new Long(getLong(value));
}
else if(toType.equals(boolean.class) || toType.equals(Boolean.class))
{
return new Boolean(getBoolean(value));
}
else if(toType.equals(java.util.Date.class))
{
return getDate(value);
}
else if(toType.equals(Calendar.class))
{
return getCalendar(value);
}
else if(toType.equals(Class.class))
{
try
{
return Class.forName(value.toString());
}
catch(Exception e)
{
//don't do anything
}
}
return value;
}
/**
* Converts the given object to a calendar object. Defaults to the current date if the given object can't be converted.
* @param date
* @return
* Calendar
*/
public static Calendar getCalendar(Object date, Calendar defaultValue)
{
Calendar cal = new GregorianCalendar();
if (date != null && date instanceof java.util.Date)
{
cal.setTime((java.util.Date) date);
return cal;
}
else if (date != null)
{
DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT);
java.util.Date d = null;
try
{
d = formatter.parse((String) date.toString());
}
catch (ParseException e)
{
formatter = DateFormat.getDateInstance(DateFormat.MEDIUM);
try
{
d = formatter.parse((String) date);
}
catch (ParseException e1)
{
formatter = DateFormat.getDateInstance(DateFormat.LONG);
try
{
d = formatter.parse((String) date);
}
catch (ParseException e2)
{
formatter = DateFormat.getDateInstance(DateFormat.FULL);
try
{
d = formatter.parse((String) date);
}
catch (ParseException e3)
{
return defaultValue;
}
}
}
}
cal.setTime(d);
}
else
{
cal = defaultValue;
}
return cal;
}
public static Calendar getCalendar(Object o)
{
return getCalendar(o, new GregorianCalendar());
}
public static Date getDate(Object date)
{
return getDate(date,Calendar.getInstance().getTime());
}
public static String urlEncode(Object toEncode)
{
return URLEncoder.encode(getString(toEncode));
}
public static Date getDate(Object date, Date defaultValue)
{
Date val = null;
if (date != null && date instanceof java.util.Date)
{
return (Date)date;
}
else if (date != null)
{
DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT);
java.util.Date d = null;
try
{
val = formatter.parse(date.toString());
}
catch (ParseException e)
{
formatter = DateFormat.getDateInstance(DateFormat.MEDIUM);
try
{
val = formatter.parse((String) date);
}
catch (ParseException e1)
{
formatter = DateFormat.getDateInstance(DateFormat.LONG);
try
{
val = formatter.parse((String) date);
}
catch (ParseException e2)
{
formatter = DateFormat.getDateInstance(DateFormat.FULL);
try
{
val = formatter.parse((String) date);
}
catch (ParseException e3)
{
return defaultValue;
}
}
}
}
}
else
{
return defaultValue;
}
return val;
}
public String formatNumber(float num,String pattern)
{
NumberFormat format = new DecimalFormat(pattern);
return format.format((double)num);
}
public static double getDouble(Object o, double defaultValue)
{
try
{
if (o == null)
{
return defaultValue;
}
if (o instanceof Number)
{
return ((Number) o).doubleValue();
}
else
{
return Double.parseDouble(o.toString());
}
}
catch (NumberFormatException e)
{
return defaultValue;
}
}
public static double getDouble(Object o)
{
return getDouble(o, 0);
}
public static float getFloat(Object o, float defaultValue)
{
try
{
if (o == null)
{
return defaultValue;
}
if (o instanceof Number)
{
return ((Number) o).floatValue();
}
else
{
return Float.parseFloat(o.toString());
}
}
catch (NumberFormatException e)
{
return defaultValue;
}
}
public static float getFloat(Object o)
{
return getFloat(o, 0);
}
public static boolean getBoolean(Object o)
{
return getBoolean(o,false);
}
public static boolean getBoolean(Object o,boolean defaultValue)
{
if(o == null)
{
return defaultValue;
}
else if(o instanceof Boolean)
{
return ((Boolean)o).booleanValue();
}
else return new Boolean(o.toString()).booleanValue();
}
/**
* Convert object to integer, return defaultValue if object is not convertible or is null.
* @param o
* @param defaultValue
* @return
* int
*/
public static int getInt(Object o, int defaultValue)
{
try
{
if (o == null)
{
return defaultValue;
}
if (o instanceof Number)
{
return ((Number) o).intValue();
}
else
{
return Integer.parseInt(o.toString());
}
}
catch (NumberFormatException e)
{
return defaultValue;
}
}
/**
* Converts object to an integer, defaults to 0 if object is not convertible or is null.
* @param o
* @return
* int
*/
public static int getInt(Object o)
{
return getInt(o, 0);
}
/**
* Converts object to a long, return defaultValue if object is not convertible or is null.
* @param o
* @param defaultValue
* @return
* long
*/
public static long getLong(Object o, long defaultValue)
{
try
{
if (o == null)
{
return defaultValue;
}
if (o instanceof Number)
{
return ((Number) o).longValue();
}
else
{
return Long.parseLong(o.toString());
}
}
catch (NumberFormatException e)
{
return defaultValue;
}
}
/**
* Converts object to a long, defaults to 0 if object is not convertible or is null
* @param o
* @return
* long
*/
public static long getLong(Object o)
{
return getLong(o, 0);
}
public static String formatDate(Date date,String pattern)
{
if(date == null)
{
return "";
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
public static String formatDate(java.sql.Date date,String pattern)
{
if(date == null)
{
return "";
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
public static String formatDate(String date,String pattern)
{
return formatDate(getCalendar(date,null),pattern);
}
public static String formatDate(Calendar date,String pattern)
{
return formatCalendar(date,pattern);
}
public static String formatCalendar(Calendar date,String pattern)
{
if(date == null)
{
return "";
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date.getTime());
}
/**
* Converts object to a String, return defaultValue if object is null.
* @param o
* @param defaultValue
* @return
* String
*/
public static String getString(Object o, String defaultValue)
{
if (o == null)
{
return defaultValue;
}
return o.toString();
}
public static String insertLineBreaks(String v,String insertion)
{
if(v == null){
return "";
}
else
{
StringBuffer replacement = new StringBuffer();
StringTokenizer tokens = new StringTokenizer(v,"\n",true);
while(tokens.hasMoreTokens())
{
String token = tokens.nextToken();
if(token.compareTo("\n") == 0)
{
replacement.append(insertion);
}
else
{
replacement.append(token);
}
}
return replacement.toString();
}
}
/**
* Converts object to a String, defaults to empty string if object is null.
* @param o
* @return
* String
*/
public static String getString(Object o)
{
return getString(o, "");
}
}
1.26 +2 -2 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
Index: HttpRequestHdr.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- HttpRequestHdr.java 20 May 2004 19:18:41 -0000 1.25
+++ HttpRequestHdr.java 21 May 2004 16:58:26 -0000 1.26
@@ -190,7 +190,7 @@
tempGui.modifyTestElement(result);
result.setFollowRedirects(false);
result.setUseKeepAlive(true);
- log.debug("getSampler: sampler path = " + result.getEncodedPath());
+ log.debug("getSampler: sampler path = " + result.getPath());
return result;
}
@@ -264,7 +264,7 @@
{
sampler.parseArguments(postData);
}
- log.debug("sampler path = " + sampler.getEncodedPath());
+ log.debug("sampler path = " + sampler.getPath());
return sampler;
}
1.10 +2 -37 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.java
Index: AccessLogSampler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AccessLogSampler.java 20 May 2004 19:18:41 -0000 1.9
+++ AccessLogSampler.java 21 May 2004 16:58:26 -0000 1.10
@@ -139,41 +139,6 @@
public String getGeneratorClassName(){
return getPropertyAsString(GENERATOR_CLASS_NAME);
}
-
- /**
- * Set the generator for the Sampler to use
- * @param gen
- */
- public void setGenerator(Generator gen){
- if (gen == null){
- } else {
- GENERATOR = gen;
- }
- }
-
- /**
- * Return the generator
- * @return generator
- */
- public Generator getGenerator(){
- return GENERATOR;
- }
-
- /**
- * Set the parser for the sampler to use
- * @param parser
- */
- public void setParser(LogParser parser){
- PARSER = parser;
- }
-
- /**
- * Return the parser
- * @return parser
- */
- public LogParser getParser(){
- return PARSER;
- }
/**
* sample gets a new HTTPSampler from the generator and
1.11 +19 -22 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/LogFilter.java
Index: LogFilter.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/LogFilter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- LogFilter.java 13 Mar 2004 19:49:14 -0000 1.10
+++ LogFilter.java 21 May 2004 16:58:26 -0000 1.11
@@ -21,9 +21,9 @@
import java.util.ArrayList;
import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.util.JMeterUtils;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
/**
* Description:<br>
@@ -109,8 +109,6 @@
protected String NEWFILE = null;
- protected Perl5Matcher MATCHER = null;
-
/**
* The default constructor is empty
*/
@@ -252,10 +250,6 @@
{
return filterPattern(path);
}
- else if (this.CHANGEEXT)
- {
- return replaceExtension(path);
- }
else
{
return false;
@@ -294,7 +288,7 @@
}
else if (this.INCFILE != null)
{
- return incFile(file);
+ return !incFile(file);
}
return false;
}
@@ -369,13 +363,9 @@
*/
protected boolean filterPattern(String text)
{
- if (MATCHER == null)
- {
- MATCHER = new Perl5Matcher();
- }
if (this.INCPTRN != null)
{
- return incPattern(text);
+ return !incPattern(text);
}
else if (this.EXCPTRN != null)
{
@@ -396,7 +386,7 @@
this.USEFILE = false;
for (int idx = 0; idx < this.INCPATTERNS.size(); idx++)
{
- if (MATCHER.contains(text, (Pattern) this.INCPATTERNS.get(idx)))
+ if (JMeterUtils.getMatcher().contains(text, (Pattern) this.INCPATTERNS.get(idx)))
{
this.USEFILE = true;
break;
@@ -418,7 +408,7 @@
boolean exc = false;
for (int idx = 0; idx < this.EXCPATTERNS.size(); idx++)
{
- if (MATCHER.contains(text, (Pattern) this.EXCPATTERNS.get(idx)))
+ if (JMeterUtils.getMatcher().contains(text, (Pattern) this.EXCPATTERNS.get(idx)))
{
exc = true;
this.USEFILE = false;
@@ -470,7 +460,14 @@
{
if (this.CHANGEEXT)
{
- return this.NEWFILE;
+ if(replaceExtension(text))
+ {
+ return this.NEWFILE;
+ }
+ else
+ {
+ return text;
+ }
}
else if (this.USEFILE)
{
@@ -492,8 +489,8 @@
{
try
{
- Perl5Compiler comp = new Perl5Compiler();
- return comp.compile(pattern, Perl5Compiler.READ_ONLY_MASK);
+ return JMeterUtils.getPatternCache().getPattern(pattern, Perl5Compiler.READ_ONLY_MASK |
+ Perl5Compiler.SINGLELINE_MASK);
}
catch (Exception exception)
{
@@ -622,7 +619,7 @@
String theFile = td.file;
boolean expect = td.exclpatt;
- testf.isFiltered(theFile);
+ assertEquals(!expect,testf.isFiltered(theFile));
String line = testf.filter(theFile);
if (line != null)
{
@@ -644,7 +641,7 @@
String theFile = td.file;
boolean expect = td.inclpatt;
- testf.isFiltered(theFile);
+ assertEquals(!expect,testf.isFiltered(theFile));
String line = testf.filter(theFile);
if (line != null)
{
1.12 +6 -6 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java
Index: TCLogParser.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TCLogParser.java 20 May 2004 19:18:41 -0000 1.11
+++ TCLogParser.java 21 May 2004 16:58:26 -0000 1.12
@@ -280,7 +280,7 @@
{
// we clean the line to get
// rid of extra stuff
- line = this.cleanURL(line);
+ String cleanedLine = this.cleanURL(line);
// now we set request method
this.GEN.setMethod(this.RMETHOD);
if (FILTER != null)
@@ -292,10 +292,10 @@
// we filter the line first, before we try
// to separate the URL into file and
// parameters.
- line = FILTER.filter(line);
+ line = FILTER.filter(cleanedLine);
if (line != null)
{
- createUrl(line);
+ createUrl(cleanedLine);
}
}
}
@@ -305,7 +305,7 @@
COUNT++;
// in the case when the filter is not set, we
// parse all the lines
- createUrl(line);
+ createUrl(cleanedLine);
}
}
1.2 +3 -2 jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerBeanInfo.java
Index: JDBCSamplerBeanInfo.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerBeanInfo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JDBCSamplerBeanInfo.java 19 May 2004 20:15:43 -0000 1.1
+++ JDBCSamplerBeanInfo.java 21 May 2004 16:58:26 -0000 1.2
@@ -9,8 +9,7 @@
import java.beans.PropertyDescriptor;
import org.apache.jmeter.testbeans.BeanInfoSupport;
-
-import sun.beans.editors.StringEditor;
+import org.apache.jmeter.testbeans.gui.TextAreaEditor;
/**
* @author mstover
@@ -39,5 +38,7 @@
p = property("query");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
+ p.setPropertyEditorClass(TextAreaEditor.class);
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org