craigmcc 01/08/14 17:57:09 Modified: tester build.xml tester/src/bin tester.xml tester/src/tester/org/apache/tester Session01.java Session03.java Added: tester/src/tester/org/apache/tester/unpshared UnpSharedSessionBean.java Log: Add unit tests to make sure we can load both classes and resources from $CATALINA_HOME/lib/*.jar and $CATALINA_HOME/classes. Previously, we were only testing the case of classes from $CATALINA_HOME/lib. Not yet tested on Windows ... that's next. Revision Changes Path 1.13 +16 -0 jakarta-tomcat-4.0/tester/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/tester/build.xml,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- build.xml 2001/06/23 00:28:33 1.12 +++ build.xml 2001/08/15 00:57:08 1.13 @@ -75,8 +75,16 @@ tofile="${tester.build}/web/WEB-INF/classes/org/apache/tester/unshared/UnsharedSessionBean.class"/> <copy file="src/tester/org/apache/tester/Resources01.txt" tofile="${tester.build}/web/WEB-INF/classes/org/apache/tester/Unpacked01.txt"/> + <copy file="src/tester/org/apache/tester/Resources01.txt" + tofile="${tester.build}/classes/org/apache/tester/shared/Shared01.txt"/> + <copy file="src/tester/org/apache/tester/Resources01.txt" + tofile="${tester.build}/classes/org/apache/tester/unpshared/UnpShared01.txt"/> <copy file="src/tester/org/apache/tester/Resources03.txt" tofile="${tester.build}/web/WEB-INF/classes/org/apache/tester/Unpacked03.txt"/> + <copy file="src/tester/org/apache/tester/Resources03.txt" + tofile="${tester.build}/classes/org/apache/tester/shared/Shared03.txt"/> + <copy file="src/tester/org/apache/tester/Resources03.txt" + tofile="${tester.build}/classes/org/apache/tester/unpshared/UnpShared03.txt"/> <copy file="src/tester/org/apache/tester/Resources05.txt" tofile="${tester.build}/web/WEB-INF/classes/org/apache/tester/Unpacked05.txt"/> @@ -141,6 +149,14 @@ <fixcrlf srcdir="${tester.deploy}/bin" includes="*.sh" cr="remove"/> <fixcrlf srcdir="${tester.deploy}/bin" includes="*.bat" cr="add"/> <chmod perm="+x" file="${tester.deploy}/bin/tester.sh"/> + + <!-- Unpacked Shared Classes --> + <mkdir dir="${tester.deploy}/classes"/> + <copy todir="${tester.deploy}/classes"> + <fileset dir="${tester.build}/classes"> + <include name="**/unpshared/*"/> + </fileset> + </copy> <!-- Shared Library --> <mkdir dir="${tester.deploy}/lib"/> 1.64 +30 -0 jakarta-tomcat-4.0/tester/src/bin/tester.xml Index: tester.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/bin/tester.xml,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- tester.xml 2001/07/25 04:27:11 1.63 +++ tester.xml 2001/08/15 00:57:08 1.64 @@ -875,6 +875,16 @@ request="${context.path}/Resources01?mode=class&path=/org/apache/tester/Unpacked01.txt" outContent="Resources01 PASSED"/> + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources01?mode=class&path=/org/apache/tester/shared/Shared01.txt" + outContent="Resources01 PASSED"/> + + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources01?mode=class&path=/org/apache/tester/unpshared/UnpShared01.txt" + outContent="Resources01 PASSED"/> + <!-- ========== Negative ServletContext.getResource() Tests =========== --> <tester host="${host}" port="${port}" protocol="${protocol}" @@ -904,6 +914,16 @@ request="${context.path}/Resources02?mode=class&path=/org/apache/tester/Unpacked02.txt.bad" outContent="Resources02 PASSED"/> + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources02?mode=class&path=/org/apache/tester/shared/Shared01.txt.bad" + outContent="Resources02 PASSED"/> + + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources02?mode=class&path=/org/apache/tester/unpshared/UnpShared01.txt.bad" + outContent="Resources02 PASSED"/> + <!-- ========== Positive ServletContext.getResourceAsStream() Tests === --> <tester host="${host}" port="${port}" protocol="${protocol}" @@ -931,6 +951,16 @@ <tester host="${host}" port="${port}" protocol="${protocol}" debug="${debug}" request="${context.path}/Resources03?mode=class&path=/org/apache/tester/Unpacked03.txt" + outContent="Resources03 PASSED"/> + + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources03?mode=class&path=/org/apache/tester/shared/Shared03.txt" + outContent="Resources03 PASSED"/> + + <tester host="${host}" port="${port}" protocol="${protocol}" + debug="${debug}" + request="${context.path}/Resources03?mode=class&path=/org/apache/tester/unpshared/UnpShared03.txt" outContent="Resources03 PASSED"/> <!-- ========== Negative ServletContext.getResourceAsStream() Tests === --> 1.4 +6 -2 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Session01.java Index: Session01.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Session01.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Session01.java 2001/06/22 21:57:08 1.3 +++ Session01.java 2001/08/15 00:57:09 1.4 @@ -62,6 +62,7 @@ import javax.servlet.*; import javax.servlet.http.*; import org.apache.tester.shared.SharedSessionBean; +import org.apache.tester.unpshared.UnpSharedSessionBean; import org.apache.tester.unshared.UnsharedSessionBean; @@ -71,7 +72,7 @@ * calling setAttribute("name", null) acts like removeAttribute(). * * @author Craig R. McClanahan - * @version $Revision: 1.3 $ $Date: 2001/06/22 21:57:08 $ + * @version $Revision: 1.4 $ $Date: 2001/08/15 00:57:09 $ */ public class Session01 extends HttpServlet { @@ -144,11 +145,14 @@ } } - // Create two more beans that will be used to test application restart + // Create more beans that will be used to test application restart if (ok) { SharedSessionBean ssb = new SharedSessionBean(); ssb.setStringProperty("Session01"); session.setAttribute("sharedSessionBean", ssb); + UnpSharedSessionBean ussb = new UnpSharedSessionBean(); + ussb.setStringProperty("Session01"); + session.setAttribute("unpSharedSessionBean", ussb); UnsharedSessionBean usb = new UnsharedSessionBean(); usb.setStringProperty("Session01"); session.setAttribute("unsharedSessionBean", usb); 1.4 +32 -1 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Session03.java Index: Session03.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Session03.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Session03.java 2001/06/22 21:57:08 1.3 +++ Session03.java 2001/08/15 00:57:09 1.4 @@ -62,6 +62,7 @@ import javax.servlet.*; import javax.servlet.http.*; import org.apache.tester.shared.SharedSessionBean; +import org.apache.tester.unpshared.UnpSharedSessionBean; import org.apache.tester.unshared.UnsharedSessionBean; @@ -71,7 +72,7 @@ * Then, it removes that attribute and verifies successful removal. * * @author Craig R. McClanahan - * @version $Revision: 1.3 $ $Date: 2001/06/22 21:57:08 $ + * @version $Revision: 1.4 $ $Date: 2001/08/15 00:57:09 $ */ public class Session03 extends HttpServlet { @@ -154,6 +155,36 @@ String lifecycle = ssb.getLifecycle(); if (!"/vb/swp/sda/vu".equals(lifecycle)) { writer.println("Session03 FAILED - Shared lifecycle =" + + lifecycle); + ok = false; + } + } + } + } + + // Retrieve and validate the unpacked shared session bean + UnpSharedSessionBean ussb = null; + if (ok) { + Object object = session.getAttribute("unpSharedSessionBean"); + if (object == null) { + writer.println("Session03 FAILED - Cannot retrieve ussb"); + ok = false; + } else if (!(object instanceof UnpSharedSessionBean)) { + writer.println("Session03 FAILED - unpShared attribute class " + + object.getClass().getName()); + ok = false; + } else { + ussb = (UnpSharedSessionBean) object; + String value = ussb.getStringProperty(); + if (!"Session01".equals(value)) { + writer.println("Session03 FAILED - unpShared property =" + + value); + ok = false; + } else { + session.removeAttribute("unpSharedSessionBean"); + String lifecycle = ssb.getLifecycle(); + if (!"/vb/swp/sda/vu".equals(lifecycle)) { + writer.println("Session03 FAILED - unpShared lifecycle =" + lifecycle); ok = false; } 1.1 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/unpshared/UnpSharedSessionBean.java Index: UnpSharedSessionBean.java =================================================================== /* ========================================================================= * * * * The Apache Software License, Version 1.1 * * * * Copyright (c) 1999, 2000 The Apache Software Foundation. * * All rights reserved. * * * * ========================================================================= * * * * Redistribution and use in source and binary forms, with or without modi- * * fication, are permitted provided that the following conditions are met: * * * * 1. Redistributions of source code must retain the above copyright notice * * notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above copyright * * notice, this list of conditions and the following disclaimer in the * * documentation and/or other materials provided with the distribution. * * * * 3. The end-user documentation included with the redistribution, if any, * * must include the following acknowlegement: * * * * "This product includes software developed by the Apache Software * * Foundation <http://www.apache.org/>." * * * * Alternately, this acknowlegement may appear in the software itself, if * * and wherever such third-party acknowlegements normally appear. * * * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * * Foundation" must not be used to endorse or promote products derived * * from this software without prior written permission. For written * * permission, please contact <[EMAIL PROTECTED]>. * * * * 5. Products derived from this software may not be called "Apache" nor may * * "Apache" appear in their names without prior written permission of the * * Apache Software Foundation. * * * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES * * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * * POSSIBILITY OF SUCH DAMAGE. * * * * ========================================================================= * * * * This software consists of voluntary contributions made by many indivi- * * duals on behalf of the Apache Software Foundation. For more information * * on the Apache Software Foundation, please see <http://www.apache.org/>. * * * * ========================================================================= */ package org.apache.tester.unpshared; import java.io.Serializable; import java.sql.Date; import javax.servlet.http.HttpSessionActivationListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; import javax.servlet.http.HttpSessionEvent; /** * Simple JavaBean to use for session attribute tests. It is Serializable * so that instances can be saved and restored across server restarts. * <p> * This is functionally equivalent to <code>SessionBean</code>, but stored * in a different package so that it gets deployed unpacked under * <code>$CATALINA_HOME/classes</code>. * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2001/08/15 00:57:09 $ */ public class UnpSharedSessionBean implements HttpSessionActivationListener, HttpSessionBindingListener, Serializable { // ------------------------------------------------------------- Properties /** * A date property for use with property editor tests. */ protected Date dateProperty = new Date(System.currentTimeMillis()); public Date getDateProperty() { return (this.dateProperty); } public void setDateProperty(Date dateProperty) { this.dateProperty = dateProperty; } /** * The lifecycle events that have happened on this bean instance. */ protected String lifecycle = ""; public String getLifecycle() { return (this.lifecycle); } public void setLifecycle(String lifecycle) { this.lifecycle = lifecycle; } /** * A string property. */ protected String stringProperty = "Default String Property Value"; public String getStringProperty() { return (this.stringProperty); } public void setStringProperty(String stringProperty) { this.stringProperty = stringProperty; } // --------------------------------------------------------- Public Methods /** * Return a string representation of this bean. */ public String toString() { StringBuffer sb = new StringBuffer("SharedSessionBean[lifecycle="); sb.append(this.lifecycle); sb.append(",dateProperty="); sb.append(dateProperty); sb.append(",stringProperty="); sb.append(this.stringProperty); sb.append("]"); return (sb.toString()); } // ---------------------------------- HttpSessionActivationListener Methods /** * Receive notification that this session was activated. * * @param event The session event that has occurred */ public void sessionDidActivate(HttpSessionEvent event) { lifecycle += "/sda"; } /** * Receive notification that this session will be passivated. * * @param event The session event that has occurred */ public void sessionWillPassivate(HttpSessionEvent event) { lifecycle += "/swp"; } // ------------------------------------- HttpSessionBindingListener Methods /** * Receive notification that this attribute has been bound. * * @param event The session event that has occurred */ public void valueBound(HttpSessionBindingEvent event) { lifecycle += "/vb"; } /** * Receive notification that this attribute has been unbound. * * @param event The session event that has occurred */ public void valueUnbound(HttpSessionBindingEvent event) { lifecycle += "/vu"; } }