Author: sebb
Date: Wed Sep 21 12:06:02 2011
New Revision: 1173581
URL: http://svn.apache.org/viewvc?rev=1173581&view=rev
Log:
Bug 47888 - JUnit Sampler re-uses test object
Modified:
jakarta/jmeter/trunk/docs/images/screenshots/junit_sampler.png
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java
jakarta/jmeter/trunk/xdocs/changes.xml
jakarta/jmeter/trunk/xdocs/images/screenshots/junit_sampler.png
jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
Modified: jakarta/jmeter/trunk/docs/images/screenshots/junit_sampler.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/junit_sampler.png?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
Binary files - no diff available.
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
Wed Sep 21 12:06:02 2011
@@ -425,6 +425,7 @@ junit_success_default_msg=Test successfu
junit_success_msg=Success Message
junit_test_config=JUnit Test Parameters
junit_test_method=Test Method
+junit_create_instance_per_sample=Create a new instance per sample
ldap_argument_list=LDAPArgument List
ldap_connto=Connection timeout (in milliseconds)
ldap_parse_results=Parse the search results ?
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
Wed Sep 21 12:06:02 2011
@@ -390,6 +390,7 @@ junit_success_default_msg=Test r\u00E9us
junit_success_msg=Message de succ\u00E8s
junit_test_config=Param\u00E8tres Test JUnit
junit_test_method=M\u00E9thode de test
+junit_create_instance_per_sample=Cr\u00E9er une nouvelle instance pour chaque
sample
ldap_argument_list=Liste d'arguments LDAP
ldap_connto=D\u00E9lai d'attente de connexion (millisecondes)
ldap_parse_results=Examiner les r\u00E9sultats de recherche ?
Modified:
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java
(original)
+++
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java
Wed Sep 21 12:06:02 2011
@@ -131,6 +131,7 @@ implements ChangeListener, ActionListene
private JCheckBox appendError = new
JCheckBox(JMeterUtils.getResString("junit_append_error")); //$NON-NLS-1$
private JCheckBox appendExc = new
JCheckBox(JMeterUtils.getResString("junit_append_exception")); //$NON-NLS-1$
private JCheckBox junit4 = new
JCheckBox(JMeterUtils.getResString("junit_junit4")); //$NON-NLS-1$
+ private JCheckBox createInstancePerSample = new
JCheckBox(JMeterUtils.getResString("junit_create_instance_per_sample"));
//$NON-NLS-1$
/** A combo box allowing the user to choose a test class. */
private JComboBox classnameCombo;
@@ -234,12 +235,14 @@ implements ChangeListener, ActionListene
panel.add(doSetup);
panel.add(appendError);
panel.add(appendExc);
+ panel.add(createInstancePerSample);
return panel;
}
private void initGui(){
appendError.setSelected(false);
appendExc.setSelected(false);
+ createInstancePerSample.setSelected(false);
doSetup.setSelected(false);
junit4.setSelected(false);
filterpkg.setText(""); //$NON-NLS-1$
@@ -295,6 +298,7 @@ implements ChangeListener, ActionListene
sampler.setDoNotSetUpTearDown(doSetup.isSelected());
sampler.setAppendError(appendError.isSelected());
sampler.setAppendException(appendExc.isSelected());
+
sampler.setCreateOneInstancePerSample(createInstancePerSample.isSelected());
sampler.setJunit4(junit4.isSelected());
}
@@ -343,6 +347,7 @@ implements ChangeListener, ActionListene
doSetup.setSelected(sampler.getDoNotSetUpTearDown());
appendError.setSelected(sampler.getAppendError());
appendExc.setSelected(sampler.getAppendException());
+
createInstancePerSample.setSelected(sampler.getCreateOneInstancePerSample());
}
private void setupMethods(){
Modified:
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java
(original)
+++
jakarta/jmeter/trunk/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java
Wed Sep 21 12:06:02 2011
@@ -69,6 +69,8 @@ public class JUnitSampler extends Abstra
private static final String APPEND_ERROR = "junitsampler.append.error";
private static final String APPEND_EXCEPTION =
"junitsampler.append.exception";
private static final String JUNIT4 = "junitsampler.junit4";
+ private static final String
CREATE_INSTANCE_PER_SAMPLE="junitsampler.createinstancepersample";
+ private static final boolean CREATE_INSTANCE_PER_SAMPLE_DEFAULT = false;
//-- JMX file attributes - do not change
private static final String SETUP = "setUp";
@@ -94,6 +96,7 @@ public class JUnitSampler extends Abstra
private transient Protectable protectable;
public JUnitSampler(){
+ super();
}
/**
@@ -356,6 +359,9 @@ public class JUnitSampler extends Abstra
/** {@inheritDoc} */
public SampleResult sample(Entry entry) {
+ if(getCreateOneInstancePerSample()) {
+ initializeTestObject();
+ }
SampleResult sresult = new SampleResult();
sresult.setSampleLabel(getName());// Bug 41522 - don't use rlabel here
sresult.setSamplerData(className + "." + methodName);
@@ -621,16 +627,26 @@ public class JUnitSampler extends Abstra
testCase = null;
methodName = getMethod();
className = getClassname();
- final Method m;
protectable = null;
+ if(!getCreateOneInstancePerSample()) {
+ // NO NEED TO INITIALIZE WHEN getCreateOneInstancePerSample
+ // is true cause it will be done in sample
+ initializeTestObject();
+ }
+ }
+
+ /**
+ * Initialize test object
+ */
+ private void initializeTestObject() {
String rlabel = getConstructorString();
if (rlabel.length()== 0) {
rlabel = JUnitSampler.class.getName();
}
- this.testObject = getClassInstance(className,rlabel);
+ this.testObject = getClassInstance(className, rlabel);
if (this.testObject != null){
initMethodObjects(this.testObject);
- m = getMethod(this.testObject,methodName);
+ final Method m = getMethod(this.testObject,methodName);
if (getJunit4()){
Class<? extends Throwable> expectedException = None.class;
long timeout = 0;
@@ -673,4 +689,20 @@ public class JUnitSampler extends Abstra
}
}
}
-}
+
+ /**
+ *
+ * @param createOneInstancePerSample
+ */
+ public void setCreateOneInstancePerSample(boolean
createOneInstancePerSample) {
+ this.setProperty(CREATE_INSTANCE_PER_SAMPLE,
createOneInstancePerSample, CREATE_INSTANCE_PER_SAMPLE_DEFAULT);
+ }
+
+ /**
+ *
+ * @return boolean create New Instance For Each Call
+ */
+ public boolean getCreateOneInstancePerSample() {
+ return getPropertyAsBoolean(CREATE_INSTANCE_PER_SAMPLE,
CREATE_INSTANCE_PER_SAMPLE_DEFAULT);
+ }
+}
\ No newline at end of file
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Sep 21 12:06:02 2011
@@ -97,6 +97,7 @@ This can be overridden by setting the JM
<li>Bug 51841 - JMS : If an error occurs in ReceiveSubscriber constructor or
Publisher, then Connections will stay open</li>
<li>Bug 51691 - Authorization does not work for JMS Publisher and JMS
Subscriber</li>
<li>Bug 51840 - JMS : Cache of InitialContext has some issues</li>
+<li>Bug 47888 - JUnit Sampler re-uses test object</li>
</ul>
<h3>Controllers</h3>
Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/junit_sampler.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/junit_sampler.png?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1173581&r1=1173580&r2=1173581&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Wed Sep 21
12:06:02 2011
@@ -1425,7 +1425,7 @@ completed, so the net effect was similar
-<component name="JUnit Request" index="§-num;.1.16" width="457"
height="507" screenshot="junit_sampler.png">
+<component name="JUnit Request" index="§-num;.1.16" width="397"
height="536" screenshot="junit_sampler.png">
<description>
The current implementation supports standard Junit convention and extensions.
It also
includes extensions like oneTimeSetUp and oneTimeTearDown. The sampler works
like the
@@ -1440,7 +1440,8 @@ In versions of JMeter after 2.3.1, you c
<br></br>7. The sampler reports unexpected exceptions as errors.
There are some important differences between standard JUnit test runners and
JMeter's
implementation. Rather than make a new instance of the class for each test,
JMeter
-creates 1 instance per sampler and reuses it.<br></br>
+creates 1 instance per sampler and reuses it.
+This can be changed with checkbox "Create a new instance per sample".<br></br>
The current implementation of the sampler will try to create an instance using
the string constructor first. If the test class does not declare a string
constructor, the sampler will look for an empty constructor. Example
below:<br>
<br>
Empty Constructor:<br>
@@ -1486,6 +1487,7 @@ Here are some general guidelines for wri
this option should be checked.</property>
<property name="Append assertion errors" required="Yes">Whether or not to
append assertion errors to the response message.</property>
<property name="Append runtime exceptions" required="Yes">Whether or not to
append runtime exceptions to the response message. Only applies if "Append
assertion errors" is not selected.</property>
+ <property name="Create a new Instance per sample" required="Yes">Whether or
not to create a new JUnit instance for each sample. Defaults to false, meaning
JUnit TestCase is created one and reused.</property>
</properties>
<p>
The following JUnit4 annotations are recognised:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]