Author: costin
Date: Thu Jun 25 15:16:44 2009
New Revision: 788385
URL: http://svn.apache.org/viewvc?rev=788385&view=rev
Log:
Adjusting the tests
Added:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java
(with props)
Removed:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteNoConnectorTest.java
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteTestHelper.java
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteWatchdogServletTests.java
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/PropertiesSpiTest.java
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteSimpleTest.java
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/GTest.java
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
Added: tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java?rev=788385&view=auto
==============================================================================
--- tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java
(added)
+++ tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java
Thu Jun 25 15:16:44 2009
@@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.lite;
+
+import java.io.ByteArrayOutputStream;
+
+import org.apache.tomcat.util.res.StringManager;
+
+/**
+ * Tables useful when converting byte arrays to and from strings of hexadecimal
+ * digits.
+ * Code from Ajp11, from Apache's JServ.
+ *
+ * @author Craig R. McClanahan
+ */
+
+public final class HexDump {
+
+
+ // -------------------------------------------------------------- Constants
+ static StringManager sm;
+
+ /**
+ * Table for HEX to DEC byte translation.
+ */
+ public static final int[] DEC = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 00, 01, 02, 03, 04, 05, 06, 07, 8, 9, -1, -1, -1, -1, -1, -1,
+ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ };
+
+
+ /**
+ * Table for DEC to HEX byte translation.
+ */
+ public static final byte[] HEX =
+ { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5',
+ (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b',
+ (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' };
+
+
+ // --------------------------------------------------------- Static Methods
+
+
+ /**
+ * Convert a String of hexadecimal digits into the corresponding
+ * byte array by encoding each two hexadecimal digits as a byte.
+ *
+ * @param digits Hexadecimal digits representation
+ *
+ * @exception IllegalArgumentException if an invalid hexadecimal digit
+ * is found, or the input string contains an odd number of hexadecimal
+ * digits
+ */
+ public static byte[] convert(String digits) {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ for (int i = 0; i < digits.length(); i += 2) {
+ char c1 = digits.charAt(i);
+ if ((i+1) >= digits.length())
+ throw new IllegalArgumentException
+ (sm.getString("hexUtil.odd"));
+ char c2 = digits.charAt(i + 1);
+ byte b = 0;
+ if ((c1 >= '0') && (c1 <= '9'))
+ b += ((c1 - '0') * 16);
+ else if ((c1 >= 'a') && (c1 <= 'f'))
+ b += ((c1 - 'a' + 10) * 16);
+ else if ((c1 >= 'A') && (c1 <= 'F'))
+ b += ((c1 - 'A' + 10) * 16);
+ else
+ throw new IllegalArgumentException
+ (sm.getString("hexUtil.bad"));
+ if ((c2 >= '0') && (c2 <= '9'))
+ b += (c2 - '0');
+ else if ((c2 >= 'a') && (c2 <= 'f'))
+ b += (c2 - 'a' + 10);
+ else if ((c2 >= 'A') && (c2 <= 'F'))
+ b += (c2 - 'A' + 10);
+ else
+ throw new IllegalArgumentException
+ (sm.getString("hexUtil.bad"));
+ baos.write(b);
+ }
+ return (baos.toByteArray());
+
+ }
+
+
+ /**
+ * Convert a byte array into a printable format containing a
+ * String of hexadecimal digit characters (two per byte).
+ *
+ * @param bytes Byte array representation
+ */
+ public static String convert(byte bytes[]) {
+
+ StringBuffer sb = new StringBuffer(bytes.length * 2);
+ for (int i = 0; i < bytes.length; i++) {
+ sb.append(convertDigit((bytes[i] >> 4)));
+ sb.append(convertDigit((bytes[i] & 0x0f)));
+ }
+ return (sb.toString());
+
+ }
+
+
+ /**
+ * Convert 4 hex digits to an int, and return the number of converted
+ * bytes.
+ *
+ * @param hex Byte array containing exactly four hexadecimal digits
+ *
+ * @exception IllegalArgumentException if an invalid hexadecimal digit
+ * is included
+ */
+ public static int convert2Int( byte[] hex ) {
+ // Code from Ajp11, from Apache's JServ
+
+ // assert b.length==4
+ // assert valid data
+ int len;
+ if(hex.length < 4 ) return 0;
+ if( DEC[hex[0]]<0 )
+ throw new IllegalArgumentException(sm.getString("hexUtil.bad"));
+ len = DEC[hex[0]];
+ len = len << 4;
+ if( DEC[hex[1]]<0 )
+ throw new IllegalArgumentException(sm.getString("hexUtil.bad"));
+ len += DEC[hex[1]];
+ len = len << 4;
+ if( DEC[hex[2]]<0 )
+ throw new IllegalArgumentException(sm.getString("hexUtil.bad"));
+ len += DEC[hex[2]];
+ len = len << 4;
+ if( DEC[hex[3]]<0 )
+ throw new IllegalArgumentException(sm.getString("hexUtil.bad"));
+ len += DEC[hex[3]];
+ return len;
+ }
+
+
+
+ /**
+ * Provide a mechanism for ensuring this class is loaded.
+ */
+ public static void load() {
+ // Nothing to do
+ }
+
+ /**
+ * [Private] Convert the specified value (0 .. 15) to the corresponding
+ * hexadecimal digit.
+ *
+ * @param value Value to be converted
+ */
+ private static char convertDigit(int value) {
+
+ value &= 0x0f;
+ if (value >= 10)
+ return ((char) (value - 10 + 'a'));
+ else
+ return ((char) (value + '0'));
+
+ }
+
+ /**
+ * <code>getHexValue</code> displays a formatted hex
+ * representation of the passed byte array. It also
+ * allows for only a specified offset and length of
+ * a particular array to be returned.
+ *
+ * @param bytes <code>byte[]</code> array to process.
+ * @param pos offset to begin processing.
+ * @param len number of bytes to process.
+ * @return <code>String</code> formatted hex representation of processed
+ * array.
+ */
+ public static String getHexDump(byte[] bytes, int pos, int len,
+ boolean displayOffset) {
+ StringBuffer out = new StringBuffer( len * 2 );
+
+ for (int j = 0; j < len; j += 16) {
+ hexLine(out, bytes, pos + j, pos + len, displayOffset);
+ }
+
+ return out.toString();
+ }
+
+ private static void hexLine(StringBuffer out,
+ byte[] bytes, int start, int end,
+ boolean displayOffset) {
+
+ if ( displayOffset ) {
+ out.append(convertDigit((int) (start >> 12)));
+ out.append(convertDigit((int) (start >> 8)));
+ out.append(convertDigit((int) (start >> 4)));
+ out.append(convertDigit(start & 0x0F));
+ out.append(": ");
+ }
+ for (int i = start; i < start + 16; i++) {
+
+ if (i < end) {
+ out.append(convertDigit((int) (bytes[i] >> 4)));
+ out.append(convertDigit(bytes[i] & 0x0F));
+ out.append(" ");
+ } else {
+ out.append(" ");
+ }
+ }
+
+ out.append(" | ");
+
+ for (int i = start; i < start + 16 && i < end; i++) {
+ if( ! Character.isISOControl( (char)bytes[i] )) {
+ out.append( new Character((char)bytes[i]) );
+ } else {
+ out.append( "." );
+ }
+ }
+
+ out.append("\n");
+ }
+}
Propchange:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/HexDump.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteTestHelper.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteTestHelper.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteTestHelper.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteTestHelper.java
Thu Jun 25 15:16:44 2009
@@ -15,26 +15,29 @@
import org.apache.coyote.OutputBuffer;
import org.apache.coyote.Response;
-import org.apache.tomcat.lite.coyote.CoyoteHttp;
+import org.apache.tomcat.lite.coyote.CoyoteConnector;
import org.apache.tomcat.util.buf.ByteChunk;
public class LiteTestHelper {
- public static void initServletsAndRun(TomcatLite lite, int port) throws
ServletException, IOException {
+ public static void addContext(TomcatLite lite) throws ServletException {
ServletContextImpl ctx =
- (ServletContextImpl) lite.addServletContext(null, null, "/test1");
-
- ctx.addServlet("test", new SimpleServlet());
- ctx.addMapping("/1stTest", "test");
-
- ctx.addServlet("testException", new HttpServlet() {
- public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
- throw new NullPointerException();
- }
- });
- ctx.addMapping("/testException", "testException");
-
+ (ServletContextImpl) lite.addServletContext(null, null, "/test1");
+
+ ctx.addServlet("test", new SimpleServlet());
+ ctx.addMapping("/1stTest", "test");
+
+ ctx.addServlet("testException", new HttpServlet() {
+ public void doGet(HttpServletRequest req, HttpServletResponse
res)
+ throws IOException {
+ throw new NullPointerException();
+ }
+ });
+ ctx.addMapping("/testException", "testException");
+ }
+
+ public static void initServletsAndRun(TomcatLite lite, int port) throws
ServletException, IOException {
+ addContext(lite);
lite.init();
lite.start();
@@ -54,9 +57,9 @@
public static void addConnector(TomcatLite lite,
int port, boolean daemon) {
- CoyoteHttp coyoteAdapter = (CoyoteHttp) lite.getConnector();
- coyoteAdapter.getConnectors().setPort(port);
- coyoteAdapter.getConnectors().setDaemon(daemon);
+ CoyoteConnector coyoteAdapter = (CoyoteConnector) lite.getConnector();
+ coyoteAdapter.setPort(port);
+ coyoteAdapter.setDaemon(daemon);
}
/**
@@ -79,29 +82,7 @@
}
return out;
}
-
- /**
- * Create a ServletRequestImpl object that can be used with
- * TomcatLite.service(request).
- *
- * All output will be added to the ByteChunk out.
- *
- * This requires no HTTP connector.
- *
- * @see TomcatLiteNoConnector
- */
- public static ServletRequestImpl createMessage(TomcatLite lite,
- String uri,
- final ByteChunk out) {
- ServletRequestImpl req = lite.createMessage();
- req.setRequestURI(uri);
- ServletResponseImpl res = req.getResponse();
- res.getCoyoteResponse().setOutputBuffer(
- new ByteChunkOutputBuffer(out));
- return req;
- }
-
static class ByteChunkOutputBuffer implements OutputBuffer {
protected ByteChunk output = null;
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteWatchdogServletTests.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteWatchdogServletTests.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteWatchdogServletTests.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/LiteWatchdogServletTests.java
Thu Jun 25 15:16:44 2009
@@ -61,6 +61,10 @@
}
}
+ protected void addConnector(TomcatLite liteServer) {
+ LiteTestHelper.addConnector(liteServer, 8080, true);
+ }
+
public void initServerWithWatchdog(String wdDir) throws ServletException,
IOException {
@@ -70,7 +74,7 @@
//connector.addAdapter("/", new MapperAdapter());
TomcatLite liteServer = new TomcatLite();
- LiteTestHelper.addConnector(liteServer, 8080, true);
+ addConnector(liteServer);
liteServer.init("webapps/ROOT", "/");
for (String s : new String[] {
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/PropertiesSpiTest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/PropertiesSpiTest.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/PropertiesSpiTest.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/PropertiesSpiTest.java
Thu Jun 25 15:16:44 2009
@@ -23,9 +23,9 @@
}
public void testArgs() throws IOException {
- Properties res = new Properties();
- SimpleObjectManager.processArgs(new String[] {
- "-a=1", "-b", "2"}, res);
+ spi = new SimpleObjectManager(new String[] {
+ "-a=1", "-b", "2"});
+ Properties res = spi.getProperties();
assertEquals("1", res.get("a"));
assertEquals("2", res.get("b"));
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteSimpleTest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteSimpleTest.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteSimpleTest.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteSimpleTest.java
Thu Jun 25 15:16:44 2009
@@ -22,14 +22,10 @@
public class TomcatLiteSimpleTest extends TestCase {
- TomcatLite lite = new TomcatLite();
-
- void initServer() throws Exception {
- LiteTestHelper.initServletsAndRun(lite, 8804);
- }
+ protected TomcatLite lite = new TomcatLite();
public void setUp() throws Exception {
- initServer();
+ LiteTestHelper.initServletsAndRun(lite, 8804);
}
public void tearDown() throws Exception {
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/GTest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/GTest.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/GTest.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/GTest.java
Thu Jun 25 15:16:44 2009
@@ -35,7 +35,8 @@
import java.util.StringTokenizer;
import java.util.Vector;
-import org.apache.tomcat.util.buf.HexUtils;
+import org.apache.tomcat.lite.HexDump;
+import org.apache.tools.ant.BuildException;
// derived from Jsp
@@ -679,7 +680,9 @@
for ( int i = 0; i < eSize; i++ ) {
if ( headerValues.contains(
unexpectedValues.get( i ) ) ) {
numberFound++;
- headerValues.remove( headerValues.indexOf(
headerFieldName ) );
+ if (headerValues.indexOf(headerFieldName)
>= 0) {
+ headerValues.remove(
headerValues.indexOf( headerFieldName ) );
+ }
}
}
if ( numberFound == eSize ) {
@@ -1044,8 +1047,8 @@
private void dumpHex( byte[] serverResponse, byte[] goldenFile ) {
StringBuffer outBuf = new StringBuffer( ( serverResponse.length +
goldenFile.length ) * 2 );
- String fromServerString = HexUtils.getHexDump( serverResponse, 0,
serverResponse.length, true );
- String fromGoldenFileString = HexUtils.getHexDump( goldenFile, 0,
goldenFile.length, true );
+ String fromServerString = HexDump.getHexDump( serverResponse, 0,
serverResponse.length, true );
+ String fromGoldenFileString = HexDump.getHexDump( goldenFile, 0,
goldenFile.length, true );
outBuf.append( " Hex dump of server response and goldenfile
below.\n\n### RESPONSE FROM SERVER ###\n" );
outBuf.append( "----------------------------\n" );
Modified:
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java?rev=788385&r1=788384&r2=788385&view=diff
==============================================================================
---
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
(original)
+++
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
Thu Jun 25 15:16:44 2009
@@ -46,7 +46,7 @@
// XXX headers are ignored
Socket socket = new Socket( host, port );
-
+
//socket obtained, rebuild the request.
rebuildRequest(client, client.request, socket);
@@ -249,6 +249,8 @@
System.out.println( "Partial read: " + sb.toString() );
ex.printStackTrace();
}
+ input.close();
+ break;
}
}
return sb.toString();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]