Tests: added Java threading tests.
This commit is contained in:
32
test/java/threads/app.java
Normal file
32
test/java/threads/app.java
Normal file
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user