The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special.

To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)

git-svn-id: https://svn.apache.org/repos/asf/jakarta/jmeter/trunk@650843 13f79535-47bb-0310-9956-ffa450edef68

Former-commit-id: 1609c89d80
This commit is contained in:
Sebastian Bazley 2008-04-23 12:22:09 +00:00
parent d0f152391f
commit 5b50e2afc3
4 changed files with 24 additions and 7 deletions

View File

@ -430,7 +430,8 @@ wmlParser.types=text/vnd.wap.wml
#tcp.handler=TCPClientImpl #tcp.handler=TCPClientImpl
# #
# eolByte = byte value for end of line # eolByte = byte value for end of line
#tcp.eolByte=0 # set this to a value outside the range -128 to +127 to skip eol checking
#tcp.eolByte=1000
# #
# status.prefix and suffix = strings that enclose the status response code # status.prefix and suffix = strings that enclose the status response code
#tcp.status.prefix=Status= #tcp.status.prefix=Status=

View File

@ -37,18 +37,24 @@ import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger; import org.apache.log.Logger;
/** /**
* * Sample TCPClient implementation
* *
*/ */
public class TCPClientImpl implements TCPClient { public class TCPClientImpl implements TCPClient {
private static Logger log = LoggingManager.getLoggerForClass(); private static final Logger log = LoggingManager.getLoggerForClass();
private byte eolByte = (byte) JMeterUtils.getPropDefault("tcp.eolByte", 0); private int eolInt = JMeterUtils.getPropDefault("tcp.eolByte", 1000);
private byte eolByte = (byte) eolInt; // -128 to +127
private boolean eolIgnore = eolInt < -128 || eolInt > 127;
public TCPClientImpl() { public TCPClientImpl() {
super(); super();
if (!eolIgnore) {
log.info("Using eolByte=" + eolByte); log.info("Using eolByte=" + eolByte);
} }
}
/* /*
* (non-Javadoc) * (non-Javadoc)
@ -116,7 +122,7 @@ public class TCPClientImpl implements TCPClient {
try { try {
while ((x = is.read(buffer)) > -1) { while ((x = is.read(buffer)) > -1) {
w.write(buffer, 0, x); w.write(buffer, 0, x);
if ((eolByte != 0) && (buffer[x - 1] == eolByte)) { if (!eolIgnore && (buffer[x - 1] == eolByte)) {
break; break;
} }
} }
@ -160,5 +166,6 @@ public class TCPClientImpl implements TCPClient {
*/ */
public void setEolByte(byte eolByte) { public void setEolByte(byte eolByte) {
this.eolByte = eolByte; this.eolByte = eolByte;
eolIgnore = false;
} }
} }

View File

@ -93,6 +93,9 @@ To revert to earlier behaviour, comment or change the properties classfinder.fun
<li>The reference value parameter for intSum() is now optional. <li>The reference value parameter for intSum() is now optional.
As a consequence, if a variable name is used, it must not be a valid integer.</li> As a consequence, if a variable name is used, it must not be a valid integer.</li>
<li>The ant-jmeter.jar is no longer shipped with JMeter. See extras/build.xml for how to aquire it.</li> <li>The ant-jmeter.jar is no longer shipped with JMeter. See extras/build.xml for how to aquire it.</li>
<li>The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special.
To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
</li>
</ul> </ul>
<h4>Bug fixes</h4> <h4>Bug fixes</h4>
@ -162,6 +165,9 @@ As a special case, if the HTTP Sampler path starts with "http://" or "https://"
<li>Added TESTSTART.MS property / variable = test start time in milliseconds</li> <li>Added TESTSTART.MS property / variable = test start time in milliseconds</li>
<li>Add POP3S and IMAPS protocols to Mail Reader Sampler.</li> <li>Add POP3S and IMAPS protocols to Mail Reader Sampler.</li>
<li>Mail Reader Sampler now creates a sub-sample for each mail.</li> <li>Mail Reader Sampler now creates a sub-sample for each mail.</li>
<li>The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special.
To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
</li>
</ul> </ul>
<h4>Non-functional changes</h4> <h4>Non-functional changes</h4>

View File

@ -971,7 +971,10 @@ Currently the only way to changes these is via the SampleResponse methods:
<li>tcp.status.suffix - text that follows a status number</li> <li>tcp.status.suffix - text that follows a status number</li>
<li>tcp.status.properties - name of property file to convert status codes to messages</li> <li>tcp.status.properties - name of property file to convert status codes to messages</li>
<li>tcp.handler - Name of TCP Handler class (default TCPClientImpl)</li> <li>tcp.handler - Name of TCP Handler class (default TCPClientImpl)</li>
<li>tcp.eolByte - decimal value. Defines the end of line byte value; used to determine when a response has been received</li> <li>tcp.eolByte - decimal value. Defines the end of line byte value; used to determine when a response has been received.
JMeter 2.3.1 and earlier used the value zero (0) to mean don't check for EOL bytes; later versions
skip the EOL check if the value is outside the range -128 to +127 (inclusive). Thus zero can now be used as an EOL byte.
</li>
</ul> </ul>
The class that handles the connection is defined by the property tcp.handler. The class that handles the connection is defined by the property tcp.handler.
If not found, the class is then searched for in the package org.apache.jmeter.protocol.tcp.sampler. If not found, the class is then searched for in the package org.apache.jmeter.protocol.tcp.sampler.