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
|
is not None
|
||||||
), 'file created'
|
), '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