mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			189 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: false
 | |
| require 'drb/drb'
 | |
| require 'drb/extserv'
 | |
| require 'timeout'
 | |
| 
 | |
| module DRbTests
 | |
| 
 | |
| class XArray < Array
 | |
|   def initialize(ary)
 | |
|     ary.each do |x|
 | |
|       self.push(x)
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| class XArray2 < XArray
 | |
|   include DRbUndumped
 | |
| end
 | |
| 
 | |
| class Unknown2
 | |
|   def initialize
 | |
|     @foo = 'unknown2'
 | |
|   end
 | |
| end
 | |
| 
 | |
| class DRbEx
 | |
|   include DRbUndumped
 | |
| 
 | |
|   class FooBar
 | |
|     def initialize
 | |
|       @foo = 'bar'
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   class UError < RuntimeError; end
 | |
| 
 | |
|   def initialize
 | |
|     @xary2_hash = nil
 | |
|     @hash = nil
 | |
|     @hello = 'hello'
 | |
|   end
 | |
|   attr_reader :hello
 | |
| 
 | |
|   def sample(a, b, c)
 | |
|     a.to_i + b.to_i + c.to_i
 | |
|   end
 | |
| 
 | |
|   def sum(*a)
 | |
|     s = 0
 | |
|     a.each do |e|
 | |
|       s += e.to_i
 | |
|     end
 | |
|     s
 | |
|   end
 | |
| 
 | |
|   def do_timeout(n)
 | |
|     Timeout.timeout(0.1) do
 | |
|       n.sleep(2)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def unknown_module
 | |
|     FooBar.new
 | |
|   end
 | |
| 
 | |
|   class BO < ::BasicObject
 | |
|     def foo; 1 end
 | |
|     protected def prot; 2; end
 | |
|     private def priv; 3; end
 | |
|   end
 | |
|   def basic_object
 | |
|     @basic_object = BO.new
 | |
|   end
 | |
| 
 | |
|   def unknown_class
 | |
|     Unknown2.new
 | |
|   end
 | |
| 
 | |
|   def unknown_error
 | |
|     raise UError
 | |
|   end
 | |
| 
 | |
|   def remote_no_method_error
 | |
|     invoke_no_method(self)
 | |
|   end
 | |
| 
 | |
|   def test_yield
 | |
|     yield
 | |
|     yield([])
 | |
|     yield(*[])
 | |
|   end
 | |
| 
 | |
|   def echo_yield(*arg)
 | |
|     yield(*arg)
 | |
|     nil
 | |
|   end
 | |
| 
 | |
|   def echo_yield_0
 | |
|     yield
 | |
|     nil
 | |
|   end
 | |
| 
 | |
|   def echo_yield_1(one)
 | |
|     yield(one)
 | |
|     nil
 | |
|   end
 | |
| 
 | |
|   def echo_yield_2(one, two)
 | |
|     yield(one, two)
 | |
|     nil
 | |
|   end
 | |
| 
 | |
|   def xarray_each
 | |
|     xary = [XArray.new([0])]
 | |
|     xary.each do |x|
 | |
|       yield(x)
 | |
|     end
 | |
|     nil
 | |
|   end
 | |
| 
 | |
|   def xarray2_hash
 | |
|     unless @xary2_hash
 | |
|       @xary2_hash = { "a" => XArray2.new([0]), "b" => XArray2.new([1]) }
 | |
|     end
 | |
|     DRbObject.new(@xary2_hash)
 | |
|   end
 | |
| 
 | |
|   def simple_hash
 | |
|     unless @hash
 | |
|       @hash = { 'a'=>:a, 'b'=>:b }
 | |
|     end
 | |
|     DRbObject.new(@hash)
 | |
|   end
 | |
| 
 | |
|   def [](key)
 | |
|     key.to_s
 | |
|   end
 | |
| 
 | |
|   def to_a
 | |
|     [self]
 | |
|   end
 | |
| 
 | |
|   def method_missing(msg, *a, &b)
 | |
|     if msg == :missing
 | |
|       return true
 | |
|     else
 | |
|       super(msg, *a, &b)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def keyword_test1(a:)
 | |
|     a
 | |
|   end
 | |
| 
 | |
|   def keyword_test2(b: "default")
 | |
|     b
 | |
|   end
 | |
| 
 | |
|   def keyword_test3(**opt)
 | |
|     opt
 | |
|   end
 | |
| 
 | |
|   private
 | |
|   def call_private_method
 | |
|     true
 | |
|   end
 | |
| 
 | |
|   protected
 | |
|   def call_protected_method
 | |
|     true
 | |
|   end
 | |
| end
 | |
| 
 | |
| end
 | |
| 
 | |
| if __FILE__ == $0
 | |
|   def ARGV.shift
 | |
|     it = super()
 | |
|     raise "usage: #{$0} <manager-uri> <name>" unless it
 | |
|     it
 | |
|   end
 | |
| 
 | |
|   DRb::DRbServer.default_argc_limit(8)
 | |
|   DRb::DRbServer.default_load_limit(4096)
 | |
|   DRb.start_service('druby://localhost:0', DRbTests::DRbEx.new)
 | |
|   es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
 | |
|   DRb.thread.join
 | |
|   es.stop_service if es.alive?
 | |
| end
 | 
