test_thread.rb: count accurately

* test/ruby/test_thread.rb (test_thread_timer_and_interrupt):
  count only signal handling time accurately without setup and
  cleanup time.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-10-24 03:46:51 +00:00
parent 3bf10b0464
commit e62586fd74

View File

@ -836,24 +836,24 @@ _eom
def test_thread_timer_and_interrupt def test_thread_timer_and_interrupt
bug5757 = '[ruby-dev:44985]' bug5757 = '[ruby-dev:44985]'
t0 = Time.now.to_f
pid = nil pid = nil
cmd = 'Signal.trap(:INT, "DEFAULT"); r,=IO.pipe; Thread.start {Thread.pass until Thread.main.stop?; puts; STDOUT.flush}; r.read' cmd = 'Signal.trap(:INT, "DEFAULT"); r,=IO.pipe; Thread.start {Thread.pass until Thread.main.stop?; puts; STDOUT.flush}; r.read'
opt = {} opt = {}
opt[:new_pgroup] = true if /mswin|mingw/ =~ RUBY_PLATFORM opt[:new_pgroup] = true if /mswin|mingw/ =~ RUBY_PLATFORM
s, _err = EnvUtil.invoke_ruby(['-e', cmd], "", true, true, opt) do |in_p, out_p, err_p, cpid| s, t, _err = EnvUtil.invoke_ruby(['-e', cmd], "", true, true, opt) do |in_p, out_p, err_p, cpid|
out_p.gets out_p.gets
pid = cpid pid = cpid
t0 = Time.now.to_f
Process.kill(:SIGINT, pid) Process.kill(:SIGINT, pid)
Process.wait(pid) Process.wait(pid)
[$?, err_p.read]
end
t1 = Time.now.to_f t1 = Time.now.to_f
[$?, t1 - t0, err_p.read]
end
assert_equal(pid, s.pid, bug5757) assert_equal(pid, s.pid, bug5757)
assert_equal([false, true, false, Signal.list["INT"]], assert_equal([false, true, false, Signal.list["INT"]],
[s.exited?, s.signaled?, s.stopped?, s.termsig], [s.exited?, s.signaled?, s.stopped?, s.termsig],
"[s.exited?, s.signaled?, s.stopped?, s.termsig]") "[s.exited?, s.signaled?, s.stopped?, s.termsig]")
assert_in_delta(t1 - t0, 1, 1, bug5757) assert_include(0..2, t, bug5757)
end end
def test_thread_join_in_trap def test_thread_join_in_trap