You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2011/11/03 15:40:21 UTC
svn commit: r1197158 - in /tomcat/trunk:
java/org/apache/tomcat/util/net/AbstractEndpoint.java
test/org/apache/catalina/startup/TomcatBaseTest.java
Author: kkolinko
Date: Thu Nov 3 14:40:21 2011
New Revision: 1197158
URL: http://svn.apache.org/viewvc?rev=1197158&view=rev
Log:
Add new attribute to AbstractEndpoint and use it to speed up Tomcat tests.
If the attribute "fastShutdown" is set on the endpoint,
the usual wait of 1 sec during pause() is skipped.
I think it needs to be added to http.xml/ajp.xml docs, but that will be a separate commit sometime later.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1197158&r1=1197157&r2=1197158&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Thu Nov 3 14:40:21 2011
@@ -112,6 +112,23 @@ public abstract class AbstractEndpoint {
// ----------------------------------------------------------------- Properties
+ /**
+ * A flag that can be used to speed up Tomcat shutdown by testing
+ * environments where we control external connections to Tomcat. Set it to
+ * {@code true} if it is known that there are no active or pending
+ * connections and all requests have already been processed. The default
+ * value is {@code false}.
+ */
+ private boolean fastShutdown = false;
+
+ public void setFastShutdown(boolean fastShutdown) {
+ this.fastShutdown = fastShutdown;
+ }
+
+ public boolean isFastShutdown() {
+ return fastShutdown;
+ }
+
private int maxConnections = 10000;
public void setMaxConnections(int maxCon) {
this.maxConnections = maxCon;
@@ -514,6 +531,11 @@ public abstract class AbstractEndpoint {
public void pause() {
if (running && !paused) {
paused = true;
+ if (isFastShutdown()) {
+ // unlockAccept will also be called by stopInternal(),
+ // so when shutting down it can be skipped here.
+ return;
+ }
unlockAccept();
// Heuristic: Sleep for a while to ensure pause of the endpoint
try {
Modified: tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java?rev=1197158&r1=1197157&r2=1197158&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java Thu Nov 3 14:40:21 2011
@@ -200,6 +200,10 @@ public abstract class TomcatBaseTest {
@After
public void tearDown() throws Exception {
+ // Speed up Tomcat shutdown
+ if (tomcat.connector != null) {
+ tomcat.connector.setProperty("fastShutdown", "true");
+ }
// Some tests may call tomcat.destroy(), some tests may just call
// tomcat.stop(), some not call either method. Make sure that stop() &
// destroy() are called as necessary.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org