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/10/01 18:25:08 UTC
cvs commit: jakarta-jmeter/src/components/org/apache/jmeter/modifiers CSVDataSetResources.properties CSVDataSet.java CSVDataSetBeanInfo.java
mstover1 2004/10/01 09:25:08
Modified: bin jmeter
Added: xdocs/extending notes_on_extending.txt
src/components/org/apache/jmeter/modifiers
CSVDataSetResources.properties CSVDataSet.java
CSVDataSetBeanInfo.java
Log:
Beginnings of new CSVDataSet component
Revision Changes Path
1.25 +7 -5 jakarta-jmeter/bin/jmeter
Index: jmeter
===================================================================
RCS file: /home/cvs/jakarta-jmeter/bin/jmeter,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- jmeter 16 Feb 2004 13:34:10 -0000 1.24
+++ jmeter 1 Oct 2004 16:25:08 -0000 1.25
@@ -43,7 +43,7 @@
# This ratio and target have been proven OK in tests with a specially high
# amount of per-sample objects (the HtmlParserHTMLParser tests):
-SURVIVOR="-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%"
+# SURVIVOR="-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%"
# Think about it: trying to keep per-run objects in tenuring definitely
# represents a cost, but where's the benefit? They won't disappear before
@@ -61,7 +61,7 @@
# memory in a short period of time, such as loading tests or listener data files.
# Increase it if you experience OutOfMemory problems during those operations
# without having gone through a lot of Full GC-ing just before the OOM:
-EVACUATION="-XX:MaxLiveObjectEvacuationRatio=20%"
+# EVACUATION="-XX:MaxLiveObjectEvacuationRatio=20%"
# Avoid the RMI-induced Full GCs to run too frequently -- once every ten minutes
# should be more than enough:
@@ -73,6 +73,8 @@
# Finally, some tracing to help in case things go astray:
DEBUG="-verbose:gc -XX:+PrintTenuringDistribution"
-ARGS="$HEAP $NEW $SURVIVOR $TENURING $EVACUATION $RMIGC $PERM $DEBUG"
+SERVER="-server"
-java $ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
+ARGS="$SERVER $HEAP $NEW $SURVIVOR $TENURING $EVACUATION $RMIGC $PERM $DEBUG"
+
+/usr/java/j2sdk1.4.2_05/jre/bin/java $ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
1.1 jakarta-jmeter/xdocs/extending/notes_on_extending.txt
Index: notes_on_extending.txt
===================================================================
Making a TestBean Plugin For JMeter
This component will be a CSV file reading element that will let users easily vary their input
data using csv files.
1. Pick a package and make three files:
- [ComponentName].java (CSVDataSet.java)
- [ComponentName]BeanInfo.java (CSVDataSetBeanInfo.java)
- [ComponentName]Resources.properties (CSVDataSetResources.properties)
2. CSVDataSet.java must implement the TestBean interface. In addition, it will extend
AbstractTestElement, and implement PreProcessor, TestListener and LoopIterationListener.
- TestBean is a marker interface, so there are no methods to implement.
3. CSVDataSetBeanInfo.java should extend org.apache.jmeter.testbeans.BeanInfoSupport
- create a zero-parameter constructor in which we call super(CSVDataSet.class);
- we'll come back to this.
4. CSVDataSetResources.properties - blank for now
5. Implement your special logic for you plugin class.
- The CSVDataSet will read a single CSV file and will store the values it finds into
JMeter's running context. The user will define the file, define the variable names for
each "column". The CSVDataSet will open the file when the test starts, and close it
when the test ends (thus we implement TestListener). The CSVDataSet will update the
contents of the variables for every test thread, and for each iteration through its
parent controller, by reading new lines in the file. When we reach the end of the file,
we'll start again at the beginning.
- When implementing a TestBean, pay careful attention to your properties. These
properties will become the basis of a gui form by which users will configure the CSVDataSet
element.
- Your element will be cloned by JMeter when the test starts. Each thread will get it's own instance. However, you will
have a chance to control how the cloning is done - we'll be taking advantage of this for CSVDataSet (since we don't want to open the file X number of times from X number of threads).
a. Properties: filename, variableNames. With public getters and setters.
- filename is self-explanatory, it will hold the name of the CSV file we'll read
- variableNames is a String which will allow a user to enter the names of
the variables we'll assign values to. Why a String? Why not a Collection - surely
users will need to enter multiple (and unknown number) variable names? True, but
if we used a List or Collection, we'd have to write a gui component to handle
collections, and I just want to do this quickly. Instead, we'll let users input
comma-delimited list of variable names.
b.
1.1 jakarta-jmeter/src/components/org/apache/jmeter/modifiers/CSVDataSetResources.properties
<<Binary file>>
1.1 jakarta-jmeter/src/components/org/apache/jmeter/modifiers/CSVDataSet.java
Index: CSVDataSet.java
===================================================================
/*
* Created on Sep 29, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.jmeter.modifiers;
import java.io.File;
import org.apache.jmeter.engine.event.LoopIterationEvent;
import org.apache.jmeter.engine.event.LoopIterationListener;
import org.apache.jmeter.processor.PreProcessor;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.testelement.TestListener;
/**
* @author mstover
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class CSVDataSet extends AbstractTestElement implements PreProcessor, TestBean, LoopIterationListener,TestListener
{
static final public long serialVersionUID = 1;
private File filename;
private String variableNames;
/* (non-Javadoc)
* @see org.apache.jmeter.processor.PreProcessor#process()
*/
public void process()
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.apache.jmeter.engine.event.LoopIterationListener#iterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
*/
public void iterationStart(LoopIterationEvent iterEvent)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.lang.Object#clone()
*/
public Object clone()
{
// TODO Auto-generated method stub
return super.clone();
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testEnded()
*/
public void testEnded()
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testEnded(java.lang.String)
*/
public void testEnded(String host)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testIterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
*/
public void testIterationStart(LoopIterationEvent event)
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testStarted()
*/
public void testStarted()
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testStarted(java.lang.String)
*/
public void testStarted(String host)
{
// TODO Auto-generated method stub
}
/**
* @return Returns the filename.
*/
public File getFilename()
{
return filename;
}
/**
* @param filename The filename to set.
*/
public void setFilename(File filename)
{
this.filename = filename;
}
/**
* @return Returns the variableNames.
*/
public String getVariableNames()
{
return variableNames;
}
/**
* @param variableNames The variableNames to set.
*/
public void setVariableNames(String variableNames)
{
this.variableNames = variableNames;
}
}
1.1 jakarta-jmeter/src/components/org/apache/jmeter/modifiers/CSVDataSetBeanInfo.java
Index: CSVDataSetBeanInfo.java
===================================================================
/*
* Created on Sep 29, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.jmeter.modifiers;
import org.apache.jmeter.testbeans.BeanInfoSupport;
/**
* @author mstover
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class CSVDataSetBeanInfo extends BeanInfoSupport
{
/**
* @param beanClass
*/
public CSVDataSetBeanInfo()
{
super(CSVDataSet.class);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org