lib/watirgrid.rb in watirgrid-1.1.1 vs lib/watirgrid.rb in watirgrid-1.1.2
- old
+ new
@@ -8,11 +8,11 @@
# Extend Watir with a Grid class which
# implements a grid of browsers by connecting to a tuplespace
# and instatiating remote browser objects on nominated providers.
class Grid
- attr_accessor :drb_server_uri, :ring_server, :browsers, :tuples
+ attr_accessor :drb_server_uri, :ring_server, :browsers, :tuples, :providers
def initialize(params = {})
@drb_server_host = params[:drb_server_host] || external_interface
@drb_server_port = params[:drb_server_port] || 0
@controller_uri = params[:controller_uri]
@@ -21,21 +21,23 @@
@renewer = params[:renewer] || Rinda::SimpleRenewer.new
logfile = params[:logfile] || STDOUT
@log = Logger.new(logfile, 'daily')
@log.level = params[:loglevel] || Logger::ERROR
@log.datetime_format = "%Y-%m-%d %H:%M:%S "
-
+ @webdriver_browser_type = params[:browser].to_sym if params[:browser]
@browsers = []
@tuples = []
+ @providers = []
end
##
# Start required services
def start(params = {})
start_drb_server
find_ring_server(params)
get_tuples(params)
+ setup if params[:initiate]
end
##
# Return the size (quantity) of browsers started on the grid
def size
@@ -44,9 +46,30 @@
##
# Write tuple back to tuplespace when finished using it
def release_tuples
@tuples.each { |tuple| @ring_server.write(tuple) }
+ end
+
+ ##
+ # Instantiate new browser object on each of the remote providers
+ def setup
+ @browsers.each_with_index do |browser, index|
+ sleep 0.15
+ @providers[index] ||= browser[:object].new_browser(@webdriver_browser_type)
+ end
+ end
+
+ ##
+ # Iterate with a block over each of the remote providers
+ def iterate &block
+ threads = []
+ @providers.each do |browser|
+ threads << Thread.new do
+ yield browser
+ end
+ end
+ threads.each {|thread| thread.join}
end
##
# This is a helper method to control a grid.
def self.control(params = {}, &block)