mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
c2e998d6a3
* test/drb/ut_large.rb (multiply, avg, median): add additional math operations to DRbLarge. [Fix GH-1086] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
62 lines
1 KiB
Ruby
62 lines
1 KiB
Ruby
# frozen_string_literal: false
|
|
require 'drb/drb'
|
|
require 'drb/extserv'
|
|
require 'timeout'
|
|
|
|
module DRbTests
|
|
|
|
class DRbLarge
|
|
include DRbUndumped
|
|
|
|
def size(ary)
|
|
ary.size
|
|
end
|
|
|
|
def sum(ary)
|
|
ary.inject(:+)
|
|
end
|
|
|
|
def multiply(ary)
|
|
ary.inject(:*)
|
|
end
|
|
|
|
def avg(ary)
|
|
return if ary.empty?
|
|
if ary.any? {|n| n.is_a? String}
|
|
raise TypeError
|
|
else
|
|
sum(ary).to_f / ary.count
|
|
end
|
|
end
|
|
|
|
def median(ary)
|
|
return if ary.empty?
|
|
if ary.any? {|n| n.is_a? String}
|
|
raise TypeError
|
|
else
|
|
avg ary.sort[((ary.length - 1) / 2)..(ary.length / 2)]
|
|
end
|
|
end
|
|
|
|
def arg_test(*arg)
|
|
# nop
|
|
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(3)
|
|
DRb::DRbServer.default_load_limit(100000)
|
|
DRb.start_service('druby://localhost:0', DRbTests::DRbLarge.new)
|
|
es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
|
|
DRb.thread.join
|
|
es.stop_service if es.alive?
|
|
end
|
|
|