test/drb/test_drbssl.rb: skip LeakChecker as openssl keeps /dev/random
and /dev/urandom intentionally. OpenSSL::PKey::RSA.new opens the two
random generators and keeps the file descriptors.
93f99b681a/crypto/rand/rand_unix.c (L674)
They are detected by the LeakChecker as fd leak, but it is intentional.
http://rubyci.s3.amazonaws.com/graviton2/ruby-master/log/20200526T160005Z.log.html.gz
```
[ 597/20199] DRbTests::TestDRbSSLAry#test_01 = 0.29 s
Leaked file descriptor: DRbTests::TestDRbSSLAry#test_01: 8 #<File::Stat dev=0x6, ino=11, mode=020666, nlink=1, uid=0, gid=0, rdev=0x109, size=0, blksize=4096, blocks=0, atime=2020-05-23 14:45:13.751999995 +0000, mtime=2020-05-23 14:45:13.751999995 +0000, ctime=2020-05-23 14:45:13.751999995 +0000>
Leaked file descriptor: DRbTests::TestDRbSSLAry#test_01: 9 #<File::Stat dev=0x6, ino=10, mode=020666, nlink=1, uid=0, gid=0, rdev=0x108, size=0, blksize=4096, blocks=0, atime=2020-05-23 14:45:13.755999995 +0000, mtime=2020-05-23 14:45:13.755999995 +0000, ctime=2020-05-23 14:45:13.755999995 +0000>
```
This commit is contained in:
parent
135c6a4b99
commit
962c302a1a
@ -59,6 +59,7 @@ end
|
|||||||
class TestDRbSSLAry < Test::Unit::TestCase
|
class TestDRbSSLAry < Test::Unit::TestCase
|
||||||
include DRbAry
|
include DRbAry
|
||||||
def setup
|
def setup
|
||||||
|
LeakChecker.skip if defined?(LeakChecker)
|
||||||
@drb_service = DRbSSLService.new
|
@drb_service = DRbSSLService.new
|
||||||
super
|
super
|
||||||
setup_service 'ut_array_drbssl.rb'
|
setup_service 'ut_array_drbssl.rb'
|
||||||
|
@ -4,6 +4,7 @@ class LeakChecker
|
|||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@fd_info = find_fds
|
@fd_info = find_fds
|
||||||
|
@@skip = false
|
||||||
@tempfile_info = find_tempfiles
|
@tempfile_info = find_tempfiles
|
||||||
@thread_info = find_threads
|
@thread_info = find_threads
|
||||||
@env_info = find_env
|
@env_info = find_env
|
||||||
@ -63,7 +64,7 @@ class LeakChecker
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
fd_leaked = live2 - live1
|
fd_leaked = live2 - live1
|
||||||
if !fd_leaked.empty?
|
if !@@skip && !fd_leaked.empty?
|
||||||
leaked = true
|
leaked = true
|
||||||
h = {}
|
h = {}
|
||||||
ObjectSpace.each_object(IO) {|io|
|
ObjectSpace.each_object(IO) {|io|
|
||||||
@ -123,6 +124,7 @@ class LeakChecker
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
@fd_info = live2
|
@fd_info = live2
|
||||||
|
@@skip = false
|
||||||
return leaked
|
return leaked
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -290,4 +292,8 @@ class LeakChecker
|
|||||||
end
|
end
|
||||||
output.puts(*a)
|
output.puts(*a)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.skip
|
||||||
|
@@skip = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user