diff options
Diffstat (limited to '')
-rw-r--r-- | test/java/threads/app.java | 32 | ||||
-rw-r--r-- | test/test_java_application.py | 41 |
2 files changed, 73 insertions, 0 deletions
diff --git a/test/java/threads/app.java b/test/java/threads/app.java new file mode 100644 index 00000000..d0dd3fcc --- /dev/null +++ b/test/java/threads/app.java @@ -0,0 +1,32 @@ + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet("/") +public class app extends HttpServlet +{ + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException + { + int delay = 0; + + String x_delay = request.getHeader("X-Delay"); + if (x_delay != null) { + delay = Integer.parseInt(x_delay); + } + + try { + Thread.sleep(delay * 1000); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + + response.addHeader("X-Thread", "" + Thread.currentThread().getId()); + } +} diff --git a/test/test_java_application.py b/test/test_java_application.py index efafa6a1..41345e87 100644 --- a/test/test_java_application.py +++ b/test/test_java_application.py @@ -1012,3 +1012,44 @@ class TestJavaApplication(TestApplicationJava): ) is not None ), 'file created' + + def test_java_application_threads(self): + self.load('threads') + + assert 'success' in self.conf( + '4', 'applications/threads/threads' + ), 'configure 4 threads' + + socks = [] + + for i in range(4): + (_, sock) = self.get( + headers={ + 'Host': 'localhost', + 'X-Delay': '2', + 'Connection': 'close', + }, + no_recv=True, + start=True, + ) + + socks.append(sock) + + time.sleep(0.25) # required to avoid greedy request reading + + threads = set() + + for sock in socks: + resp = self.recvall(sock).decode('utf-8') + + self.log_in(resp) + + resp = self._resp_to_dict(resp) + + assert resp['status'] == 200, 'status' + + threads.add(resp['headers']['X-Thread']) + + sock.close() + + assert len(socks) == len(threads), 'threads differs' |