Great stuff Josh! Glad it's working out ok. I've done some limited testing with up to 10 EC2 instances running firefox...
Competing product is Selenium Grid as you've mentioned. I'm also procrastinating on the integration of Stella[1] into the grid providers. I've let people know of Watirgrid on the development group. Not yet to watir-general. I'll copy this thread to watir-dev. Feel free to ask on watir-general. Might be good to have other people's viewpoint on the usefulness of this implementation of Watir. As for using Watir, I'm a performance tester by day so work mostly with LoadRunner and JMeter. I'm looking to tools like Watirgrid (browser based) and Stella (protocol based) to alleviate the pain of writing load tests in C and/or vendorscripts... Regards, Tim Koopmans http://watirgrid.com [1] http://solutious.com/projects/stella/getting-started/<http://solutious.com/projects/stella/getting-started/> On Fri, Feb 5, 2010 at 9:10 AM, joshua wallis <[email protected]>wrote: > Just did a proof of concept on two machines at work. It works great so > far! I'm not sure yet how I'm going to fit it into my framework but at this > point I'd really like to. > > So I don't get why people aren't all over this...? Is there a "competing" > utility? Selenium people obviously realize the need for it, hence "selenium > grid." > How much do you actually use Watir? It's been my whole job the past couple > months and I'm hoping to build a large regression suite for my co. Have you > shown this to the watir google group? I really want to ask people why > they're not all over it... > > -j > > > > > On Wed, Feb 3, 2010 at 7:24 PM, joshua wallis <[email protected]>wrote: > >> Cool. Gonna play with it some then I'll probably have more questions... >> >> Thanks, >> -j >> >> >> On Wed, Feb 3, 2010 at 6:14 PM, Tim Koopmans <[email protected]> wrote: >> >>> Hi Josh, >>> >>> Firstly thanks for the interest, I haven't had many others test/use the >>> code that I know of so far =) >>> >>> Watirgrid is built on Rinda, which itself sits on top of DRb. >>> >>> So to answer your first question, a DRb 'front' object is instantiated on >>> each remote provider. Normally when an object is returned by a method called >>> over DRb, the object is marshaled, sent over the connection, and run on the >>> client side. You'll notice in the provider class I include DRbUndumped into >>> it which tells DRb that the object cannot be marshaled and that DRb should >>> send a reference to it instead. The object then stays on the provider side, >>> and the reference on the client side then proxies the method calls back and >>> forth to the server. Rinda just allows me to run a ring server (which is the >>> controller) which makes it easier to advertise what services (tuples) each >>> different provider are providing, and facilitates the communication between >>> your client and the remote providers. >>> >>> The client code e.g. >>> >>> grid.browsers.each do |browser| >>> threads << Thread.new do >>> b = browser[:object].new_browser >>> >>> >>> >>> b.goto("http://www.google.com") >>> >>> >>> b.text_field(:name, 'q').set("watirgrid") >>> b.button(:name, "btnI").click >>> end >>> end >>> >>> uses threads to send commands to all the browser front objects in the >>> grid (providers). In this case I didn't have a cool way to effectively >>> notify X providers to execute the code concurrently, so am just using Ruby >>> threads for time being until I figure out a better way. I'm not sure how >>> this might scale, but as all the processing is being done remotely on the >>> providers (by reference), I'm fairly sure it will have a light impact. >>> >>> Hope that helps/makes sense! >>> >>> Regards, >>> Tim Koopmans >>> >>> >>> >>> >>> On Thu, Feb 4, 2010 at 10:52 AM, joshua wallis >>> <[email protected]>wrote: >>> >>>> Tim, >>>> I have been developing my watir framework and am getting to the point >>>> where I'm going to need distribution of testcases across machines and I'm >>>> wondering if watirGrid is right for me. I've read a few of your github >>>> files and I have a few questions on the Readme: >>>> >>>> you say, after starting the controller and providers: >>>> >>>> You will now be able to execute commands across remote browsers on your >>>> grid network. >>>> >>>> e.g. >>>> >>>> grid = Watir::Grid.new(:ring_server_port => 12358) >>>> grid.start(:quantity => 1, :read_all => true) >>>> threads = [] >>>> >>>> grid.browsers.each do |browser| >>>> threads << Thread.new do >>>> b = browser[:object].new_browser >>>> b.goto("http://www.google.com") >>>> >>>> >>>> >>>> >>>> >>>> >>>> b.text_field(:name, 'q').set("watirgrid") >>>> b.button(:name, "btnI").click >>>> end >>>> end >>>> >>>> threads.each {|thread| thread.join} >>>> >>>> >>>> >>>> >>>> >>>> So I’m curious about where the objects live. I would expect that the >>>> each provider creates a water object when it’s started, then registers the >>>> Waitr obj with the controller. But in the above piece of code it looks >>>> like the controller is creating a local thread for each provider and >>>> creating new browser objects (which I assume is a wrapper for a Watir >>>> object). Maybe this is typical Rinda usage and I’ve just never seen it >>>> before. Are the threads actually local “hard-working” threads or just >>>> placeholders for the threads on the providers which are used to coordinate >>>> when all providers are finished? >>>> >>>> >>>> >>>> Thanks for any info you can give me, >>>> >>>> -Josh >>>> >>> >>> >> >
_______________________________________________ Wtr-development mailing list [email protected] http://rubyforge.org/mailman/listinfo/wtr-development
