You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2001/08/15 02:57:09 UTC
cvs commit: jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/unpshared UnpSharedSessionBean.java
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 <ap...@apache.org>. *
* *
* 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";
}
}