1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
akr 2012-04-22 11:35:03 +00:00
parent f46ffca1c7
commit e16e961bab
6 changed files with 53 additions and 11 deletions

View file

@ -1,3 +1,16 @@
Sun Apr 22 20:26:06 2012 Tanaka Akira <akr@fsij.org>
* 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.
Sun Apr 22 07:51:29 2012 Tanaka Akira <akr@fsij.org>
* lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.

View file

@ -79,7 +79,15 @@ module DRb
@servers[name] = false
end
uri = @uri || DRb.uri
Process.detach spawn("#{command} #{uri} #{name}")
if command.respond_to? :to_ary
command = command.to_ary + [uri, name]
pid = spawn(*command)
else
pid = spawn("#{command} #{uri} #{name}")
end
th = Process.detach(pid)
th[:drb_service] = name
th
end
end
end

View file

@ -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

View file

@ -202,7 +202,8 @@ end
class TestDRbSafe1 < TestDRbAry
def setup
@ext = DRbService.ext_service('ut_safe1.rb')
@service_name = 'ut_safe1.rb'
@ext = DRbService.ext_service(@service_name)
@there = @ext.front
end
end

View file

@ -36,7 +36,8 @@ end
class TestDRbSSLCore < Test::Unit::TestCase
include DRbCore
def setup
@ext = DRbSSLService.ext_service('ut_drb_drbssl.rb')
@service_name = 'ut_drb_drbssl.rb'
@ext = DRbSSLService.ext_service(@service_name)
@there = @ext.front
end
@ -53,7 +54,8 @@ end
class TestDRbSSLAry < Test::Unit::TestCase
include DRbAry
def setup
@ext = DRbSSLService.ext_service('ut_array_drbssl.rb')
@service_name = 'ut_array_drbssl.rb'
@ext = DRbSSLService.ext_service(@service_name)
@there = @ext.front
end
end

View file

@ -20,7 +20,8 @@ end
class TestDRbUNIXCore < Test::Unit::TestCase
include DRbCore
def setup
@ext = DRbUNIXService.ext_service('ut_drb_drbunix.rb')
@service_name = 'ut_drb_drbunix.rb'
@ext = DRbUNIXService.ext_service(@service_name)
@there = @ext.front
end
@ -37,7 +38,8 @@ end
class TestDRbUNIXAry < Test::Unit::TestCase
include DRbAry
def setup
@ext = DRbUNIXService.ext_service('ut_array_drbunix.rb')
@service_name = 'ut_array_drbunix.rb'
@ext = DRbUNIXService.ext_service(@service_name)
@there = @ext.front
end
end