Tests: added Ruby threading tests.
This commit is contained in:
13
test/ruby/threads/config.ru
Normal file
13
test/ruby/threads/config.ru
Normal file
@@ -0,0 +1,13 @@
|
||||
app = Proc.new do |env|
|
||||
delay = env['HTTP_X_DELAY'].to_f
|
||||
|
||||
sleep(delay)
|
||||
|
||||
['200', {
|
||||
'Content-Length' => 0.to_s,
|
||||
'Rack-Multithread' => env['rack.multithread'].to_s,
|
||||
'X-Thread' => Thread.current.object_id.to_s
|
||||
}, []]
|
||||
end
|
||||
|
||||
run app
|
||||
@@ -351,3 +351,44 @@ class TestRubyApplication(TestApplicationRuby):
|
||||
assert len(headers['X-Release-Date']) > 0, 'RUBY_RELEASE_DATE'
|
||||
assert len(headers['X-Revision']) > 0, 'RUBY_REVISION'
|
||||
assert len(headers['X-Version']) > 0, 'RUBY_VERSION'
|
||||
|
||||
def test_ruby_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']['Rack-Multithread'] == 'true', 'multithread'
|
||||
|
||||
sock.close()
|
||||
|
||||
assert len(socks) == len(threads), 'threads differs'
|
||||
|
||||
Reference in New Issue
Block a user