Thanks John, that worked for us. After using wait_for(participant), we no longer need the sleeps and our tests seem stable now. We almost gave up before we realized we forgot to set ruby eval on in the test fixture - maybe ruote should throw if you do ruby expressions with that flag not set :) in any case your test sample saved our bacon, much appreciated.
Sent from my iPad On Oct 7, 2010, at 5:26 PM, "John Mettraux" <[email protected]> wrote: > > On Thu, Oct 07, 2010 at 05:09:34PM -0700, Pat Gannon wrote: >> >> I'm having trouble creating repeatable automated tests for my >> workflows. Are there any examples of writing tests (RSpec or other) >> to verify the behavior of a particular workflow? >> >> In particular, I want to test what work items have been created part- >> way through a workflow, so engine.wait_for doesn't seem to be a good >> fit (since it waits for the whole workflow to complete), so I had to >> insert a "sleep" in my test, which makes it slow. My test also seems >> to be a bit brittle (fails sporadically). > > Hello Pat, > > welcome to the ruote mailing list. > > You could have a look at the test suite : > > http://github.com/jmettraux/ruote/tree/ruote2.1/test/functional/ > > There is also ruote-cukes, which is unfortunately not yet complete : > > http://github.com/jmettraux/ruote-cukes > > (IIRC it uses a sleep as well). > > With the functional test suite, the pattern is : > > ( http://gist.github.com/616159 ) > > ---8<-- > require 'rubygems' > require 'ruote' > > pdef = Ruote.process_definition do > sequence do > alpha > bravo > end > end > > engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new)) > > engine.register do > catchall Ruote::StorageParticipant > end > > #engine.noisy = true > > wfid = engine.launch(pdef) > > engine.wait_for(:alpha) > > wi = engine.storage_participant.first > > puts "this workitem reached alpha :" > p wi > > engine.storage_participant.reply(wi) > > engine.wait_for(:bravo) > > wi = engine.storage_participant.first > > puts "this workitem reached bravo :" > p wi > > engine.storage_participant.reply(wi) > > engine.wait_for(wfid) > > puts "process instance over" > --->8--- > > Engine#wait_for() when receiving symbols waits for participant to receive > workitems. > > Please note the engine.noisy = true trick if you want to know what the engine > is doing. > > > I'd be glad to help fixing the brittleness of your test. If it's still > brittle after adopting engine.wait_for(:participant_name), please tell me. > > > Best regards, > > -- > John Mettraux - http://jmettraux.wordpress.com > > -- > you received this message because you are subscribed to the "ruote users" > group. > to post : send email to [email protected] > to unsubscribe : send email to [email protected] > more options : http://groups.google.com/group/openwferu-users?hl=en -- you received this message because you are subscribed to the "ruote users" group. to post : send email to [email protected] to unsubscribe : send email to [email protected] more options : http://groups.google.com/group/openwferu-users?hl=en
