1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
|
# 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
|