You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by sebb <se...@gmail.com> on 2013/11/16 02:05:59 UTC
Re: svn commit: r1542394 - in /jmeter/trunk: src/components/org/apache/jmeter/assertions/
src/components/org/apache/jmeter/extractor/ xdocs/
On 15 November 2013 20:52, <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Fri Nov 15 20:52:46 2013
> New Revision: 1542394
>
> URL: http://svn.apache.org/r1542394
> Log:
> Bug 55694 - Assertions and Extractors : Avoid NullPointerException when scope is variable and variable is missing
> Bugzilla Id: 55694
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java
> jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java
> jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java
> jmeter/trunk/src/components/org/apache/jmeter/extractor/RegexExtractor.java
> jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java
> jmeter/trunk/xdocs/changes.xml
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java Fri Nov 15 20:52:46 2013
> @@ -22,6 +22,7 @@ import java.io.Serializable;
> import java.net.URL;
> import java.util.ArrayList;
>
> +import org.apache.commons.lang3.StringUtils;
> import org.apache.jmeter.samplers.SampleResult;
> import org.apache.jmeter.testelement.AbstractScopedAssertion;
> import org.apache.jmeter.testelement.property.CollectionProperty;
> @@ -334,7 +335,7 @@ public class ResponseAssertion extends A
> log.debug("Type:" + (contains?"Contains":"Match") + (notTest? "(not)": ""));
> }
>
> - if (toCheck.length() == 0) {
> + if (StringUtils.isEmpty(toCheck)) {
> if (notTest) { // Not should always succeed against an empty result
> return result;
> }
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/assertions/XPathAssertion.java Fri Nov 15 20:52:46 2013
> @@ -24,6 +24,7 @@ import java.io.Serializable;
>
> import javax.xml.parsers.ParserConfigurationException;
>
> +import org.apache.commons.lang3.StringUtils;
> import org.apache.jmeter.samplers.SampleResult;
> import org.apache.jmeter.testelement.AbstractScopedAssertion;
> import org.apache.jmeter.testelement.property.BooleanProperty;
> @@ -78,12 +79,15 @@ public class XPathAssertion extends Abst
>
> try {
> if (isScopeVariable()){
> - responseData = getThreadContext().getVariables().get(getVariableName()).getBytes("UTF-8");
> + String inputString=getThreadContext().getVariables().get(getVariableName());
> + if(!StringUtils.isEmpty(inputString)) {
> + responseData = inputString.getBytes("UTF-8");
> + }
> } else {
> responseData = response.getResponseData();
> }
>
> - if (responseData.length == 0) {
> + if (responseData == null || responseData.length == 0) {
> return result.setResultForNull();
> }
>
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/extractor/HtmlExtractor.java Fri Nov 15 20:52:46 2013
> @@ -20,8 +20,10 @@ package org.apache.jmeter.extractor;
>
> import java.io.Serializable;
> import java.util.ArrayList;
> +import java.util.Collections;
> import java.util.List;
>
> +import org.apache.commons.lang3.StringUtils;
> import org.apache.jmeter.processor.PostProcessor;
> import org.apache.jmeter.samplers.SampleResult;
> import org.apache.jmeter.testelement.AbstractScopedTestElement;
> @@ -179,7 +181,14 @@ public class HtmlExtractor extends Abstr
> List<String> result = new ArrayList<String>();
> if (isScopeVariable()){
> String inputString=vars.get(getVariableName());
> - getExtractorImpl().extract(expression, attribute, matchNumber, inputString, result, found, "-1");
> + if(!StringUtils.isEmpty(inputString)) {
> + getExtractorImpl().extract(expression, attribute, matchNumber, inputString, result, found, "-1");
> + } else {
> + if(inputString==null) {
> + log.warn("No variable '"+getVariableName()+"' found to process by Css/JQuery Extractor '"+getName()+"', skipping processing");
> + }
> + return Collections.emptyList();
> + }
> } else {
> List<SampleResult> sampleList = getSampleList(previousResult);
> int i=0;
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/RegexExtractor.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/RegexExtractor.java?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/extractor/RegexExtractor.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/extractor/RegexExtractor.java Fri Nov 15 20:52:46 2013
> @@ -196,7 +196,7 @@ public class RegexExtractor extends Abst
> if (isScopeVariable()){
> String inputString=vars.get(getVariableName());
> if(inputString == null) {
> - log.warn("No variable '"+getVariableName()+"' found to process by RegexExtractor "+getName()+", skipping processing");
> + log.warn("No variable '"+getVariableName()+"' found to process by RegexExtractor '"+getName()+"', skipping processing");
> return Collections.emptyList();
> }
> matchStrings(matchNumber, matcher, pattern, matches, found,
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/extractor/XPathExtractor.java Fri Nov 15 20:52:46 2013
> @@ -128,8 +128,14 @@ public class XPathExtractor extends Abst
> try{
> if (isScopeVariable()){
> String inputString=vars.get(getVariableName());
> - Document d = parseResponse(inputString);
> - getValuesForXPath(d,getXPathQuery(),matches);
> + if(inputString != null) {
> + if(inputString.length()>0) {
Can we use StringUtils.isEmpty(inputString) here ?
> + Document d = parseResponse(inputString);
> + getValuesForXPath(d,getXPathQuery(),matches);
> + }
> + } else {
> + log.warn("No variable '"+getVariableName()+"' found to process by XPathExtractor '"+getName()+"', skipping processing");
> + }
> } else {
> List<SampleResult> samples = getSampleList(previousResult);
> for (SampleResult res : samples) {
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1542394&r1=1542393&r2=1542394&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Fri Nov 15 20:52:46 2013
> @@ -146,7 +146,7 @@ A workaround is to use a Java 7 update 4
>
> <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
> <ul>
> -<li><bugzilla>55694</bugzilla> - java.lang.NullPointerException if Apply to is set to a missing JMeter variable</li>
> +<li><bugzilla>55694</bugzilla> - Assertions and Extractors : Avoid NullPointerException when scope is variable and variable is missing</li>
> <li><bugzilla>55721</bugzilla> - HTTP Cache Manager - no-store directive is wrongly interpreted</li>
> </ul>
>
>
>