Module: RobotHelper

Included in:
MyTest, SuperTest
Defined in:
lib/common/robot_helper.rb

Instance Method Summary collapse

Instance Method Details

#robot(total_num, thread_num = 10) ⇒ Object

功能:

灌数据专用方法

参数解释:

  • total_num 灌数据的总数

  • thread_num 使用的线程数,默认为10

Example:

# 开20个线程来并发进行操作
robot 100,20 do |i|
    get "http://www.baidu.com/"
end


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/common/robot_helper.rb', line 33

def robot(total_num,thread_num=10)
    @is_press = true
    threads = []
    step = (total_num.to_f/thread_num.ceil).ceil
    raise "total_num must >0" if step <= 0
    remain = total_num % thread_num
    remain = thread_num if remain == 0
    cur = 1
    remain.times do |i|
        threads << Thread.new(step) do |mystep|
            mystep.times { |j| yield(cur);cur+=1 }
        end
    end
    remain.upto(thread_num-1) do |i|
        threads << Thread.new(step-1) do |mystep|
            mystep.times { |j| yield(cur);cur+=1 }
        end
    end
    threads.each { |aThread|  aThread.join }
    @is_press = false
    $log.debug "robot total_num[#{total_num}] thread_num[#{thread_num}] success!"
end