From e16e961bab2c4f8ae66c2b19f638c63a48f19ae4 Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 22 Apr 2012 11:35:03 +0000 Subject: * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to invoke service subprocess. mark detach threads for clean up. * test/drb/drbtest.rb: clean up the service subprocess in teardown. * test/drb/test_drb.rb: set @service_name for teardown. * test/drb/test_drbunix.rb: ditto. * test/drb/test_drbssl.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/drb/drbtest.rb | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'test/drb/drbtest.rb') diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb index fe39a6e5b8..83ae2f93f5 100644 --- a/test/drb/drbtest.rb +++ b/test/drb/drbtest.rb @@ -11,7 +11,7 @@ class DRbService @@ruby += " -d" if $DEBUG def self.add_service_command(nm) dir = File.dirname(File.expand_path(__FILE__)) - DRb::ExtServManager.command[nm] = "#{@@ruby} \"#{dir}/#{nm}\"" + DRb::ExtServManager.command[nm] = [@@ruby, "#{dir}/#{nm}"] end %w(ut_drb.rb ut_array.rb ut_port.rb ut_large.rb ut_safe1.rb ut_eval.rb ut_eq.rb).each do |nm| @@ -65,12 +65,20 @@ end module DRbCore def setup - @ext = DRbService.ext_service('ut_drb.rb') + @service_name = 'ut_drb.rb' + @ext = DRbService.ext_service(@service_name) @there = @ext.front end def teardown - @ext.stop_service if @ext + @ext.stop_service if defined?(@ext) && @ext + DRbService.manager.unregist(@service_name) + Thread.list.each {|th| + if th.respond_to?(:pid) && th[:drb_service] == @service_name + Process.kill :TERM, th.pid + th.join + end + } end def test_00_DRbObject @@ -271,12 +279,20 @@ end module DRbAry def setup - @ext = DRbService.ext_service('ut_array.rb') + @service_name = 'ut_array.rb' + @ext = DRbService.ext_service(@service_name) @there = @ext.front end def teardown - @ext.stop_service if @ext + @ext.stop_service if defined?(@ext) && @ext + DRbService.manager.unregist(@service_name) + Thread.list.each {|th| + if th.respond_to?(:pid) && th[:drb_service] == @service_name + Process.kill :TERM, th.pid + th.join + end + } end def test_01 -- cgit v1.2.3