зеркало из https://github.com/github/ruby.git
test_imap.rb: fix leaked threads
* test/net/imap/test_imap.rb (imaps_test): join work threads not to leak threads. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3041f72833
Коммит
fe8a3074f9
|
@ -127,7 +127,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
def test_unexpected_eof
|
def test_unexpected_eof
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -152,6 +152,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -159,7 +160,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
requests = []
|
requests = []
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -204,6 +205,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -211,7 +213,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
requests = []
|
requests = []
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -240,7 +242,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
in_idle = false
|
in_idle = false
|
||||||
exception_raised = false
|
exception_raised = false
|
||||||
c = m.new_cond
|
c = m.new_cond
|
||||||
Thread.start do
|
thw = Thread.start do
|
||||||
m.synchronize do
|
m.synchronize do
|
||||||
until in_idle
|
until in_idle
|
||||||
c.wait(0.1)
|
c.wait(0.1)
|
||||||
|
@ -266,16 +268,18 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
imap.logout
|
imap.logout
|
||||||
ensure
|
ensure
|
||||||
imap.disconnect if imap
|
imap.disconnect if imap
|
||||||
|
thw.join
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_idle_done_not_during_idle
|
def test_idle_done_not_during_idle
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -297,13 +301,14 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_unexpected_bye
|
def test_unexpected_bye
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -325,13 +330,14 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_exception_during_shutdown
|
def test_exception_during_shutdown
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -363,6 +369,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -371,7 +378,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
requests = []
|
requests = []
|
||||||
sock = nil
|
sock = nil
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
sock.print("* OK test server\r\n")
|
sock.print("* OK test server\r\n")
|
||||||
|
@ -387,7 +394,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
in_idle = false
|
in_idle = false
|
||||||
exception_raised = false
|
exception_raised = false
|
||||||
c = m.new_cond
|
c = m.new_cond
|
||||||
Thread.start do
|
thw = Thread.start do
|
||||||
m.synchronize do
|
m.synchronize do
|
||||||
until in_idle
|
until in_idle
|
||||||
c.wait(0.1)
|
c.wait(0.1)
|
||||||
|
@ -411,19 +418,21 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
assert_equal("RUBY0001 IDLE\r\n", requests[0])
|
assert_equal("RUBY0001 IDLE\r\n", requests[0])
|
||||||
ensure
|
ensure
|
||||||
imap.disconnect if imap
|
imap.disconnect if imap
|
||||||
|
thw.join
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
if sock && !sock.closed?
|
if sock && !sock.closed?
|
||||||
sock.close
|
sock.close
|
||||||
end
|
end
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_connection_closed_without_greeting
|
def test_connection_closed_without_greeting
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
sock.close
|
sock.close
|
||||||
|
@ -436,6 +445,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -461,7 +471,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
OpenSSL::X509::Certificate.new(f)
|
OpenSSL::X509::Certificate.new(f)
|
||||||
}
|
}
|
||||||
ssl_server = OpenSSL::SSL::SSLServer.new(server, ctx)
|
ssl_server = OpenSSL::SSL::SSLServer.new(server, ctx)
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = ssl_server.accept
|
sock = ssl_server.accept
|
||||||
begin
|
begin
|
||||||
|
@ -484,13 +494,15 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
ssl_server.close
|
ssl_server.close
|
||||||
|
ths.kill
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def starttls_test
|
def starttls_test
|
||||||
server = create_tcp_server
|
server = create_tcp_server
|
||||||
port = server.addr[1]
|
port = server.addr[1]
|
||||||
Thread.start do
|
ths = Thread.start do
|
||||||
begin
|
begin
|
||||||
sock = server.accept
|
sock = server.accept
|
||||||
sock.print("* OK test server\r\n")
|
sock.print("* OK test server\r\n")
|
||||||
|
@ -525,6 +537,7 @@ class IMAPTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
server.close
|
server.close
|
||||||
|
ths.join
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче