parent
6cf50c0cd6
commit
9ef6031a16
@ -0,0 +1,17 @@
|
||||
require 'capybara'
|
||||
require 'capybara/dsl'
|
||||
|
||||
class ServerLoadScript
|
||||
include Capybara::DSL
|
||||
|
||||
def initialize
|
||||
|
||||
Capybara.default_driver = :selenium
|
||||
Capybara.app_host = 'https://staging20.cartodb.com'
|
||||
Capybara.run_server = false
|
||||
|
||||
visit '/'
|
||||
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,51 @@
|
||||
require 'thread'
|
||||
|
||||
class ThreadsMachine
|
||||
|
||||
MAX_THREADS = 20
|
||||
|
||||
def threads
|
||||
@threads ||= []
|
||||
end
|
||||
|
||||
def queue
|
||||
@queue ||= Queue.new
|
||||
end
|
||||
|
||||
def semaphore
|
||||
@semaphore ||= Mutex.new
|
||||
end
|
||||
|
||||
def async
|
||||
MAX_THREADS.times do |count|
|
||||
queue.enq(:EOF)
|
||||
threads << Thread.new do |number|
|
||||
Thread.current[:name] = "Thread ##{count}"
|
||||
|
||||
item = nil
|
||||
|
||||
until queue.empty?
|
||||
item = queue.deq
|
||||
|
||||
yield item if block_given?
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
threads.each do |t|
|
||||
begin
|
||||
t.join
|
||||
rescue RuntimeError => e
|
||||
puts "Failure on thread #{t[:name]}: #{e.message}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def sync(item)
|
||||
semaphore.synchronize do
|
||||
yield item
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env ruby
|
||||
require_relative '../lib/cartodb/threads_machine'
|
||||
require_relative '../lib/cartodb/scripts/server_load'
|
||||
|
||||
class ServerLoad < ThreadsMachine
|
||||
|
||||
def execute
|
||||
|
||||
MAX_THREADS.times do
|
||||
queue.enq(ServerLoadScript)
|
||||
end
|
||||
|
||||
async do |load_script|
|
||||
load_script.new
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
ServerLoad.new.execute
|
Loading…
Reference in new issue