You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2019/01/14 22:30:00 UTC
svn commit: r1851300 - in /jmeter/trunk:
src/protocol/http/org/apache/jmeter/protocol/http/parser/
test/src/org/apache/jmeter/protocol/http/parser/ xdocs/
Author: pmouawad
Date: Mon Jan 14 22:30:00 2019
New Revision: 1851300
URL: http://svn.apache.org/viewvc?rev=1851300&view=rev
Log:
Bug 63048 - JMeter does not retrieve link resources of type "shortcut icon" or "icon"
Contributed by UbikLoadPack (https://ubikloadpack.com)
Bugzilla Id: 63048
Modified:
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/LagartoBasedHtmlParser.java
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/parser/TestBug60842HtmlParser.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java?rev=1851300&r1=1851299&r2=1851300&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java (original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java Mon Jan 14 22:30:00 2019
@@ -61,6 +61,9 @@ public abstract class HTMLParser extends
protected static final String TAG_SCRIPT = "script";// $NON-NLS-1$
protected static final String STYLESHEET = "stylesheet";// $NON-NLS-1$
+ protected static final String SHORTCUT_ICON = "shortcut icon";
+ protected static final String ICON = "icon";
+
protected static final String IE_UA = "MSIE ([0-9]+.[0-9]+)";// $NON-NLS-1$
protected static final Pattern IE_UA_PATTERN = Pattern.compile(IE_UA);
private static final float IE_10 = 10.0f;
Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java?rev=1851300&r1=1851299&r2=1851300&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java (original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java Mon Jan 14 22:30:00 2019
@@ -89,7 +89,7 @@ public class JsoupBasedHtmlParser extend
baseUrl.url = ConversionUtils.makeRelativeURL(baseUrl.url, baseref);
}
} catch (MalformedURLException e1) {
- throw new RuntimeException(e1);
+ throw new IllegalArgumentException("Error creating relative url from " + baseref, e1);
}
} else if (tagName.equals(TAG_IMAGE)) {
extractAttribute(tag, ATT_SRC);
@@ -112,8 +112,10 @@ public class JsoupBasedHtmlParser extend
} else if (tagName.equals(TAG_BGSOUND)){
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_LINK)) {
+ String relAttr = tag.attr(ATT_REL);
// Putting the string first means it works even if the attribute is null
- if (STYLESHEET.equalsIgnoreCase(tag.attr(ATT_REL))) {
+ if (STYLESHEET.equalsIgnoreCase(relAttr) || ICON.equalsIgnoreCase(relAttr)
+ || SHORTCUT_ICON.equalsIgnoreCase(relAttr)) {
extractAttribute(tag, ATT_HREF);
}
} else {
@@ -142,7 +144,7 @@ public class JsoupBasedHtmlParser extend
String contents = new String(html,encoding);
Document doc = Jsoup.parse(contents);
JMeterNodeVisitor nodeVisitor = new JMeterNodeVisitor(new URLPointer(baseUrl), coll);
- new NodeTraversor(nodeVisitor).traverse(doc);
+ NodeTraversor.traverse(nodeVisitor, doc);
return coll.iterator();
} catch (Exception e) {
throw new HTMLParseException(e);
Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/LagartoBasedHtmlParser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/LagartoBasedHtmlParser.java?rev=1851300&r1=1851299&r2=1851300&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/LagartoBasedHtmlParser.java (original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/LagartoBasedHtmlParser.java Mon Jan 14 22:30:00 2019
@@ -20,9 +20,10 @@ package org.apache.jmeter.protocol.http.
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayDeque;
import java.util.Collections;
+import java.util.Deque;
import java.util.Iterator;
-import java.util.Stack;
import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.protocol.http.util.ConversionUtils;
@@ -64,7 +65,7 @@ public class LagartoBasedHtmlParser exte
private URLCollection urls;
private URLPointer baseUrl;
private Float ieVersion;
- private Stack<Boolean> enabled = new Stack<>();
+ private Deque<Boolean> enabled = new ArrayDeque<>();
/**
* @param baseUrl base url to add possibly missing information to urls found in <code>urls</code>
@@ -123,7 +124,7 @@ public class LagartoBasedHtmlParser exte
baseUrl.url = ConversionUtils.makeRelativeURL(baseUrl.url, baseref.toString());
}
} catch (MalformedURLException e1) {
- throw new RuntimeException(e1);
+ throw new IllegalArgumentException("Error creating relative url from " + baseref, e1);
}
} else if (tag.nameEquals(TAG_IMAGE)) {
extractAttribute(tag, ATT_SRC);
@@ -151,14 +152,15 @@ public class LagartoBasedHtmlParser exte
} else if (tag.nameEquals(TAG_LINK)) {
CharSequence relAttribute = tag.getAttributeValue(ATT_REL);
// Putting the string first means it works even if the attribute is null
- if (relAttribute != null && CharSequenceUtil.equalsIgnoreCase(STYLESHEET,relAttribute)) {
+ if (relAttribute != null &&
+ (CharSequenceUtil.equalsIgnoreCase(STYLESHEET,relAttribute)
+ || CharSequenceUtil.equalsIgnoreCase(ICON, relAttribute)
+ || CharSequenceUtil.equalsIgnoreCase(SHORTCUT_ICON, relAttribute))) {
extractAttribute(tag, ATT_HREF);
}
} else {
extractAttribute(tag, ATT_BACKGROUND);
}
-
-
// Now look for URLs in the STYLE attribute
CharSequence styleTagStr = tag.getAttributeValue(ATT_STYLE);
if(!StringUtils.isEmpty(styleTagStr)) {
Modified: jmeter/trunk/test/src/org/apache/jmeter/protocol/http/parser/TestBug60842HtmlParser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/parser/TestBug60842HtmlParser.java?rev=1851300&r1=1851299&r2=1851300&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/protocol/http/parser/TestBug60842HtmlParser.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/protocol/http/parser/TestBug60842HtmlParser.java Mon Jan 14 22:30:00 2019
@@ -107,6 +107,12 @@ public class TestBug60842HtmlParser {
new Object[] { parserToTest,
"<link href=' with spaces\n.css ' rel='stylesheet'/>",
"http://example.org/with spaces.css" },
+ new Object[] { parserToTest,
+ "<link href='favicon.ico' rel='shortcut icon' type='image/vnd.microsoft.icon'/>",
+ "http://example.org/favicon.ico" },
+ new Object[] { parserToTest,
+ "<link href='favicon.ico' rel='icon' type='image/vnd.microsoft.icon'/>",
+ "http://example.org/favicon.ico" },
new Object[] { parserToTest, "<embed src=''/>", "" },
new Object[] { parserToTest, "<embed src=' '/>", "" })) {
result.add(data);
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1851300&r1=1851299&r2=1851300&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Mon Jan 14 22:30:00 2019
@@ -180,6 +180,7 @@ of previous time slot as a base. Startin
<li><bug>62987</bug>A TestBean element under HTTP(S) Test Script recorder does not work. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62987</bug>Abnormal NoHttpResponseException when running request through proxy HTTP(S) Test Script Recorder after a first failing request. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62852</bug>HTTP Request Header missing information when using a proxy</li>
+ <li><bug>63048</bug> - JMeter does not retrieve link resources of type "shortcut icon" or "icon". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Other Samplers</h3>