/test/functional/ft_63_participants_221.rb
Ruby | 458 lines | 322 code | 99 blank | 37 comment | 0 complexity | ed393c4f78628e69a394226994509a32 MD5 | raw file
- #
- # testing ruote
- #
- # Mon Jun 27 15:18:18 JST 2011
- #
- require File.expand_path('../base', __FILE__)
- class FtParticipantsTwoTwoOne < Test::Unit::TestCase
- include FunctionalBase
- #
- # on_workitem / consume
- class ClassicParticipant
- include Ruote::LocalParticipant
- def consume(workitem)
- (workitem.fields['trace'] ||= []) << workitem.participant_name
- reply_to_engine(workitem)
- end
- end
- class AlphaParticipant
- include Ruote::LocalParticipant
- def on_workitem(workitem)
- (workitem.fields['trace'] ||= []) << workitem.participant_name
- reply_to_engine(workitem)
- end
- end
- class BravoParticipant
- include Ruote::LocalParticipant
- def on_workitem
- (workitem.fields['trace'] ||= []) << workitem.participant_name
- reply_to_engine
- end
- end
- class CharlyParticipant
- include Ruote::LocalParticipant
- def consume
- (workitem.fields['trace'] ||= []) << workitem.participant_name
- reply_to_engine
- end
- end
- class DeltaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- (workitem.fields['trace'] ||= []) << workitem.participant_name
- reply
- end
- end
- def test_on_workitem
- @dashboard.register do
- classic ClassicParticipant
- alpha AlphaParticipant
- bravo BravoParticipant
- charly CharlyParticipant
- delta DeltaParticipant
- end
- #@dashboard.noisy = true
- wfid = @dashboard.launch(Ruote.define do
- classic; alpha; bravo; charly; delta
- end)
- r = @dashboard.wait_for(wfid)
- assert_equal(
- %w[ classic alpha bravo charly delta ], r['workitem']['fields']['trace'])
- end
- #
- # on_cancel / cancel
- class ZuluParticipant
- include Ruote::LocalParticipant
- def on_workitem
- # do nothing
- end
- def cancel(fei, flavour)
- (workitem.fields['trace'] ||= []) <<
- "#{workitem.participant_name}/#{fei.sid}/#{flavour}"
- end
- end
- class YankeeParticipant
- include Ruote::LocalParticipant
- def on_workitem
- # do nothing
- end
- def on_cancel(fei, flavour)
- (workitem.fields['trace'] ||= []) <<
- "#{workitem.participant_name}/#{fei.sid}/#{flavour}"
- end
- end
- class XrayParticipant
- include Ruote::LocalParticipant
- def on_workitem
- # do nothing
- end
- def on_cancel
- (workitem.fields['trace'] ||= []) <<
- "#{workitem.participant_name}/#{fei.sid}/#{flavour}"
- end
- end
- def test_on_cancel
- @dashboard.register do
- xray XrayParticipant
- yankee YankeeParticipant
- zulu ZuluParticipant
- end
- #@dashboard.noisy = true
- wfid = @dashboard.launch(Ruote.define do
- xray; yankee; zulu
- end)
- [ :xray, :yankee, :zulu ].each do |participant|
- r = @dashboard.wait_for(participant)
- @dashboard.wait_for(1)
- @dashboard.cancel(r['fei'])
- end
- @dashboard.wait_for(wfid)
- end
- #
- # accept?
- class AcAlphaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << workitem.participant_name + "\n"
- reply
- end
- def accept?(workitem)
- @context.tracer << "a/#{workitem.participant_name}\n"
- true
- end
- end
- class AcBravoParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << workitem.participant_name + "\n"
- reply
- end
- def accept?
- @context.tracer << "a/#{workitem.participant_name}\n"
- true
- end
- end
- def test_accept
- #@dashboard.noisy = true
- @dashboard.register do
- alpha AcAlphaParticipant
- bravo AcBravoParticipant
- end
- wfid = @dashboard.launch(Ruote.define do
- alpha; bravo
- end)
- @dashboard.wait_for(wfid)
- assert_equal %w[ a/alpha alpha a/bravo bravo ], @tracer.to_a
- end
- #
- # on_reply
- class OrAlphaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def on_reply(workitem)
- @context.tracer << "or/#{workitem.participant_name}\n"
- end
- end
- class OrBravoParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def on_reply
- @context.tracer << "or/#{workitem.participant_name}\n"
- end
- end
- def test_on_reply
- #@dashboard.noisy = true
- @dashboard.register do
- alpha OrAlphaParticipant
- bravo OrBravoParticipant
- end
- wfid = @dashboard.launch(Ruote.define do
- alpha; bravo
- end)
- @dashboard.wait_for(wfid)
- assert_equal %w[ ow/alpha or/alpha ow/bravo or/bravo ], @tracer.to_a
- end
- #
- # do_not_thread? / do_not_thread
- class DntAlphaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def do_not_thread(workitem)
- @context.tracer << "dnt/#{workitem.participant_name}\n"
- end
- end
- class DntBravoParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def do_not_thread?(workitem)
- @context.tracer << "dnt/#{workitem.participant_name}\n"
- end
- end
- class DntCharlyParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def do_not_thread?
- @context.tracer << "dnt/#{workitem.participant_name}\n"
- end
- end
- class DntDeltaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- reply
- end
- def dont_thread?
- @context.tracer << "dnt/#{workitem.participant_name}\n"
- end
- end
- def test_do_not_thread
- #@dashboard.noisy = true
- @dashboard.register do
- alpha DntAlphaParticipant
- bravo DntBravoParticipant
- charly DntCharlyParticipant
- delta DntDeltaParticipant
- end
- wfid = @dashboard.launch(Ruote.define do
- alpha; bravo; charly; delta
- end)
- @dashboard.wait_for(wfid)
- assert_equal(
- %w[ dnt/alpha ow/alpha
- dnt/bravo ow/bravo
- dnt/charly ow/charly
- dnt/delta ow/delta ],
- @tracer.to_a)
- end
- #
- # on_pause / on_resume
- class OpAlphaParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- end
- def on_cancel
- @context.tracer << "oc/#{fei.expid}\n"
- end
- def on_pause(fei)
- @context.tracer << "op/#{fei.expid}\n"
- end
- def on_resume(fei)
- @context.tracer << "or/#{fei.expid}\n"
- end
- end
- class OpBravoParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << "ow/#{workitem.participant_name}\n"
- end
- def on_pause
- @context.tracer << "op/#{fei.expid}\n"
- end
- def on_resume
- @context.tracer << "or/#{fei.expid}\n"
- end
- end
- def test_on_pause_on_resume
- #@dashboard.noisy = true
- @dashboard.register do
- alpha OpAlphaParticipant
- bravo OpBravoParticipant
- end
- wfid = @dashboard.launch(Ruote.define do
- alpha; bravo
- end)
- r = @dashboard.wait_for(:alpha)
- @dashboard.wait_for(1)
- @dashboard.pause(r['fei'])
- @dashboard.wait_for(2)
- @dashboard.resume(r['fei'])
- @dashboard.wait_for(2)
- @dashboard.cancel(r['fei'])
- r = @dashboard.wait_for(:bravo)
- @dashboard.wait_for(1)
- @dashboard.pause(r['fei'])
- @dashboard.wait_for(2)
- @dashboard.resume(r['fei'])
- @dashboard.wait_for(2)
- assert_equal(
- %w[ ow/alpha op/0_0 or/0_0 oc/0_0 ow/bravo op/0_1 or/0_1 ],
- @tracer.to_a)
- end
- #
- # implicit participant name
- class IpnParticipant
- include Ruote::LocalParticipant
- def consume
- @context.tracer << participant_name
- reply
- end
- end
- def test_implicit_participant_name
- @dashboard.register { hypno IpnParticipant }
- #@dashboard.noisy = true
- wfid = @dashboard.launch(Ruote.define do
- hypno
- end)
- @dashboard.wait_for(wfid)
- assert_equal 'hypno', @tracer.to_s
- end
- #
- # fexp, fexp(fei)
- # workitem, workitem(fei)
- # applied_workitem, applied_workitem(fei)
- class FexpParticipant
- include Ruote::LocalParticipant
- def consume
- @context.tracer << fexp.lookup_variable('nada') + "\n"
- @context.tracer << fexp(fei).lookup_variable('nada') + "\n"
- @context.tracer << workitem.fields.size.to_s + "\n"
- @context.tracer << workitem(fei).fields.size.to_s + "\n"
- @context.tracer << applied_workitem.fields.size.to_s + "\n"
- @context.tracer << applied_workitem(fei).fields.size.to_s + "\n"
- reply
- end
- end
- def test_helper_methods
- @dashboard.register { felix FexpParticipant }
- #@dashboard.noisy = true
- wfid = @dashboard.launch(
- Ruote.define() { felix },
- {},
- { 'nada' => 'surf' })
- @dashboard.wait_for(wfid)
- assert_equal(
- %w[ surf surf 2 1 1 1 ],
- @tracer.to_a)
- end
- #
- # lookup_variable(key)
- class LvParticipant
- include Ruote::LocalParticipant
- def on_workitem
- @context.tracer << lookup_variable('nada') + "\n"
- reply
- end
- end
- def test_lookup_variable
- @dashboard.register { louis LvParticipant }
- #@dashboard.noisy = true
- wfid = @dashboard.launch(Ruote.define() { louis }, {}, { 'nada' => 'surf' })
- @dashboard.wait_for(wfid)
- assert_equal 'surf', @tracer.to_s
- end
- end