mstover1 2004/04/16 06:21:46
Modified: . build.xml eclipse.classpath
bin jmeter.properties
src/components/org/apache/jmeter/visualizers
ViewResultsFullVisualizer.java
src/core/org/apache/jmeter/resources messages.properties
src/core/org/apache/jmeter/util JMeterVersion.java
src/jorphan/org/apache/jorphan/collections HashTree.java
src/protocol/http/org/apache/jmeter/protocol/http/config/gui
UrlConfigGui.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy
HttpReplyHdr.java HttpRequestHdr.java Proxy.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler
HTTPSampler.java HTTPSampler2.java PostWriter.java
src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/gui
TCPConfigGui.java
src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler
TCPClient.java TCPClientImpl.java TCPSampler.java
xdocs changes.xml index.xml nightly.xml
xdocs/stylesheets project.xml
xdocs/usermanual component_reference.xml
Added: src/components/org/apache/jmeter/assertions
HTMLAssertion.java
src/components/org/apache/jmeter/assertions/gui
HTMLAssertionGui.java
xdocs/images/screenshots/assertion HTMLAssertion.png
Log:
Merging rel-2_0 branch to main
Revision Changes Path
1.177 +50 -6 jakarta-jmeter/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/build.xml,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -r1.176 -r1.177
--- build.xml 8 Apr 2004 21:38:11 -0000 1.176
+++ build.xml 16 Apr 2004 13:21:44 -0000 1.177
@@ -382,7 +382,7 @@
<target name="init-version">
<tstamp/>
<!-- JMeter version -->
- <property name="jmeter.version" value="1.9.${DSTAMP}"/>
+ <property name="jmeter.version" value="2.0.${DSTAMP}"/>
</target>
<target name="init" depends="check-libs,report-missing-libs,init-version">
@@ -868,10 +868,54 @@
<include name="build.*"/>
<include name="lcp.bat"/>
<include name="${dest.jar.jmeter}/jmeter*.bat"/>
- <include name="${dest.jar.jmeter}/jmeter.properties"/>
+ <include name="${dest.jar.jmeter}/jmeter*.properties"/>
<include name="${dest.jar.jmeter}/log4j.conf"/>
+ <include name="${dest.jar.jmeter}/testfiles/**"/>
<include name="eclipse.classpath*"/>
</patternset>
+
+ <target name="distribution"
depends="assume-libs-present,clean,install,docs-all,test"
+ description="Build JMeter for end-user distribution">
+ <property name="dist.name" value="jakarta-jmeter-${jmeter.version}"/>
+ <property name="pack.name" value="${dist.name}"/>
+ <patternset id="dist_bin_files">
+ <patternset refid="dist.binaries"/>
+ <patternset refid="external.jars"/>
+ <include name="docs/**"/>
+ <include name="${dest.printable_docs}/**"/>
+ <exclude name="docs/api/**"/>
+ </patternset>
+ <patternset id="dist_src_files">
+ <patternset refid="external.jars"/>
+ <patternset refid="dist.sources"/>
+ </patternset>
+ <mkdir dir="${dist.dir}"/>
+ <tar destfile="${dist.dir}/${pack.name}_bin.tar" longfile="gnu">
+ <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}"
defaultexcludes="yes">
+ <patternset refid="dist_bin_files"/>
+ </tarfileset>
+ <tarfileset mode="755" includes="${dist.executables}" dir="."
prefix="${dist.name}" defaultexcludes="yes"/>
+ </tar>
+ <gzip zipfile="${dist.dir}/${pack.name}_bin.tgz"
src="${dist.dir}/${pack.name}_bin.tar" />
+ <zip zipfile="${dist.dir}/${pack.name}_bin.zip">
+ <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
+ <patternset refid="dist_bin_files"/>
+ </zipfileset>
+ </zip>
+
+ <tar destfile="${dist.dir}/${pack.name}_src.tar" longfile="gnu">
+ <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}"
defaultexcludes="yes">
+ <patternset refid="dist_src_files"/>
+ </tarfileset>
+ <tarfileset mode="755" includes="${dist.executables}" dir="."
prefix="${dist.name}" defaultexcludes="yes"/>
+ </tar>
+ <gzip zipfile="${dist.dir}/${pack.name}_src.tgz"
src="${dist.dir}/${pack.name}_src.tar" />
+ <zip zipfile="${dist.dir}/${pack.name}_src.zip">
+ <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
+ <patternset refid="dist_src_files"/>
+ </zipfileset>
+ </zip>
+ </target>
<!-- N.B. this target is the one currently used by Gump -->
<target name="dist" depends="assume-libs-present,clean,install,docs-all,test"
description="Rebuild all and create the distribution packages.">
1.12 +1 -0 jakarta-jmeter/eclipse.classpath
Index: eclipse.classpath
===================================================================
RCS file: /home/cvs/jakarta-jmeter/eclipse.classpath,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- eclipse.classpath 22 Mar 2004 15:09:02 -0000 1.11
+++ eclipse.classpath 16 Apr 2004 13:21:44 -0000 1.12
@@ -17,6 +17,7 @@
excluding="org/apache/jmeter/protocol/java/**/BeanShell*.java|org/apache/jmeter/protocol/java/**/BSF*.java"
kind="src" output="build/protocol/java" path="src/protocol/java"/>
<classpathentry kind="src" output="build/protocol/ldap"
path="src/protocol/ldap"/>
+ <classpathentry kind="src" output="build/protocol/mail"
path="src/protocol/mail"/>
<classpathentry kind="src" output="build/protocol/tcp" path="src/protocol/tcp"/>
<classpathentry kind="src" output="build/monitor/model"
path="src/monitor/model"/>
<classpathentry kind="src" output="build/monitor/components"
path="src/monitor/components"/>
1.101 +3 -3 jakarta-jmeter/bin/jmeter.properties
Index: jmeter.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -r1.100 -r1.101
--- jmeter.properties 22 Mar 2004 01:17:14 -0000 1.100
+++ jmeter.properties 16 Apr 2004 13:21:44 -0000 1.101
@@ -125,7 +125,7 @@
#log_level.jmeter.util=WARN
#log_level.jmeter.util.classfinder=WARN
#log_level.jmeter.test=DEBUG
-#log_level.jmeter.protocol.http=DEBUG
+log_level.jmeter.protocol.http=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=WARN
#log_level.jmeter.protocol.java=WARN
@@ -228,4 +228,4 @@
#jmeter.expertMode=true
# To set the buffer size, enter the desired value
-# monitor.buffer.size=800
\ No newline at end of file
+# monitor.buffer.size=800
1.2 +358 -0
jakarta-jmeter/src/components/org/apache/jmeter/assertions/HTMLAssertion.java
1.2 +297 -0
jakarta-jmeter/src/components/org/apache/jmeter/assertions/gui/HTMLAssertionGui.java
1.43 +3 -4
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
Index: ViewResultsFullVisualizer.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- ViewResultsFullVisualizer.java 15 Mar 2004 01:19:30 -0000 1.42
+++ ViewResultsFullVisualizer.java 16 Apr 2004 13:21:44 -0000 1.43
@@ -361,8 +361,7 @@
byte[] responseBytes = res.getResponseData();
String response = null;
- if (res.getDataType() != null
- && res.getDataType().equals(SampleResult.TEXT))
+ if ((SampleResult.TEXT).equals(res.getDataType()))
{
try
{
1.109 +1 -0
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties
Index: messages.properties
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -r1.108 -r1.109
--- messages.properties 8 Apr 2004 19:16:44 -0000 1.108
+++ messages.properties 16 Apr 2004 13:21:44 -0000 1.109
@@ -452,6 +452,7 @@
tcp_config_title=TCP Sampler Config
tcp_nodelay=Set NoDelay
tcp_port=Port Number\:
+tcp_request_data=Text to send
tcp_sample_title=TCP Sampler
tcp_timeout=Timeout\:
template_field=Template\:
1.15 +3 -3
jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterVersion.java
Index: JMeterVersion.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterVersion.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- JMeterVersion.java 30 Mar 2004 18:08:09 -0000 1.14
+++ JMeterVersion.java 16 Apr 2004 13:21:44 -0000 1.15
@@ -41,7 +41,7 @@
* pattern: VERSION = <quote>.*<quote>
*
*/
- static final String VERSION = "1.9.20040324";
+ static final String VERSION = "2.0.20040416";
private JMeterVersion() // Not instantiable
{
1.15 +11 -6
jakarta-jmeter/src/jorphan/org/apache/jorphan/collections/HashTree.java
Index: HashTree.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/jorphan/org/apache/jorphan/collections/HashTree.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- HashTree.java 24 Mar 2004 15:23:37 -0000 1.14
+++ HashTree.java 16 Apr 2004 13:21:44 -0000 1.15
@@ -432,10 +432,10 @@
* @param key key to be added
* @param value value to be added as a key in the secondary node
*/
- public void add(Object key, Object value)
+ public HashTree add(Object key, Object value)
{
add(key);
- getTree(key).add(value);
+ return getTree(key).add(value);
}
/**
@@ -503,6 +503,11 @@
}
}
+ public HashTree add(Object[] treePath,Object value)
+ {
+ return add(Arrays.asList(treePath),value);
+ }
+
/**
* Adds a series of nodes into the HashTree using the given path. The
* first argument is a List that represents a path to a specific node in
@@ -529,10 +534,10 @@
* @param treePath a list of objects representing a path
* @param value Object to add as a node to bottom-most node
*/
- public void add(Collection treePath, Object value)
+ public HashTree add(Collection treePath, Object value)
{
HashTree tree = addTreePath(treePath);
- tree.add(value);
+ return tree.add(value);
}
/**
1.17 +3 -2
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
Index: UrlConfigGui.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- UrlConfigGui.java 21 Mar 2004 04:21:19 -0000 1.16
+++ UrlConfigGui.java 16 Apr 2004 13:21:45 -0000 1.17
@@ -110,6 +110,7 @@
element.setProperty(HTTPSampler.METHOD,
(post.isSelected() ? "POST" : "GET"));
element.setProperty(HTTPSampler.PATH, path.getText());
+ element.setProperty(HTTPSampler.ENCODED_PATH,path.getText());
element.setProperty(new BooleanProperty(HTTPSampler.FOLLOW_REDIRECTS,
followRedirects.isSelected()));
element.setProperty(new BooleanProperty(HTTPSampler.AUTO_REDIRECTS,
1.6 +7 -7
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpReplyHdr.java
Index: HttpReplyHdr.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpReplyHdr.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HttpReplyHdr.java 12 Feb 2004 00:29:50 -0000 1.5
+++ HttpReplyHdr.java 16 Apr 2004 13:21:45 -0000 1.6
@@ -59,7 +59,7 @@
if (0 < contentType.length())
{
- out.append("Content-type: ").append(contentType).append(CR);
+ out.append("Content-Type: ").append(contentType).append(CR);
}
else
{
@@ -106,15 +106,15 @@
*/
private static String formError(String error, String description)
{
- /* A HTTP RESPONCE HEADER LOOKS ALOT LIKE:
+ /* A HTTP RESPONSE HEADER LOOKS ALOT LIKE:
*
* HTTP/1.0 200 OK
* Date: Wednesday, 02-Feb-94 23:04:12 GMT
* Server: NCSA/1.1
* MIME-version: 1.0
* Last-modified: Monday, 15-Nov-93 23:33:16 GMT
- * Content-type: text/html
- * Content-length: 2345
+ * Content-Type: text/html
+ * Content-Length: 2345
* \r\n
*/
@@ -124,7 +124,7 @@
header.append(HTTP_PROTOCOL).append(" ").append(error).append(CR);
header.append("Server: ").append(HTTP_SERVER).append(CR);
header.append("MIME-version: 1.0").append(CR);
- header.append("Content-type: text/html").append(CR);
+ header.append("Content-Type: text/html").append(CR);
header.append("Content-Length: ").append(body.length()).append(CR);
1.24 +7 -4
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
Index: HttpRequestHdr.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- HttpRequestHdr.java 12 Feb 2004 01:19:53 -0000 1.23
+++ HttpRequestHdr.java 16 Apr 2004 13:21:45 -0000 1.24
@@ -187,10 +187,12 @@
// Damn! A whole new GUI just to instantiate a test element?
// Isn't there a beter way?
HttpTestSampleGui tempGui = new HttpTestSampleGui();
- tempGui.configure(createSampler());
- HTTPSampler result = (HTTPSampler) tempGui.createTestElement();
+ HTTPSampler result = createSampler();
+ tempGui.configure(result);
+ tempGui.modifyTestElement(result);
result.setFollowRedirects(false);
result.setUseKeepAlive(true);
+ log.debug("getSampler: sampler path = " + result.getEncodedPath());
return result;
}
@@ -264,6 +266,7 @@
{
sampler.parseArguments(postData);
}
+ log.debug("sampler path = " + sampler.getEncodedPath());
return sampler;
}
1.18 +28 -4
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java
Index: Proxy.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- Proxy.java 12 Feb 2004 00:29:50 -0000 1.17
+++ Proxy.java 16 Apr 2004 13:21:45 -0000 1.18
@@ -114,7 +114,6 @@
*/
headers = request.getHeaderManager();
sampler.setHeaderManager(headers);
-
result = sampler.sample();
writeToClient(
result,
@@ -167,7 +166,8 @@
{
try
{
- out.write((res.getResponseHeaders()+"\n").getBytes());
+ String responseHeaders =
massageResponseHeaders(res,res.getResponseHeaders());
+ out.write((responseHeaders+"\n").getBytes());
out.write(res.getResponseData());
out.flush();
log.debug("Done writing to client");
@@ -188,6 +188,30 @@
log.warn("Error while closing socket", ex);
}
}
+ }
+
+ /**
+ * In the event the content was gzipped and unpacked, the content-encoding
header must be
+ * removed and the content-length header should be corrected.
+ * @param res
+ * @param headers
+ * @return
+ */
+ private String massageResponseHeaders(SampleResult res,String headers)
+ {
+ int encodingHeaderLoc = headers.indexOf(": gzip");
+ String newHeaders = headers;
+ if(encodingHeaderLoc > -1)
+ {
+ int end = headers.indexOf("\n",encodingHeaderLoc);
+ int begin = headers.lastIndexOf("\n",encodingHeaderLoc);
+ newHeaders = newHeaders.substring(0,begin) + newHeaders.substring(end);
+ int lengthIndex = newHeaders.indexOf("ength: ");
+ end = newHeaders.indexOf("\n",lengthIndex);
+ newHeaders = newHeaders.substring(0,lengthIndex+7) +
res.getResponseData().length +
+ newHeaders.substring(end);
+ }
+ return newHeaders;
}
/**
1.92 +23 -12
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
Index: HTTPSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- HTTPSampler.java 21 Mar 2004 04:20:25 -0000 1.91
+++ HTTPSampler.java 16 Apr 2004 13:21:45 -0000 1.92
@@ -303,20 +303,31 @@
for (int i= 1; conn.getHeaderFieldKey(i) != null; i++)
{
- if (!conn //TODO - why is this not saved?
- .getHeaderFieldKey(i)
- .equalsIgnoreCase("transfer-encoding"))
- {
- headerBuf.append(conn.getHeaderFieldKey(i));
- headerBuf.append(": ");
- headerBuf.append(conn.getHeaderField(i));
- headerBuf.append("\n");
- }
+ modifyHeaderValues(conn,i, headerBuf);
}
return headerBuf.toString();
}
/**
+ * @param conn
+ * @param headerBuf
+ * @param i
+ */
+ protected void modifyHeaderValues(HttpURLConnection conn, int headerIndex,
StringBuffer resultBuf)
+ {
+ if ("transfer-encoding" //TODO - why is this not saved? A: it might be a
proxy server specific field.
+ // If JMeter is using a proxy, the browser wouldn't know about
that.
+ .equalsIgnoreCase(conn.getHeaderFieldKey(headerIndex)))
+ {
+ return;
+ }
+ resultBuf.append(conn.getHeaderFieldKey(headerIndex));
+ resultBuf.append(": ");
+ resultBuf.append(conn.getHeaderField(headerIndex));
+ resultBuf.append("\n");
+ }
+
+ /**
* Extracts all the required cookies for that particular URL request and
* sets them in the <code>HttpURLConnection</code> passed in.
*
@@ -550,7 +561,7 @@
}
if (isImageParser()
- && res.getDataType().equals(HTTPSampleResult.TEXT)
+ && (HTTPSampleResult.TEXT).equals(res.getDataType())
&& res.isSuccessful())
{
if (frameDepth > MAX_FRAME_DEPTH)
1.9 +5 -38
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java
Index: HTTPSampler2.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- HTTPSampler2.java 24 Mar 2004 03:05:19 -0000 1.8
+++ HTTPSampler2.java 16 Apr 2004 13:21:45 -0000 1.9
@@ -104,39 +104,6 @@
// /*postWriter.*/
// setHeaders(post, this);
}
-
-// protected final static String BOUNDARY =
-// "---------------------------7d159c1302d0y0";
-// //protected final static byte[] CRLF = { 0x0d, 0x0A };
-//
-// public void setHeaders(HttpMethod method, HTTPSampler2 sampler)
-// throws IOException
-// {
-//
-// // If filename was specified then send the post using multipart syntax
-// String filename = sampler.getFileField();
-// if ((filename != null) && (filename.trim().length() > 0))
-// {
-// method.setRequestHeader(
-// "Content-type",
-// "multipart/form-data; boundary=" + BOUNDARY);
-//// connection.setDoOutput(true);
-//// connection.setDoInput(true);
-// }
-//
-// // No filename specified, so send the post using normal syntax
-// else
-// {
-// String postData = sampler.getQueryString();
-// method.setRequestHeader(
-// "Content-length",
-// "" + postData.length());
-// method.setRequestHeader(
-// "Content-type",
-// "application/x-www-form-urlencoded");
-//// connection.setDoOutput(true);
-// }
-//}
/**
* Send POST data from <code>Entry</code> to the open connection.
@@ -181,7 +148,7 @@
+ encode(filename)
+ "\"");
// Specify content type and encoding
- post.setRequestHeader("Content-type", sampler.getMimetype());
+ post.setRequestHeader("Content-Type", sampler.getMimetype());
post.setRequestBody(new FileInputStream(input));
}
}
@@ -527,7 +494,7 @@
res.setResponseMessage(httpMethod.getStatusText());
- String ct= httpMethod.getResponseHeader("Content-type").getValue();
+ String ct= httpMethod.getResponseHeader("Content-Type").getValue();
res.setContentType(ct);// e.g. text/html; charset=ISO-8859-1
if (ct != null)
{
@@ -577,7 +544,7 @@
}
if (isImageParser()
- && res.getDataType().equals(HTTPSampleResult.TEXT)
+ && (HTTPSampleResult.TEXT).equals(res.getDataType())
&& res.isSuccessful())
{
if (frameDepth > MAX_FRAME_DEPTH)
1.13 +5 -6
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/PostWriter.java
Index: PostWriter.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/PostWriter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- PostWriter.java 12 Feb 2004 00:29:49 -0000 1.12
+++ PostWriter.java 16 Apr 2004 13:21:45 -0000 1.13
@@ -32,7 +32,6 @@
import org.apache.jmeter.testelement.property.PropertyIterator;
/**
- * @author Michael Stover
* @version $Revision$
*/
@@ -100,7 +99,7 @@
if ((filename != null) && (filename.trim().length() > 0))
{
connection.setRequestProperty(
- "Content-type",
+ "Content-Type",
"multipart/form-data; boundary=" + BOUNDARY);
connection.setDoOutput(true);
connection.setDoInput(true);
@@ -111,10 +110,10 @@
{
String postData = sampler.getQueryString();
connection.setRequestProperty(
- "Content-length",
+ "Content-Length",
"" + postData.length());
connection.setRequestProperty(
- "Content-type",
+ "Content-Type",
"application/x-www-form-urlencoded");
connection.setDoOutput(true);
}
1.5 +36 -13
jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/gui/TCPConfigGui.java
Index: TCPConfigGui.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/gui/TCPConfigGui.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TCPConfigGui.java 5 Mar 2004 01:39:07 -0000 1.4
+++ TCPConfigGui.java 16 Apr 2004 13:21:45 -0000 1.5
@@ -19,8 +19,10 @@
package org.apache.jmeter.protocol.tcp.config.gui;
import java.awt.BorderLayout;
+import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.apache.jmeter.config.ConfigTestElement;
@@ -29,6 +31,7 @@
import org.apache.jmeter.protocol.tcp.sampler.TCPSampler;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.util.JOrphanUtils;
/**
* @version $Revision$ $Date$
@@ -40,13 +43,16 @@
private final static String FILENAME = "filename"; //$NON-NLS-1$
private final static String TIMEOUT = "timeout"; //$NON-NLS-1$
private final static String NODELAY = "nodelay"; //$NON-NLS-1$
+ private final static String REQUEST = "request"; //$NON-NLS-1$
private JTextField server;
private JTextField port;
private JTextField filename;
private JTextField timeout;
- private JTextField nodelay;
+ private JCheckBox setNoDelay;
+ private JTextArea requestData;
+
private boolean displayName = true;
public TCPConfigGui()
@@ -70,9 +76,10 @@
super.configure(element);
server.setText(element.getPropertyAsString(TCPSampler.SERVER));
port.setText(element.getPropertyAsString(TCPSampler.PORT));
- filename.setText(element.getPropertyAsString(TCPSampler.FILENAME));
+ //filename.setText(element.getPropertyAsString(TCPSampler.FILENAME));
timeout.setText(element.getPropertyAsString(TCPSampler.TIMEOUT));
- nodelay.setText(element.getPropertyAsString(TCPSampler.NODELAY));
+
setNoDelay.setSelected(element.getPropertyAsBoolean(TCPSampler.NODELAY));
+ requestData.setText(element.getPropertyAsString(TCPSampler.REQUEST));
}
public TestElement createTestElement()
@@ -91,9 +98,10 @@
configureTestElement(element);
element.setProperty(TCPSampler.SERVER, server.getText());
element.setProperty(TCPSampler.PORT, port.getText());
- element.setProperty(TCPSampler.FILENAME, filename.getText());
- element.setProperty(TCPSampler.NODELAY, nodelay.getText());
+ //element.setProperty(TCPSampler.FILENAME, filename.getText());
+ element.setProperty(TCPSampler.NODELAY,
JOrphanUtils.booleanToString(setNoDelay.isSelected()));
element.setProperty(TCPSampler.TIMEOUT, timeout.getText());
+ element.setProperty(TCPSampler.REQUEST, requestData.getText());
}
private JPanel createTimeoutPanel()
@@ -114,13 +122,13 @@
{
JLabel label = new JLabel(JMeterUtils.getResString("tcp_nodelay"));
- nodelay = new JTextField(10);
- nodelay.setName(NODELAY);
- label.setLabelFor(nodelay);
+ setNoDelay = new JCheckBox();
+ setNoDelay.setName(NODELAY);
+ label.setLabelFor(setNoDelay);
JPanel nodelayPanel = new JPanel(new BorderLayout(5, 0));
nodelayPanel.add(label, BorderLayout.WEST);
- nodelayPanel.add(nodelay, BorderLayout.CENTER);
+ nodelayPanel.add(setNoDelay, BorderLayout.CENTER);
return nodelayPanel;
}
@@ -152,8 +160,22 @@
return PortPanel;
}
- private JPanel createFilenamePanel()
+ private JPanel createRequestPanel()
+ {
+ JLabel reqLabel = new
JLabel(JMeterUtils.getResString("tcp_request_data"));
+ requestData = new JTextArea(3,0);
+ requestData.setName(REQUEST);
+ reqLabel.setLabelFor(requestData);
+
+ JPanel reqDataPanel = new JPanel(new BorderLayout(5, 0));
+ reqDataPanel.add(reqLabel, BorderLayout.WEST);
+ reqDataPanel.add(requestData, BorderLayout.CENTER);
+ return reqDataPanel;
+
+ }
+ private JPanel createFilenamePanel()//Not used yet
{
+
JLabel label = new
JLabel(JMeterUtils.getResString("file_to_retrieve"));
filename = new JTextField(10);
@@ -181,8 +203,9 @@
mainPanel.add(createPortPanel());
mainPanel.add(createTimeoutPanel());
mainPanel.add(createNoDelayPanel());
+ mainPanel.add(createRequestPanel());
- mainPanel.add(createFilenamePanel());
+ //mainPanel.add(createFilenamePanel());
add(mainPanel, BorderLayout.CENTER);
}
}
1.6 +23 -5
jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClient.java
Index: TCPClient.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClient.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TCPClient.java 30 Mar 2004 18:07:37 -0000 1.5
+++ TCPClient.java 16 Apr 2004 13:21:45 -0000 1.6
@@ -38,13 +38,31 @@
/**
*
* @param os - OutputStream for socket
- * @return String written to socket
+ * @param is - InputStream to be written to Socket
*/
- String write(OutputStream os);
+ void write(OutputStream os, InputStream is);
+
+ /**
+ *
+ * @param os - OutputStream for socket
+ * @param s - String to write
+ */
+ void write(OutputStream os, String s);
+
/**
*
* @param is - InputStream for socket
* @return String read from socket
*/
String read(InputStream is);
-}
+
+ /**
+ * @return Returns the eolByte.
+ */
+ public byte getEolByte();
+
+ /**
+ * @param eolByte The eolByte to set.
+ */
+ public void setEolByte(byte eolByte);
+}
\ No newline at end of file
1.7 +35 -11
jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClientImpl.java
Index: TCPClientImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClientImpl.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TCPClientImpl.java 30 Mar 2004 18:07:37 -0000 1.6
+++ TCPClientImpl.java 16 Apr 2004 13:21:45 -0000 1.7
@@ -32,6 +32,7 @@
import java.io.InterruptedIOException;
import java.io.OutputStream;
+import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
@@ -43,6 +44,7 @@
public class TCPClientImpl implements TCPClient
{
private static Logger log = LoggingManager.getLoggerForClass();
+ private byte eolByte = (byte) JMeterUtils.getPropDefault("tcp.eolByte",0);
public TCPClientImpl()
{
@@ -69,12 +71,10 @@
}
- /* (non-Javadoc)
- * @see
org.apache.jmeter.protocol.tcp.sampler.TCPClient#write(java.io.OutputStream)
- */
- public String write(OutputStream os)
- {
- String s = "GET / HTTP/1.1\nHost: www.dummy.invalid\n\n"; //or get
from file etc
+ /* (non-Javadoc)
+ * @see
org.apache.jmeter.protocol.tcp.sampler.TCPClient#write(java.io.OutputStream,
java.lang.String)
+ */
+ public void write(OutputStream os, String s) {
try
{
os.write(s.getBytes());
@@ -85,8 +85,8 @@
log.debug("Write error",e);
}
log.debug("Wrote: "+s);
- return s;
- }
+ return;
+ }
/* (non-Javadoc)
@@ -101,6 +101,8 @@
while ((x = is.read(buffer)) > -1)
{
w.write(buffer, 0, x);
+ if ((eolByte != 0) && (buffer[x-1] == eolByte))
+ break;
}
/*
* Timeout is reported as follows:
@@ -123,7 +125,29 @@
}
// do we need to close byte array (or flush it?)
- log.debug("Read:\n"+w.toString());
+ log.debug("Read: "+w.size()+ "\n"+w.toString());
return w.toString();
}
+
+
+ /* (non-Javadoc)
+ * @see
org.apache.jmeter.protocol.tcp.sampler.TCPClient#write(java.io.OutputStream,
java.io.InputStream)
+ */
+ public void write(OutputStream os, InputStream is) {
+ // TODO Auto-generated method stub
+ return;
+ }
+
+ /**
+ * @return Returns the eolByte.
+ */
+ public byte getEolByte() {
+ return eolByte;
+ }
+ /**
+ * @param eolByte The eolByte to set.
+ */
+ public void setEolByte(byte eolByte) {
+ this.eolByte = eolByte;
+ }
}
1.6 +25 -9
jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java
Index: TCPSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TCPSampler.java 30 Mar 2004 18:07:37 -0000 1.5
+++ TCPSampler.java 16 Apr 2004 13:21:45 -0000 1.6
@@ -54,6 +54,7 @@
public final static String CLASSNAME = "TCPSampler.classname";//$NON-NLS-1$
public final static String NODELAY = "TCPSampler.nodelay"; //$NON-NLS-1$
public final static String TIMEOUT = "TCPSampler.timeout"; //$NON-NLS-1$
+ public final static String REQUEST = "TCPSampler.request"; //$NON-NLS-1$
private final static String TCPKEY = "TCP"; //$NON-NLS-1$ key for HashMap
private final static String ERRKEY = "ERR"; //$NON-NLS-1$ key for HashMap
@@ -67,9 +68,12 @@
}
};
+ private transient TCPClient protocolHandler;
+
public TCPSampler()
{
log.debug("Created "+this);
+ protocolHandler=getProtocol();
}
private String getError(){
@@ -147,6 +151,17 @@
}
+ public void setRequestData(String newRequestData)
+ {
+ this.setProperty(REQUEST, newRequestData);
+ }
+
+ public String getRequestData()
+ {
+ return getPropertyAsString(REQUEST);
+ }
+
+
public void setTimeout(String newTimeout)
{
this.setProperty(FILENAME, newTimeout);
@@ -161,6 +176,7 @@
{
this.setProperty(NODELAY, newNoDelay);
}
+
public boolean getNoDelay()
{
return getPropertyAsBoolean(NODELAY);
@@ -211,12 +227,12 @@
}
- private Object getProtocol(){
- Object TCPClient = null;
+ private TCPClient getProtocol(){
+ TCPClient TCPClient = null;
Class javaClass = getClass(getClassname());
try
{
- TCPClient = javaClass.newInstance();
+ TCPClient = (TCPClient) javaClass.newInstance();
if (log.isDebugEnabled())
{
log.debug(this
@@ -250,11 +266,11 @@
} else {
InputStream is = sock.getInputStream();
OutputStream os = sock.getOutputStream();
- TCPClient proto = (TCPClient) getProtocol();
- log.debug("Found class "+ proto.toString());
- String req=proto.write(os);
+ String req = getRequestData();
+ //TODO handle filenames
res.setSamplerData(req);
- String in = proto.read(is);
+ protocolHandler.write(os,req);
+ String in = protocolHandler.read(is);
res.setResponseData(in.getBytes());
res.setDataType(SampleResult.TEXT);
res.setResponseCode("200");
1.16 +49 -1 jakarta-jmeter/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/changes.xml,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- changes.xml 14 Feb 2004 01:19:43 -0000 1.15
+++ changes.xml 16 Apr 2004 13:21:45 -0000 1.16
@@ -27,6 +27,54 @@
<b>Changes: for more info, contact <a href="mailto:[EMAIL PROTECTED]">Michael
Stover</a></b>
+<h3>Version 2.0</h3>
+<ul>
+ <li>HTML parsing improved; now has choice of 3 parsers, and most embedded
elements can now be detected and downloaded.</li>
+<li>Redirects can now be delegated to URLConnection by defining the JMeter property
HTTPSamper.delegateRedirects=true (default is false) </li>
+<li>Stop Thread and Stop Test methods added for Samplers and Assertions etc.
Samplers can call setStopThread(true) or setStopTest(true) if they detect an error
that needs to stop the thread of the test after the sample has been processed </li>
+<li>Thread Group Gui now has an extra pane to specify what happens after a Sampler
error: Continue (as now), Stop Thread or Stop Test.
+ This needs to be extended to a lower level at some stage. </li>
+<li>Added Shutdown to Run Menu. This is the same as Stop except that it lets the
Threads finish normally (i.e. after the next sample has been completed) </li>
+<li>Remote samples can be cached until the end of a test by defining the property
hold_samples=true when running the server.
+More work is needed to be able to control this from the GUI </li>
+<li>Proxy server has option to skip recording browser headers </li>
+<li>Proxy restart works better (stop waits for daemon to finish) </li>
+<li>Scheduler ignores start if it has already passed </li>
+<li>Scheduler now has delay function </li>
+<li>added Summariser test element (mainly for non-GUI) testing. This prints summary
statistics to System.out and/or the log file every so oftem (3 minutes by default).
Multiple summarisers can be used; samples are accumulated by summariser name. </li>
+<li>Extra Proxy Server options:
+Create all samplers with keep-alive disabled
+Add Separator markers between sets of samples
+Add Response Assertion to first sampler in each set </li>
+<li>Test Plan has a comment field</li>
+
+ <li>Help Page can now be pushed to background</li>
+ <li>Separate Function help page</li>
+ <li>New / amended functions</li>
+ <ul>
+ <li>__property() and __P() functions</li>
+ <li>__log() and __logn() - for writing to the log file</li>
+ <li>_StringFromFile can now process a sequence of files, e.g. dir/file01.txt,
dir/file02.txt etc </li>
+ <li>_StringFromFile() funtion can now use a variable or function for the file
name </li>
+ </ul>
+ <li>New / amended Assertions</li>
+ <ul>
+ <li>Response Assertion now works for URLs, and it handles null data better
</li>
+ <li>Response Assertion can now match on Response Code and Response message
as well </li>
+ <li>HTML Assertion using JTidy to check for well-formed HTML</li>
+ </ul>
+ <li>If Controller (not fully functional yet)</li>
+ <li>Transaction Controller (aggregates the times of its children)</li>
+ <li>New Samplers</li>
+ <ul>
+ <li>Basic BSF Sampler (optional)</li>
+ <li>BeanShell Sampler (optional, needs to be downloaded from
www.beanshell.org</li>
+ <li>Basic TCP Sampler</li>
+ </ul>
+ <li>Optionally start BeanShell server (allows remote access to JMeter
variables and methods) </li>
+</ul>
+<h3>Version 1.9.1</h3>
+<p>TBA</p>
<h3>Version 1.9</h3>
<ul>
<li>Sample result log files can now be in CSV or XML format</li>
1.8 +3 -2 jakarta-jmeter/xdocs/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/index.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- index.xml 14 Feb 2004 01:19:43 -0000 1.7
+++ index.xml 16 Apr 2004 13:21:45 -0000 1.8
@@ -65,7 +65,8 @@
<h2>How do I do it?</h2>
<ul>
<li><a href="usermanual/index.html">Using JMeter</a></li>
-<li><a href="extending/index.html">Extending JMeter (Developer Manual)</a></li>
+<li><a href="http://wiki.apache.org/jakarta-jmeter/JMeterFAQ">JMeter FAQ</a></li>
+<li><a href="http://wiki.apache.org/jakarta-jmeter/JMeterDevelopment">Extending
JMeter (Developer Notes)</a></li>
<li><a href="api/index.html">Javadoc API documentation</a></li>
<li><a href="localising/index.html">JMeter Localisation (Translator's
Guide)</a></li>
</ul>
1.2 +2 -2 jakarta-jmeter/xdocs/nightly.xml
Index: nightly.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/nightly.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- nightly.xml 14 Feb 2004 01:19:14 -0000 1.1
+++ nightly.xml 16 Apr 2004 13:21:45 -0000 1.2
@@ -24,7 +24,7 @@
<p></p>
<h2>Where are the nightly builds?</h2>
<p>There are at present two sources of nightly builds:</p>
- <ul>asdasd
+ <ul>
<li>Zips: <a
href="http://gump.covalent.net/jars/latest/jakarta-jmeter/">
http://gump.covalent.net/jars/latest/jakarta-jmeter/</a>
Log: <a
href="http://gump.covalent.net/log/jakarta-jmeter-test.html">Test log</a>
1.2 +28 -0
jakarta-jmeter/xdocs/images/screenshots/assertion/HTMLAssertion.png
<<Binary file>>
1.24 +22 -24 jakarta-jmeter/xdocs/stylesheets/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/project.xml,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- project.xml 14 Feb 2004 01:18:51 -0000 1.23
+++ project.xml 16 Apr 2004 13:21:45 -0000 1.24
@@ -19,39 +19,37 @@
href="http://jakarta.apache.org/jmeter/">
<title>JMeter</title>
- <!--
- <logo href="/images/logo.gif">JMeter</logo>
- -->
+ <!---->
+ <logo href="/images/logo.jpg">JMeter</logo>
+ <!---->
<body>
<menu name="About">
- <item name="Overview" href="/index.html"/>
- <item name="Changes" href="/changes.html"/>
- <item name="Known Bugs"
href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=JMeter&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Reuse+same+sort+as+last+time"/>
- <item name="License" href="/license.html"/>
- <item name="Contributors"
href="http://nagoya.apache.org/wiki/apachewiki.cgi?JMeterCommitters"/>
- <item name="FAQ"
href="http://nagoya.apache.org/wiki/apachewiki.cgi?JMeterFAQ"/>
+ <item name="Overview" href="/index.html"/>
+ <item name="Changes" href="/changes.html"/>
+ <item name="Known Bugs"
href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=JMeter&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Reuse+same+sort+as+last+time"/>
+ <item name="License" href="/license.html"/>
+ <item name="Contributors"
href="http://wiki.apache.org/jakarta-jmeter/JMeterCommitters"/>
+ <item name="FAQ (Wiki)"
href="http://wiki.apache.org/jakarta-jmeter/JMeterFAQ"/>
</menu>
<menu name="Download">
- <item name="Download Binary"
href="http://jakarta.apache.org/site/binindex.cgi"/>
- <item name="Download Source"
href="http://jakarta.apache.org/site/sourceindex.cgi"/>
- <item name="Download Nightly Builds"
href="/nightly.html"/>
- <item name="Download Latest Stable Release"
href="http://www.apache.org/dyn/closer.cgi/jakarta/jmeter/jakarta-jmeter-current-bin.zip"/>
- <!-- <item name="Download Latest Release Candidate"
href="http://jakarta.apache.org/builds/jakarta-jmeter/unstable/v1.9/jakarta-jmeter-1.9.RC3.zip"/>
-->
+ <item name="Download Binary"
href="http://jakarta.apache.org/site/binindex.cgi"/>
+ <item name="Download Source"
href="http://jakarta.apache.org/site/sourceindex.cgi"/>
+ <item name="Nightly Builds" href="/nightly.html"/>
</menu>
<menu name="Documentation">
- <item name="User Manual" href="/usermanual/index.html"/>
- <item name="Developer Manual" href="/extending/index.html"/>
- <item name="JMeter Wiki"
href="http://nagoya.apache.org/wiki/apachewiki.cgi?JMeterProjectPages"/>
- <item name="Javadocs" href="/api/index.html"/>
+ <item name="User Manual" href="/usermanual/index.html"/>
+ <item name="Javadocs" href="/api/index.html"/>
</menu>
<menu name="JMeter Resources">
- <item name="JMeter Articles"
href="http://nagoya.apache.org/wiki/apachewiki.cgi?JMeterLinks"/>
- <item name="JMeter on IRC" href="/jmeter_irc.html"/>
+ <item name="JMeter Wiki"
href="http://wiki.apache.org/jakarta-jmeter"/>
+ <item name="JMeter Articles"
href="http://wiki.apache.org/jakarta-jmeter/JMeterLinks"/>
+ <item name="JMeter on IRC" href="/jmeter_irc.html"/>
+ <item name="Developer Notes"
href="http://wiki.apache.org/jakarta-jmeter/JMeterDevelopment"/>
</menu>
<menu name="Community">
- <item name="Get Involved" href="/site/getinvolved.html"/>
- <item name="Mailing Lists" href="/site/mail.html"/>
- <item name="CVS Repositories" href="/site/cvsindex.html"/>
+ <item name="Get Involved" href="/site/getinvolved.html"/>
+ <item name="Mailing Lists" href="/site/mail.html"/>
+ <item name="CVS Repositories" href="/site/cvsindex.html"/>
</menu>
</body>
</project>
1.88 +19 -4 jakarta-jmeter/xdocs/usermanual/component_reference.xml
Index: component_reference.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/component_reference.xml,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- component_reference.xml 23 Mar 2004 17:00:58 -0000 1.87
+++ component_reference.xml 16 Apr 2004 13:21:45 -0000 1.88
@@ -18,7 +18,7 @@
*
* @version $Id$
-->
-<document index="yes" index-level-2="yes" colbreak="14.5"
+<document index="yes" index-level-2="yes" colbreak="15.4"
prev="boss.html" next="functions.html" date="$Date$">
<properties>
@@ -1075,6 +1075,7 @@
<p>Second, you can manually add a cookie to the Cookie Manager. However, if you do
this,
the cookie will be shared by all JMeter threads.</p>
+<p>Note that an Expiration time of 0 is treated as never expiring.</p>
</description>
<properties>
<property name="Name" required="No">Descriptive name for this element that
is shown in the tree. </property>
@@ -1428,6 +1429,20 @@
</properties>
</component>
+<component index="15.5.7" name="HTML Assertion"
screenshot="assertion/HTMLAssertion.png">
+<description><p>The HTML Assertion allows the user to check the HTML syntax of the
response data using JTidy.</p></description>
+
+<properties>
+<property name="Name" required="">Descriptive name for this element that is shown
in the tree.</property>
+<property name="doctype" required="Yes">omit/auto/strict/loose</property>
+<property name="Format" required="Yes">HTML, XHTML or XML</property>
+<property name="Errors only" required="Yes">Only take note of errors?</property>
+<property name="Error threshold" required="Yes">Number of errors allowed before
classing the response as failed</property>
+<property name="Warning threshold" required="Yes">Number of warnings allowed before
classing the response as failed</property>
+<property name="Filename" required="No">Name of file to which report is
written</property>
+
+</properties>
+</component>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]