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 se...@apache.org on 2007/08/11 13:12:18 UTC
svn commit: r564895 - in /jakarta/jmeter/branches/rel-2-2:
src/components/org/apache/jmeter/assertions/SizeAssertion.java
test/src/org/apache/jmeter/assertions/PackageTest.java xdocs/changes.xml
xdocs/usermanual/component_reference.xml
Author: sebb
Date: Sat Aug 11 04:12:17 2007
New Revision: 564895
URL: http://svn.apache.org/viewvc?view=rev&rev=564895
Log:
Bug 42918 - Size Assertion now treats an empty response as having zero length
Modified:
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/SizeAssertion.java
jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/assertions/PackageTest.java
jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml
Modified: jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/SizeAssertion.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/SizeAssertion.java?view=diff&rev=564895&r1=564894&r2=564895
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/SizeAssertion.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/SizeAssertion.java Sat Aug 11 04:12:17 2007
@@ -27,10 +27,12 @@
import org.apache.jmeter.testelement.property.LongProperty;
import org.apache.jmeter.util.JMeterUtils;
+//@see org.apache.jmeter.assertions.PackageTest for unit tests
+
/**
* Checks if the results of a Sample matches a particular size.
*
- * @author <a href="mailto:wolfram.rittmeyer@web.de">Wolfram Rittmeyer</a>
+ * author <a href="mailto:wolfram.rittmeyer@web.de">Wolfram Rittmeyer</a>
*/
public class SizeAssertion extends AbstractTestElement implements Serializable, Assertion {
@@ -50,28 +52,23 @@
public final static int LESSTHANEQUAL = 6;
/** Key for storing assertion-informations in the jmx-file. */
- private static final String SIZE_KEY = "SizeAssertion.size";
+ private static final String SIZE_KEY = "SizeAssertion.size"; // $NON-NLS-1$
- private static final String OPERATOR_KEY = "SizeAssertion.operator";
+ private static final String OPERATOR_KEY = "SizeAssertion.operator"; // $NON-NLS-1$
byte[] resultData;
/**
- * Returns the result of the Assertion. Here it checks wether the Sample
- * took to long to be considered successful. If so an AssertionResult
- * containing a FailureMessage will be returned. Otherwise the returned
- * AssertionResult will reflect the success of the Sample.
+ * Returns the result of the Assertion.
+ * Here it checks the Sample responseData length.
*/
public AssertionResult getResult(SampleResult response) {
AssertionResult result = new AssertionResult(getName());
result.setFailure(false);
resultData = response.getResponseData();
long resultSize = resultData.length;
- if (resultSize==0) {
- return result.setResultForNull();
- }
// is the Sample the correct size?
- if ((!(compareSize(resultSize)) && (getAllowedSize() > 0))) {
+ if (!(compareSize(resultSize))) {
result.setFailure(true);
Object[] arguments = { new Long(resultSize), comparatorErrorMessage, new Long(getAllowedSize()) };
String message = MessageFormat.format(JMeterUtils.getResString("size_assertion_failure"), arguments); //$NON-NLS-1$
@@ -81,8 +78,7 @@
}
/**
- * Returns the size in bytes to be asserted. A duration of 0 indicates this
- * assertion is to be ignored.
+ * Returns the size in bytes to be asserted.
*/
public long getAllowedSize() {
return getPropertyAsLong(SIZE_KEY);
Modified: jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/assertions/PackageTest.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/assertions/PackageTest.java?view=diff&rev=564895&r1=564894&r2=564895
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/assertions/PackageTest.java (original)
+++ jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jmeter/assertions/PackageTest.java Sat Aug 11 04:12:17 2007
@@ -20,6 +20,7 @@
import junit.framework.TestCase;
+import org.apache.jmeter.junit.JMeterTestCase;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.threads.JMeterContext;
import org.apache.jmeter.threads.JMeterContextService;
@@ -83,7 +84,7 @@
response.setResponseData(TEST_STRING.getBytes());
for (int i = 0; i < 100; i++) {
AssertionResult result;
- result = assertion.evaluateResponse(response);
+ result = assertion.getResult(response);
if (result.isFailure() || result.isError()) {
failed++;
}
@@ -286,14 +287,14 @@
assertion.setTestFieldURL();
assertion.addTestString("Sampler Label");
assertion.addTestString("Sampler labelx");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertFailed();
assertion.setToNotType();
assertion.clearTestStrings();
assertion.addTestString("Sampler LabeL");
assertion.addTestString("Sampler Labelx");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertPassed();
}
@@ -305,17 +306,17 @@
assertion.addTestString("Label");
assertion.addTestString(" x");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertFailed();
assertion.setToNotType();
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertFailed();
assertion.clearTestStrings();
assertion.addTestString("r l");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertPassed();
assertion.unsetNotType();
@@ -323,19 +324,19 @@
assertion.clearTestStrings();
assertion.addTestString("line 2");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertPassed();
assertion.clearTestStrings();
assertion.addTestString("(?s)line \\d+.*EOF");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertPassed();
assertion.setTestFieldResponseCode();
assertion.clearTestStrings();
assertion.addTestString("401");
- result = assertion.evaluateResponse(sample);
+ result = assertion.getResult(sample);
assertPassed();
}
@@ -359,4 +360,147 @@
}
}
+
+ public static class SizeAssertionTest extends JMeterTestCase{
+
+ private JMeterContext jmctx;
+ private SizeAssertion assertion;
+ private SampleResult sample1,sample0;
+ private JMeterVariables vars;
+ private AssertionResult result;
+ private String data1 = "response Data\n" + "line 2\n\nEOF";
+ private int data1Len=data1.length();
+ public void setUp() {
+ jmctx = JMeterContextService.getContext();
+ assertion = new SizeAssertion();
+ assertion.setThreadContext(jmctx);
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ sample0 = new SampleResult();
+ sample1 = new SampleResult();
+ sample1.setResponseData(data1.getBytes());
+ }
+
+ public void testSizeAssertionEquals() throws Exception{
+ assertion.setCompOper(SizeAssertion.EQUAL);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertFailed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+
+ assertion.setAllowedSize(data1Len);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+ }
+
+ public void testSizeAssertionNotEquals() throws Exception{
+ assertion.setCompOper(SizeAssertion.NOTEQUAL);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+
+ assertion.setAllowedSize(data1Len);
+ result = assertion.getResult(sample1);
+ assertFailed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+ }
+
+ public void testSizeAssertionGreaterThan() throws Exception{
+ assertion.setCompOper(SizeAssertion.GREATERTHAN);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+
+ assertion.setAllowedSize(data1Len);
+ result = assertion.getResult(sample1);
+ assertFailed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+ }
+
+ public void testSizeAssertionGreaterThanEqual() throws Exception{
+ assertion.setCompOper(SizeAssertion.GREATERTHANEQUAL);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+
+ assertion.setAllowedSize(data1Len);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+ }
+
+ public void testSizeAssertionLessThan() throws Exception{
+ assertion.setCompOper(SizeAssertion.LESSTHAN);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertFailed();
+
+ result = assertion.getResult(sample0);
+ assertFailed();
+
+ assertion.setAllowedSize(data1Len+1);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+ }
+
+ public void testSizeAssertionLessThanEqual() throws Exception{
+ assertion.setCompOper(SizeAssertion.LESSTHANEQUAL);
+ assertion.setAllowedSize(0);
+ result = assertion.getResult(sample1);
+ assertFailed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+
+ assertion.setAllowedSize(data1Len+1);
+ result = assertion.getResult(sample1);
+ assertPassed();
+
+ result = assertion.getResult(sample0);
+ assertPassed();
+ }
+// TODO - need a lot more tests
+
+ private void assertPassed() throws Exception{
+ if (null != result.getFailureMessage()){
+ //System.out.println(result.getFailureMessage());// debug
+ }
+ assertNull("Failure message should be null",result.getFailureMessage());
+ assertFalse(result.isError());
+ assertFalse(result.isFailure());
+ }
+
+ private void assertFailed() throws Exception{
+ assertNotNull("Failure nessage should not be null",result.getFailureMessage());
+ //System.out.println(result.getFailureMessage());
+ assertFalse("Should not be: Response was null","Response was null".equals(result.getFailureMessage()));
+ assertFalse(result.isError());
+ assertTrue(result.isFailure());
+
+ }
+}
+
}
Modified: jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml?view=diff&rev=564895&r1=564894&r2=564895
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml Sat Aug 11 04:12:17 2007
@@ -37,6 +37,7 @@
<li>Bug 43054 - SSLManager causes stress tests to saturate and crash</li>
<li>Clarified HTTP Request Defaults usage of the port field</li>
<li>Bug 43006 - NPE if icon.properties file not found</li>
+<li>Bug 42918 - Size Assertion now treats an empty response as having zero length</li>
</ul>
<h3>Version 2.3RC3</h3>
Modified: jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml?view=diff&rev=564895&r1=564894&r2=564895
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/usermanual/component_reference.xml Sat Aug 11 04:12:17 2007
@@ -2519,7 +2519,9 @@
<component name="Size Assertion" index="§-num;.5.3" width="331" height="346" screenshot="size_assertion.png">
<description><p>The Size Assertion tests that each response contains the right number of bytes in it. You can specify that
-the size be equal to, greater than, less than, or not equal to a given number of bytes.</p></description>
+the size be equal to, greater than, less than, or not equal to a given number of bytes.</p>
+<note>Since JMeter 2.3RC3, an empty response is treated as being 0 bytes rather than reported as an error.</note>
+</description>
<properties>
<property name="Name" required="">Descriptive name for this element that is shown in the tree.</property>
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org