diff options
-rw-r--r-- | test/perl/threads/psgi.pl | 11 | ||||
-rw-r--r-- | test/test_perl_application.py | 41 |
2 files changed, 52 insertions, 0 deletions
diff --git a/test/perl/threads/psgi.pl b/test/perl/threads/psgi.pl new file mode 100644 index 00000000..dce28f7d --- /dev/null +++ b/test/perl/threads/psgi.pl @@ -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'} + ], []]; +}; diff --git a/test/test_perl_application.py b/test/test_perl_application.py index acd76626..78f2dd90 100644 --- a/test/test_perl_application.py +++ b/test/test_perl_application.py @@ -238,3 +238,44 @@ class TestPerlApplication(TestApplicationPerl): assert resp['status'] == 200, 'status' 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' |