Tests: added Perl threading tests.
This commit is contained in:
11
test/perl/threads/psgi.pl
Normal file
11
test/perl/threads/psgi.pl
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
my $app = sub {
|
||||||
|
my ($environ) = @_;
|
||||||
|
|
||||||
|
sleep int($environ->{'HTTP_X_DELAY'});
|
||||||
|
|
||||||
|
return ['200', [
|
||||||
|
'Content-Length' => 0,
|
||||||
|
'Psgi-Multithread' => $environ->{'psgi.multithread'},
|
||||||
|
'X-Thread' => $environ->{'psgi.input'}
|
||||||
|
], []];
|
||||||
|
};
|
||||||
@@ -238,3 +238,44 @@ class TestPerlApplication(TestApplicationPerl):
|
|||||||
|
|
||||||
assert resp['status'] == 200, 'status'
|
assert resp['status'] == 200, 'status'
|
||||||
assert resp['body'] == 'Hello World!', 'body'
|
assert resp['body'] == 'Hello World!', 'body'
|
||||||
|
|
||||||
|
def test_perl_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)
|
||||||
|
|
||||||
|
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'])
|
||||||
|
|
||||||
|
assert resp['headers']['Psgi-Multithread'] == '1', 'multithread'
|
||||||
|
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
assert len(socks) == len(threads), 'threads differs'
|
||||||
|
|||||||
Reference in New Issue
Block a user