Skip to content

Commit

Permalink
Do not fail when tests when cross context not supported (as it is not…
Browse files Browse the repository at this point in the history
… mandatory per spec) (#553)

* do not fail test when cross context is not supported (servletContext.getContext returning null)
* add a sys property to define if cross context is supported or not

---------

Signed-off-by: Olivier Lamy <olamy@apache.org>
  • Loading branch information
olamy committed Nov 22, 2023
1 parent 8735382 commit 574812e
Show file tree
Hide file tree
Showing 8 changed files with 451 additions and 235 deletions.
45 changes: 45 additions & 0 deletions tck/README.md
@@ -0,0 +1,45 @@
# Jakarta Servlet

This repository contains the code for Jakarta Servle TCK

About Jakarta Servlet TCK
-------------------------
Jakarta Servlet TCK defines a server-side API for handling HTTP requests and is based on Junit5 and Arquillian.

Building
--------
Prerequisites:

* JDK 11+
* Maven 3.9.0+

Run the build:

`mvn install`

Running TCK
------------
You need to configure your Apache Maven build to run tests from the tck artifacts.
This will be achieved by adding a dependency within your surefire configuration
```xml
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>tck-runtime</artifactId>
</dependency>
</dependencies>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<dependenciesToScan>
<dependenciesToScan>jakarta.servlet:tck-runtime</dependenciesToScan>
</dependenciesToScan>
<systemProperties>
<!-- if the servlet container doesn't support optional cross context -->
<servlet.tck.support.crossContext>false</servlet.tck.support.crossContext>
</systemProperties>
</configuration>
</plugin>
```
Expand Up @@ -21,11 +21,13 @@

import java.io.IOException;

import jakarta.servlet.ServletContext;
import servlet.tck.common.servlets.GenericTCKServlet;

import jakarta.servlet.AsyncContext;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import servlet.tck.common.util.ServletTestUtil;

public class DispatchTestServlet extends GenericTCKServlet {

Expand Down Expand Up @@ -156,9 +158,12 @@ public void dispatchReturnTest4(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
ServletContext context = request.getServletContext().getContext(getDispatcher1ContextRoot());
if (context!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(context,"/DispatchTests10?testname=dispatchTest10");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -176,9 +181,12 @@ public void dispatchReturnTest5(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT ) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand Down Expand Up @@ -584,9 +592,12 @@ public void startAsyncAgainTest12(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests11?testname=dispatchTest11");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests11?testname=dispatchTest11");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -604,9 +615,12 @@ public void startAsyncAgainTest13(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests12?testname=dispatchTest12");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests12?testname=dispatchTest12");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -624,9 +638,12 @@ public void startAsyncAgainTest14(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests13?testname=dispatchTest13");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests13?testname=dispatchTest13");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -644,9 +661,12 @@ public void startAsyncAgainTest15(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests14?testname=dispatchTest14");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests14?testname=dispatchTest14");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -664,9 +684,12 @@ public void startAsyncAgainTest16(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests15?testname=dispatchTest15");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null|| ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests15?testname=dispatchTest15");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -684,9 +707,12 @@ public void startAsyncAgainTest17(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests16?testname=dispatchTest16");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests16?testname=dispatchTest16");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand Down Expand Up @@ -847,22 +873,25 @@ public void negativeDispatchTest8(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch(
request.getServletContext()
.getContext(getDispatcher1ContextRoot()),
"/DispatchTests19?testname=dispatchTest19");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch() called again");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch(
request.getServletContext()
.getContext(getDispatcher1ContextRoot()),
"/DispatchTests19?testname=dispatchTest19");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch() called again");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
}
} else {
ac.complete();
}
}

Expand All @@ -879,22 +908,25 @@ public void negativeDispatchTest9(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch(
request.getServletContext()
.getContext(getDispatcher1ContextRoot()),
"/DispatchTests19?testname=dispatchTest19");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch() called again");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch(
request.getServletContext()
.getContext(getDispatcher1ContextRoot()),
"/DispatchTests19?testname=dispatchTest19");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch() called again");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
}
} else {
ac.complete();
}
}

Expand All @@ -912,19 +944,22 @@ public void negativeDispatchTest12(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch("/DispatchTests?testname=dispatchTest");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch(URI) called again");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch("/DispatchTests?testname=dispatchTest");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch(URI) called again");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
}
} else {
ac.complete();
}
}

Expand All @@ -942,19 +977,22 @@ public void negativeDispatchTest13(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch("/DispatchTests?testname=dispatchTest");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch(URI) called again");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
.println("dispatch return=" + System.currentTimeMillis());

try {
response.getWriter().println("dispatch again");
ac.dispatch("/DispatchTests?testname=dispatchTest");
} catch (IllegalStateException ex) {
response.getWriter().println("dispatch(URI) called again");
response.getWriter()
.println("Expected IllegalStateException thrown" + ex.getMessage());
}
} else {
ac.complete();
}
}

Expand Down Expand Up @@ -1087,9 +1125,12 @@ public void dispatchAfterCommitTest4(ServletRequest request,
AsyncContext ac = request.startAsync();
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand All @@ -1110,9 +1151,12 @@ public void dispatchAfterCommitTest5(ServletRequest request,
AsyncContext ac = request.startAsync(request, response);
response.getWriter()
.println("Before dispatch=" + System.currentTimeMillis());
ac.dispatch(
request.getServletContext().getContext(getDispatcher1ContextRoot()),
"/DispatchTests10?testname=dispatchTest10");
ServletContext servletContext = request.getServletContext().getContext(getDispatcher1ContextRoot());
if(servletContext!=null || ServletTestUtil.SUPPORT_CROSS_CONTEXT) {
ac.dispatch(servletContext, "/DispatchTests10?testname=dispatchTest10");
} else {
ac.complete();
}
response.getWriter()
.println("dispatch return=" + System.currentTimeMillis());
}
Expand Down

0 comments on commit 574812e

Please sign in to comment.