Adds script to launch concurrent requests to a cartodb server

2.0
Fernando Espinosa 12 years ago
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…
Cancel
Save