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