Author: stocco
Date: Mon Oct 4 13:36:24 2004
New Revision: 53745
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/DefaultFilterData.java
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/ResponseWrapper.java
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/TestRecorderFilter.java
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Constants.java
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Logger.java
Log:
Changes to test recorder submitted on behalf of Patrick Osborne.
netui drt/checkin tests: PASS
Code Reviewed By E. O'Neil on email thread
Comments from P. Osborne
"* The Test Recorder (TR) had a bug where, in some cases, during record and/or
playback the html captured by the TR did not match the html returned to the
browser by the container. The bug was encountered in some usages of the
jsp:forward tag in a jsp page, where the container desired to reset the jsp
writer buffer. The fix consists of implementing the reset() and resetBuffer()
methods in the ResponseWrapper to reset the TR output buffer when requested.
* Fixed a bug where in some cases the test recorder test links were not
properly produced.
* Modified the string representation of exceptions during logging:
included exception messages and stack traces of nested exceptions.
* Added some debugging around request data - request params, headers, post
params, etc."
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/DefaultFilterData.java
==============================================================================
---
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/DefaultFilterData.java
(original)
+++
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/DefaultFilterData.java
Mon Oct 4 13:36:24 2004
@@ -94,6 +94,9 @@
// capture request data, this may not be necessary if we aren't
recording or playing back.
reqData = RequestData.populate( (HttpServletRequest) request, new
RequestData() );
+ if ( log.isDebugEnabled() ) {
+ log.debug( "request data( " + reqData + " )" );
+ }
}
protected void testForTestId( ServletRequest request ) {
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/ResponseWrapper.java
==============================================================================
---
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/ResponseWrapper.java
(original)
+++
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/ResponseWrapper.java
Mon Oct 4 13:36:24 2004
@@ -39,7 +39,7 @@
private ByteArrayOutputStream output;
private PrintWriter writer;
private ServletOutputStream servletStream;
- private int statusCode = 200;
+ private int statusCode = SC_OK;
private String reason = "";
private String outputString = null;
@@ -98,6 +98,29 @@
if ( log.isDebugEnabled() ) {
log.debug( "setStatus() done" );
}
+ }
+
+ public void reset() {
+ if ( log.isDebugEnabled() ) {
+ log.debug( "reset()" );
+ }
+ if ( isCommitted() ) {
+ throw new IllegalStateException( "response is already commited,
reset not allowed" );
+ }
+ output.reset();
+ statusCode = SC_OK;
+ super.reset();
+ }
+
+ public void resetBuffer() {
+ if ( log.isDebugEnabled() ) {
+ log.debug( "resetBuffer()" );
+ }
+ if ( isCommitted() ) {
+ throw new IllegalStateException( "response is already commited,
reset buffer not allowed" );
+ }
+ output.reset();
+ super.resetBuffer();
}
// package scoped
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/TestRecorderFilter.java
==============================================================================
---
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/TestRecorderFilter.java
(original)
+++
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/server/TestRecorderFilter.java
Mon Oct 4 13:36:24 2004
@@ -452,6 +452,9 @@
if ( addLink ) {
int index = body.lastIndexOf( Constants.BODY_END );
if ( index == -1 ) {
+ index = body.lastIndexOf( Constants.BODY_END_CAPS );
+ }
+ if ( index == -1 ) {
if ( log.isDebugEnabled() ) {
log.debug( "</body> was not found:\nbody(" + body +
")" );
}
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Constants.java
==============================================================================
---
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Constants.java
(original)
+++
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Constants.java
Mon Oct 4 13:36:24 2004
@@ -61,6 +61,7 @@
public static final String REQUEST_NEW_EXCEPTION_MARKER_ATTRIBUTE =
"testRecorder.request.marked.exception.new";
public static final String STATE_STORAGE_KEY = "testRecorder.state.";
public static final String BODY_END = "</body>";
+ public static final String BODY_END_CAPS = "</BODY>";
public static final String NL = "\n";
public static final String EMPTY_STRING = "";
// 'cmd' values
Modified:
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Logger.java
==============================================================================
---
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Logger.java
(original)
+++
incubator/beehive/trunk/netui/test/src/testRecorder/org/apache/beehive/netui/tools/testrecorder/shared/Logger.java
Mon Oct 4 13:36:24 2004
@@ -145,12 +145,28 @@
}
}
- public static String format( Object m, Throwable t ) {
+ public static String format( final Object obj, final Throwable t ) {
if ( t == null ) {
- return m.toString();
+ return obj.toString();
+ }
+ Throwable ex = t;
+ StringBuffer sb = new StringBuffer( 512 );
+ sb.append( "object( " + obj + " )\n" );
+ while ( ex != null ) {
+ sb.append( format( ex ) + "\n");
+ ex = ex.getCause();
+ }
+ return sb.toString();
+ }
+
+ public static String format( Throwable t ) {
+ if ( t == null ) {
+ return "NULL";
}
StringWriter sw = new StringWriter();
t.printStackTrace( new PrintWriter( sw ) );
- return m + "\n\n" + "Throwable: " + t.toString() + "\nStack Trace:\n"
+ sw.toString();
+ return "throwable: msg( " + t.getMessage() + " )\ntoString( " +
t.toString() +
+ " )\nstack trace:\n" + sw.toString();
}
+
}