Tests: added Java threading tests.

This commit is contained in:
Max Romanov
2020-11-05 00:06:13 +03:00
parent 29db46c52b
commit 28f1eb55e7
2 changed files with 73 additions and 0 deletions

View 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());
}
}

View File

@@ -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'