diff --git a/spec/drb_default_id_conv.rb b/spec/drb_default_id_conv.rb deleted file mode 100644 index d30f897d..00000000 --- a/spec/drb_default_id_conv.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'drb' - -if defined?(JRUBY_VERSION) - require 'jruby' - - require 'weakref' - class DRb::WeakRefDRbIdConv - - def initialize - @id2ref = {} - end - - # Convert an object reference id to an object. - # - # This implementation looks up the reference id in the local object - # space and returns the object it refers to. - def to_obj(ref) - _get(ref) || super - end - - # Convert an object into a reference id. - # - # This implementation returns the object's __id__ in the local - # object space. - def to_id(obj) - (obj.nil? ? nil : _put(obj)) || super - end - - def _clean - dead = [] - @id2ref.each {|id,weakref| dead << id unless weakref.weakref_alive?} - dead.each {|id| @id2ref.delete(id)} - end - - def _put(obj) - _clean - @id2ref[obj.__id__] = WeakRef.new(obj) - obj.__id__ - end - - def _get(id) - weakref = @id2ref[id] - if weakref - result = weakref.__getobj__ rescue nil - if result - return result - else - @id2ref.delete id - end - end - nil - end - private :_clean, :_put, :_get - - end - - # NOTE: the same default object id converter #DRb::DRbIdConv as in 1.8 mode - # (not relying on ObjectSpace which is what #DRb::DRbIdConv does in 1.9) : - DRb::DRbServer.default_id_conv(DRb::WeakRefDRbIdConv.new) - -end diff --git a/spec/drb_helper.rb b/spec/drb_helper.rb index 5a48d930..99ad7491 100644 --- a/spec/drb_helper.rb +++ b/spec/drb_helper.rb @@ -5,7 +5,9 @@ # See the file LICENSE.txt for details. #++ -require 'rubygems' +# Prefer gem version we already have on GEM_PATH from parent to ensure using the same version +# and avoid using outdated stdlib versions < 2.2.3 +gem 'drb' require 'drb' require 'stringio' require 'warbler' @@ -50,8 +52,6 @@ def stop end end -require File.expand_path('drb_default_id_conv', File.dirname(__FILE__)) - server = WarblerDrbServer.new service = DRb.start_service 'druby://127.0.0.1:7890', server service.thread.join diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7f1f6c9c..82e3ad77 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -37,9 +37,6 @@ def capture(&block) io.string end -require 'drb' -require File.expand_path('drb_default_id_conv', File.dirname(__FILE__)) - module ExampleGroupHelpers def run_in_directory(dir) before :each do @@ -106,6 +103,7 @@ def create_git_gem(gem_name) def run_out_of_process_with_drb before :all do + require 'drb' DRb.start_service @orig_dir = Dir.pwd end @@ -114,11 +112,11 @@ def run_out_of_process_with_drb drb DRbObject.new(nil, 'druby://127.0.0.1:7890').tap do |drbclient| ready, error = nil, nil - 300.times do # timeout 30 secs (300 * 0.1) + 600.times do # timeout 30 secs (600 * 0.05) begin break if ready = drbclient.ready? rescue DRb::DRbConnError => e - error = e; sleep 0.1 + error = e; sleep 0.05 end end raise error unless ready @@ -129,7 +127,7 @@ def run_out_of_process_with_drb require 'jruby' let(:drb) do drb_thread = Thread.new do - ruby "-I#{Warbler::WARBLER_HOME}/lib", File.join(@orig_dir, 'spec/drb_helper.rb') + ruby '--dev', "-I#{Warbler::WARBLER_HOME}/lib", File.join(@orig_dir, 'spec/drb_helper.rb') end drb_thread.run drb_thread @@ -147,6 +145,10 @@ def run_out_of_process_with_drb drb.stop end end + + after :all do + DRb.stop_service + end end def use_test_webserver