ruote 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.txt +166 -1
- data/CREDITS.txt +36 -17
- data/LICENSE.txt +1 -1
- data/README.rdoc +1 -7
- data/Rakefile +38 -29
- data/TODO.txt +93 -52
- data/lib/ruote-fs.rb +3 -0
- data/lib/ruote.rb +5 -1
- data/lib/ruote/context.rb +140 -35
- data/lib/ruote/dashboard.rb +1247 -0
- data/lib/ruote/{engine → dboard}/process_error.rb +22 -2
- data/lib/ruote/dboard/process_status.rb +587 -0
- data/lib/ruote/engine.rb +6 -871
- data/lib/ruote/exp/command.rb +7 -2
- data/lib/ruote/exp/commanded.rb +2 -2
- data/lib/ruote/exp/condition.rb +38 -13
- data/lib/ruote/exp/fe_add_branches.rb +1 -1
- data/lib/ruote/exp/fe_apply.rb +1 -1
- data/lib/ruote/exp/fe_await.rb +357 -0
- data/lib/ruote/exp/fe_cancel_process.rb +17 -3
- data/lib/ruote/exp/fe_command.rb +8 -4
- data/lib/ruote/exp/fe_concurrence.rb +218 -18
- data/lib/ruote/exp/fe_concurrent_iterator.rb +71 -10
- data/lib/ruote/exp/fe_cron.rb +3 -10
- data/lib/ruote/exp/fe_cursor.rb +14 -4
- data/lib/ruote/exp/fe_define.rb +3 -1
- data/lib/ruote/exp/fe_echo.rb +1 -1
- data/lib/ruote/exp/fe_equals.rb +1 -1
- data/lib/ruote/exp/fe_error.rb +1 -1
- data/lib/ruote/exp/fe_filter.rb +163 -4
- data/lib/ruote/exp/fe_forget.rb +21 -4
- data/lib/ruote/exp/fe_given.rb +1 -1
- data/lib/ruote/exp/fe_if.rb +1 -1
- data/lib/ruote/exp/fe_inc.rb +102 -35
- data/lib/ruote/exp/fe_iterator.rb +47 -12
- data/lib/ruote/exp/fe_listen.rb +96 -11
- data/lib/ruote/exp/fe_lose.rb +31 -4
- data/lib/ruote/exp/fe_noop.rb +1 -1
- data/lib/ruote/exp/fe_on_error.rb +109 -0
- data/lib/ruote/exp/fe_once.rb +10 -19
- data/lib/ruote/exp/fe_participant.rb +90 -28
- data/lib/ruote/exp/fe_read.rb +69 -0
- data/lib/ruote/exp/fe_redo.rb +3 -2
- data/lib/ruote/exp/fe_ref.rb +57 -27
- data/lib/ruote/exp/fe_registerp.rb +1 -3
- data/lib/ruote/exp/fe_reserve.rb +1 -1
- data/lib/ruote/exp/fe_restore.rb +6 -6
- data/lib/ruote/exp/fe_save.rb +12 -19
- data/lib/ruote/exp/fe_sequence.rb +38 -2
- data/lib/ruote/exp/fe_set.rb +143 -40
- data/lib/ruote/exp/{fe_let.rb → fe_stall.rb} +7 -38
- data/lib/ruote/exp/fe_subprocess.rb +8 -2
- data/lib/ruote/exp/fe_that.rb +1 -1
- data/lib/ruote/exp/fe_undo.rb +40 -4
- data/lib/ruote/exp/fe_unregisterp.rb +1 -3
- data/lib/ruote/exp/fe_wait.rb +12 -25
- data/lib/ruote/exp/{flowexpression.rb → flow_expression.rb} +375 -229
- data/lib/ruote/exp/iterator.rb +2 -2
- data/lib/ruote/exp/merge.rb +78 -17
- data/lib/ruote/exp/ro_attributes.rb +46 -36
- data/lib/ruote/exp/ro_filters.rb +34 -8
- data/lib/ruote/exp/ro_on_x.rb +431 -0
- data/lib/ruote/exp/ro_persist.rb +19 -7
- data/lib/ruote/exp/ro_timers.rb +123 -0
- data/lib/ruote/exp/ro_variables.rb +90 -29
- data/lib/ruote/fei.rb +57 -3
- data/lib/ruote/fs.rb +3 -0
- data/lib/ruote/id/mnemo_wfid_generator.rb +30 -7
- data/lib/ruote/id/wfid_generator.rb +17 -38
- data/lib/ruote/log/default_history.rb +23 -9
- data/lib/ruote/log/fancy_printing.rb +265 -0
- data/lib/ruote/log/storage_history.rb +23 -13
- data/lib/ruote/log/wait_logger.rb +224 -17
- data/lib/ruote/observer.rb +82 -0
- data/lib/ruote/part/block_participant.rb +65 -28
- data/lib/ruote/part/code_participant.rb +81 -0
- data/lib/ruote/part/engine_participant.rb +7 -2
- data/lib/ruote/part/local_participant.rb +221 -21
- data/lib/ruote/part/no_op_participant.rb +1 -1
- data/lib/ruote/part/null_participant.rb +1 -1
- data/lib/ruote/part/participant.rb +50 -0
- data/lib/ruote/part/rev_participant.rb +178 -0
- data/lib/ruote/part/smtp_participant.rb +2 -2
- data/lib/ruote/part/storage_participant.rb +228 -60
- data/lib/ruote/part/template.rb +1 -1
- data/lib/ruote/participant.rb +2 -0
- data/lib/ruote/reader.rb +205 -68
- data/lib/ruote/reader/json.rb +49 -0
- data/lib/ruote/reader/radial.rb +303 -0
- data/lib/ruote/reader/ruby_dsl.rb +44 -9
- data/lib/ruote/reader/xml.rb +11 -8
- data/lib/ruote/receiver/base.rb +98 -45
- data/lib/ruote/storage/base.rb +104 -35
- data/lib/ruote/storage/composite_storage.rb +50 -60
- data/lib/ruote/storage/fs_storage.rb +25 -34
- data/lib/ruote/storage/hash_storage.rb +38 -36
- data/lib/ruote/svc/dispatch_pool.rb +104 -35
- data/lib/ruote/svc/dollar_sub.rb +10 -8
- data/lib/ruote/svc/error_handler.rb +108 -52
- data/lib/ruote/svc/expression_map.rb +3 -3
- data/lib/ruote/svc/participant_list.rb +160 -55
- data/lib/ruote/svc/tracker.rb +31 -31
- data/lib/ruote/svc/treechecker.rb +28 -16
- data/lib/ruote/tree_dot.rb +1 -1
- data/lib/ruote/util/deep.rb +143 -0
- data/lib/ruote/util/filter.rb +125 -18
- data/lib/ruote/util/hashdot.rb +15 -13
- data/lib/ruote/util/look.rb +1 -1
- data/lib/ruote/util/lookup.rb +60 -22
- data/lib/ruote/util/misc.rb +63 -18
- data/lib/ruote/util/mpatch.rb +53 -0
- data/lib/ruote/util/ometa.rb +1 -2
- data/lib/ruote/util/process_observer.rb +177 -0
- data/lib/ruote/util/subprocess.rb +1 -1
- data/lib/ruote/util/time.rb +2 -2
- data/lib/ruote/util/tree.rb +64 -2
- data/lib/ruote/version.rb +3 -2
- data/lib/ruote/worker.rb +421 -92
- data/lib/ruote/workitem.rb +157 -22
- data/ruote.gemspec +15 -9
- data/test/bm/ci.rb +0 -2
- data/test/bm/ici.rb +0 -2
- data/test/bm/load_26c.rb +0 -3
- data/test/bm/mega.rb +0 -2
- data/test/functional/base.rb +57 -43
- data/test/functional/concurrent_base.rb +16 -13
- data/test/functional/ct_0_concurrence.rb +7 -11
- data/test/functional/ct_1_iterator.rb +9 -11
- data/test/functional/ct_2_cancel.rb +28 -17
- data/test/functional/eft_0_flow_expression.rb +35 -0
- data/test/functional/eft_10_cancel_process.rb +1 -1
- data/test/functional/eft_11_wait.rb +13 -13
- data/test/functional/eft_12_listen.rb +199 -66
- data/test/functional/eft_13_iterator.rb +95 -29
- data/test/functional/eft_14_cursor.rb +74 -24
- data/test/functional/eft_15_loop.rb +7 -7
- data/test/functional/eft_16_if.rb +1 -1
- data/test/functional/eft_17_equals.rb +1 -1
- data/test/functional/eft_18_concurrent_iterator.rb +156 -68
- data/test/functional/eft_19_reserve.rb +15 -15
- data/test/functional/eft_1_echo.rb +1 -1
- data/test/functional/eft_20_save.rb +51 -9
- data/test/functional/eft_21_restore.rb +1 -1
- data/test/functional/eft_22_noop.rb +1 -1
- data/test/functional/eft_23_apply.rb +1 -1
- data/test/functional/eft_24_add_branches.rb +7 -8
- data/test/functional/eft_25_command.rb +1 -1
- data/test/functional/eft_26_error.rb +11 -11
- data/test/functional/eft_27_inc.rb +111 -67
- data/test/functional/eft_28_once.rb +16 -16
- data/test/functional/eft_29_cron.rb +9 -9
- data/test/functional/eft_2_sequence.rb +23 -4
- data/test/functional/eft_30_ref.rb +36 -24
- data/test/functional/eft_31_registerp.rb +24 -24
- data/test/functional/eft_32_lose.rb +46 -20
- data/test/functional/eft_34_given.rb +1 -1
- data/test/functional/eft_35_filter.rb +161 -7
- data/test/functional/eft_36_read.rb +97 -0
- data/test/functional/{eft_0_process_definition.rb → eft_37_process_definition.rb} +4 -4
- data/test/functional/eft_38_on_error.rb +195 -0
- data/test/functional/eft_39_stall.rb +35 -0
- data/test/functional/eft_3_participant.rb +77 -22
- data/test/functional/eft_40_await.rb +297 -0
- data/test/functional/eft_4_set.rb +110 -11
- data/test/functional/eft_5_subprocess.rb +27 -5
- data/test/functional/eft_6_concurrence.rb +299 -60
- data/test/functional/eft_7_forget.rb +24 -22
- data/test/functional/eft_8_undo.rb +52 -15
- data/test/functional/eft_9_redo.rb +18 -20
- data/test/functional/ft_0_worker.rb +122 -13
- data/test/functional/ft_10_dollar.rb +77 -16
- data/test/functional/ft_11_recursion.rb +9 -9
- data/test/functional/ft_12_launchitem.rb +7 -9
- data/test/functional/ft_13_variables.rb +125 -22
- data/test/functional/ft_14_re_apply.rb +112 -56
- data/test/functional/ft_15_timeout.rb +64 -33
- data/test/functional/ft_16_participant_params.rb +59 -6
- data/test/functional/ft_17_conditional.rb +68 -2
- data/test/functional/ft_18_kill.rb +48 -30
- data/test/functional/ft_19_participant_code.rb +67 -0
- data/test/functional/ft_1_process_status.rb +222 -150
- data/test/functional/ft_20_storage_participant.rb +445 -44
- data/test/functional/ft_21_forget.rb +21 -26
- data/test/functional/ft_22_process_definitions.rb +8 -6
- data/test/functional/ft_23_load_defs.rb +29 -5
- data/test/functional/ft_24_block_participant.rb +199 -20
- data/test/functional/ft_25_receiver.rb +98 -46
- data/test/functional/ft_26_participant_rtimeout.rb +34 -26
- data/test/functional/ft_27_var_indirection.rb +40 -5
- data/test/functional/ft_28_null_noop_participants.rb +5 -5
- data/test/functional/ft_29_part_template.rb +2 -2
- data/test/functional/ft_2_errors.rb +106 -74
- data/test/functional/ft_30_smtp_participant.rb +7 -7
- data/test/functional/ft_31_part_blocking.rb +11 -11
- data/test/functional/ft_32_scope.rb +50 -0
- data/test/functional/ft_33_participant_subprocess_priority.rb +3 -3
- data/test/functional/ft_34_cursor_rewind.rb +14 -14
- data/test/functional/ft_35_add_service.rb +67 -9
- data/test/functional/ft_36_storage_history.rb +92 -24
- data/test/functional/ft_37_default_history.rb +35 -23
- data/test/functional/ft_38_participant_more.rb +189 -32
- data/test/functional/ft_39_wait_for.rb +25 -25
- data/test/functional/ft_3_participant_registration.rb +235 -107
- data/test/functional/ft_40_wait_logger.rb +105 -18
- data/test/functional/ft_41_participants.rb +13 -12
- data/test/functional/ft_42_storage_copy.rb +12 -12
- data/test/functional/ft_43_participant_on_reply.rb +85 -11
- data/test/functional/ft_44_var_participant.rb +5 -5
- data/test/functional/ft_45_participant_accept.rb +3 -3
- data/test/functional/ft_46_launch_single.rb +17 -17
- data/test/functional/ft_47_wfids.rb +41 -0
- data/test/functional/ft_48_lose.rb +19 -25
- data/test/functional/ft_49_engine_on_error.rb +54 -70
- data/test/functional/ft_4_cancel.rb +84 -26
- data/test/functional/ft_50_engine_config.rb +4 -4
- data/test/functional/ft_51_misc.rb +12 -12
- data/test/functional/ft_52_case.rb +17 -17
- data/test/functional/ft_53_engine_on_terminate.rb +18 -21
- data/test/functional/ft_54_patterns.rb +18 -16
- data/test/functional/ft_55_engine_participant.rb +55 -55
- data/test/functional/ft_56_filter_attribute.rb +90 -52
- data/test/functional/ft_57_rev_participant.rb +252 -0
- data/test/functional/ft_58_workitem.rb +150 -0
- data/test/functional/ft_59_pause.rb +329 -0
- data/test/functional/ft_5_on_error.rb +430 -77
- data/test/functional/ft_60_code_participant.rb +65 -0
- data/test/functional/ft_61_trailing_fields.rb +34 -0
- data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
- data/test/functional/ft_63_participants_221.rb +458 -0
- data/test/functional/ft_64_stash.rb +41 -0
- data/test/functional/ft_65_timers.rb +313 -0
- data/test/functional/ft_66_flank.rb +133 -0
- data/test/functional/ft_67_radial_misc.rb +34 -0
- data/test/functional/ft_68_reput.rb +72 -0
- data/test/functional/ft_69_worker_info.rb +56 -0
- data/test/functional/ft_6_on_cancel.rb +189 -36
- data/test/functional/ft_70_take_and_discard_attributes.rb +94 -0
- data/test/functional/ft_71_retries.rb +144 -0
- data/test/functional/ft_72_on_terminate.rb +60 -0
- data/test/functional/ft_73_raise_msg.rb +107 -0
- data/test/functional/ft_74_respark.rb +106 -0
- data/test/functional/ft_75_context.rb +66 -0
- data/test/functional/ft_76_observer.rb +53 -0
- data/test/functional/ft_77_process_observer.rb +157 -0
- data/test/functional/ft_78_part_participant.rb +37 -0
- data/test/functional/ft_7_tags.rb +238 -50
- data/test/functional/ft_8_participant_consumption.rb +27 -21
- data/test/functional/ft_9_subprocesses.rb +48 -18
- data/test/functional/restart_base.rb +4 -6
- data/test/functional/rt_0_wait.rb +10 -10
- data/test/functional/rt_1_listen.rb +6 -6
- data/test/functional/rt_2_errors.rb +12 -12
- data/test/functional/rt_3_once.rb +17 -12
- data/test/functional/rt_4_cron.rb +17 -17
- data/test/functional/rt_5_timeout.rb +13 -13
- data/test/functional/signals.rb +103 -0
- data/test/functional/storage.rb +730 -0
- data/test/functional/storage_helper.rb +48 -35
- data/test/functional/test.rb +6 -2
- data/test/misc/idle.rb +21 -0
- data/test/misc/light.rb +29 -0
- data/test/path_helper.rb +1 -1
- data/test/test.rb +2 -5
- data/test/test_helper.rb +13 -0
- data/test/unit/test.rb +1 -4
- data/test/unit/ut_0_ruby_reader.rb +25 -9
- data/test/unit/ut_10_participants.rb +47 -0
- data/test/unit/ut_11_lookup.rb +59 -2
- data/test/unit/ut_12_wait_logger.rb +123 -0
- data/test/unit/ut_14_is_uri.rb +1 -1
- data/test/unit/ut_15_util.rb +1 -1
- data/test/unit/ut_16_reader.rb +136 -14
- data/test/unit/ut_17_merge.rb +155 -0
- data/test/unit/ut_19_part_template.rb +1 -1
- data/test/unit/ut_1_fei.rb +11 -2
- data/test/unit/ut_20_composite_storage.rb +27 -1
- data/test/unit/{ut_21_participant_list.rb → ut_21_svc_participant_list.rb} +2 -3
- data/test/unit/ut_22_filter.rb +231 -10
- data/test/unit/ut_23_svc_tracker.rb +48 -0
- data/test/unit/ut_24_radial_reader.rb +458 -0
- data/test/unit/ut_25_process_status.rb +143 -0
- data/test/unit/ut_26_deep.rb +131 -0
- data/test/unit/ut_2_dashboard.rb +114 -0
- data/test/unit/ut_3_worker.rb +54 -0
- data/test/unit/ut_4_expmap.rb +1 -1
- data/test/unit/ut_5_tree.rb +23 -23
- data/test/unit/ut_6_condition.rb +71 -29
- data/test/unit/ut_7_workitem.rb +18 -4
- data/test/unit/ut_8_tree_to_dot.rb +1 -1
- data/test/unit/ut_9_xml_reader.rb +1 -1
- metadata +142 -63
- data/jruby_issue.txt +0 -32
- data/lib/ruote/engine/process_status.rb +0 -403
- data/lib/ruote/log/pretty.rb +0 -165
- data/lib/ruote/log/test_logger.rb +0 -204
- data/lib/ruote/util/serializer.rb +0 -103
- data/phil.txt +0 -14
- data/test/functional/eft_33_let.rb +0 -31
- data/test/functional/ft_19_alias.rb +0 -33
- data/test/functional/ft_47_wfid_generator.rb +0 -54
- data/test/unit/storage.rb +0 -403
- data/test/unit/storages.rb +0 -37
- data/test/unit/ut_13_serializer.rb +0 -65
- data/test/unit/ut_18_engine.rb +0 -47
- data/test/unit/ut_3_wait_logger.rb +0 -39
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Mon Jun 29 09:35:48 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
require 'ruote/participant'
|
|
11
11
|
|
|
@@ -44,7 +44,7 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
@
|
|
47
|
+
@dashboard.register_participant '.*', TraceParticipant
|
|
48
48
|
|
|
49
49
|
#noisy
|
|
50
50
|
|
|
@@ -59,7 +59,7 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
@
|
|
62
|
+
@dashboard.register_participant '.*', TraceParticipant
|
|
63
63
|
|
|
64
64
|
assert_trace(%w[ alice/0_0_0 bob/0_0_0 charly/0_0_0 ], pdef)
|
|
65
65
|
end
|
|
@@ -73,11 +73,26 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
@
|
|
76
|
+
@dashboard.register_participant '.*', TraceParticipant
|
|
77
77
|
|
|
78
78
|
assert_trace(%w[ alice/0_1_0 bob/0_1_0 charly/0_1_0 ], pdef)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
+
def test_on_nested_f
|
|
82
|
+
|
|
83
|
+
pdef = Ruote.process_definition :name => 'test' do
|
|
84
|
+
set 'f:data' => {}
|
|
85
|
+
set 'f:data.people' => %w[ alice bob charly ]
|
|
86
|
+
iterator :on_f => 'data.people', :to_var => 'v' do
|
|
87
|
+
participant '${v:v}'
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
@dashboard.register_participant '.*', TraceParticipant
|
|
92
|
+
|
|
93
|
+
assert_trace(%w[ alice/0_2_0 bob/0_2_0 charly/0_2_0 ], pdef)
|
|
94
|
+
end
|
|
95
|
+
|
|
81
96
|
def test_to_f
|
|
82
97
|
|
|
83
98
|
pdef = Ruote.process_definition :name => 'test' do
|
|
@@ -86,8 +101,8 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
86
101
|
end
|
|
87
102
|
end
|
|
88
103
|
|
|
89
|
-
@
|
|
90
|
-
|
|
104
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
105
|
+
tracer << "#{workitem.fields['f']}/#{workitem.fei.expid}\n"
|
|
91
106
|
end
|
|
92
107
|
|
|
93
108
|
#noisy
|
|
@@ -95,6 +110,28 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
95
110
|
assert_trace(%w[ alice/0_0_0 bob/0_0_0 charly/0_0_0 ], pdef)
|
|
96
111
|
end
|
|
97
112
|
|
|
113
|
+
def test_to
|
|
114
|
+
|
|
115
|
+
pdef = Ruote.process_definition :name => 'test' do
|
|
116
|
+
iterator :on_val => 'a, b', :to => 'x' do
|
|
117
|
+
echo '${f:x}'
|
|
118
|
+
end
|
|
119
|
+
iterator :on_val => 'c, d', :to => 'f:y' do
|
|
120
|
+
echo '${f:y}'
|
|
121
|
+
end
|
|
122
|
+
iterator :on_val => 'e, f', :to => 'v:z' do
|
|
123
|
+
echo '${v:z}'
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
#@dashboard.noisy = true
|
|
128
|
+
|
|
129
|
+
wfid = @dashboard.launch(pdef)
|
|
130
|
+
@dashboard.wait_for(wfid)
|
|
131
|
+
|
|
132
|
+
assert_equal %w[ a b c d e f ], @tracer.to_a
|
|
133
|
+
end
|
|
134
|
+
|
|
98
135
|
PDEF0 = Ruote.process_definition :name => 'test' do
|
|
99
136
|
sequence do
|
|
100
137
|
iterator :on_val => 'alice, bob, charly', :to_var => 'v' do
|
|
@@ -106,9 +143,9 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
106
143
|
|
|
107
144
|
def test_break
|
|
108
145
|
|
|
109
|
-
@
|
|
146
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
110
147
|
|
|
111
|
-
|
|
148
|
+
tracer << "#{workitem.participant_name}\n"
|
|
112
149
|
|
|
113
150
|
if workitem.participant_name == 'bob'
|
|
114
151
|
workitem.fields['__command__'] = [ 'break', nil ]
|
|
@@ -124,12 +161,12 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
124
161
|
|
|
125
162
|
stash[:rewound] = false
|
|
126
163
|
|
|
127
|
-
@
|
|
164
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
128
165
|
|
|
129
|
-
|
|
166
|
+
tracer << "#{workitem.participant_name}\n"
|
|
130
167
|
|
|
131
|
-
if (not stash[:rewound]) and workitem.participant_name == 'bob'
|
|
132
|
-
stash[:rewound] = true
|
|
168
|
+
if (not context.stash[:rewound]) and workitem.participant_name == 'bob'
|
|
169
|
+
context.stash[:rewound] = true
|
|
133
170
|
workitem.fields['__command__'] = [ 'rewind', nil ]
|
|
134
171
|
end
|
|
135
172
|
end
|
|
@@ -141,9 +178,9 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
141
178
|
|
|
142
179
|
def test_skip
|
|
143
180
|
|
|
144
|
-
@
|
|
181
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
145
182
|
|
|
146
|
-
|
|
183
|
+
tracer << "#{workitem.participant_name}\n"
|
|
147
184
|
|
|
148
185
|
if workitem.participant_name == 'alice'
|
|
149
186
|
workitem.fields['__command__'] = [ 'skip', 1 ]
|
|
@@ -157,9 +194,9 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
157
194
|
|
|
158
195
|
def test_jump
|
|
159
196
|
|
|
160
|
-
@
|
|
197
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
161
198
|
|
|
162
|
-
|
|
199
|
+
tracer << "#{workitem.participant_name}\n"
|
|
163
200
|
|
|
164
201
|
if workitem.participant_name == 'alice'
|
|
165
202
|
workitem.fields['__command__'] = [ 'jump', -1 ]
|
|
@@ -182,8 +219,8 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
182
219
|
end
|
|
183
220
|
end
|
|
184
221
|
|
|
185
|
-
@
|
|
186
|
-
|
|
222
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
223
|
+
tracer << "#{workitem.participant_name}/#{workitem.fei.expid}\n"
|
|
187
224
|
end
|
|
188
225
|
|
|
189
226
|
#noisy
|
|
@@ -199,8 +236,8 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
199
236
|
end
|
|
200
237
|
end
|
|
201
238
|
|
|
202
|
-
@
|
|
203
|
-
|
|
239
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
240
|
+
tracer << "#{workitem.participant_name}/#{workitem.fei.expid}\n"
|
|
204
241
|
end
|
|
205
242
|
|
|
206
243
|
#noisy
|
|
@@ -217,8 +254,8 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
217
254
|
end
|
|
218
255
|
end
|
|
219
256
|
|
|
220
|
-
@
|
|
221
|
-
|
|
257
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
258
|
+
tracer << "#{workitem.participant_name}/#{workitem.fei.expid}\n"
|
|
222
259
|
end
|
|
223
260
|
|
|
224
261
|
#noisy
|
|
@@ -234,9 +271,9 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
234
271
|
end
|
|
235
272
|
end
|
|
236
273
|
|
|
237
|
-
@
|
|
238
|
-
|
|
239
|
-
|
|
274
|
+
@dashboard.register_participant :p1 do |wi|
|
|
275
|
+
tracer << wi.fields['f'].join(':')
|
|
276
|
+
tracer << "\n"
|
|
240
277
|
end
|
|
241
278
|
|
|
242
279
|
#noisy
|
|
@@ -252,13 +289,19 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
252
289
|
end
|
|
253
290
|
end
|
|
254
291
|
|
|
255
|
-
@
|
|
256
|
-
|
|
292
|
+
@dashboard.register_participant '.*' do |workitem|
|
|
293
|
+
tracer << "#{workitem.participant_name}/#{workitem.fei.expid}\n"
|
|
257
294
|
end
|
|
258
295
|
|
|
259
|
-
|
|
296
|
+
#@dashboard.noisy = true
|
|
260
297
|
|
|
261
|
-
|
|
298
|
+
wfid = @dashboard.launch(pdef)
|
|
299
|
+
r = @dashboard.wait_for(wfid)
|
|
300
|
+
|
|
301
|
+
assert_equal %w[ alice:0/0_0_0 bob:1/0_0_0 charly:2/0_0_0 ], @tracer.to_a
|
|
302
|
+
|
|
303
|
+
assert_equal 'charly', r['variables']['i']
|
|
304
|
+
assert_equal 2, r['variables']['ii']
|
|
262
305
|
end
|
|
263
306
|
|
|
264
307
|
def test_nested_break
|
|
@@ -301,5 +344,28 @@ class EftIteratorTest < Test::Unit::TestCase
|
|
|
301
344
|
|
|
302
345
|
assert_trace %w[ 1 2 ], pdef
|
|
303
346
|
end
|
|
347
|
+
|
|
348
|
+
def test_implicit_sequence
|
|
349
|
+
|
|
350
|
+
pdef = Ruote.process_definition :name => 'test' do
|
|
351
|
+
iterator :on_val => 'alice, bob, charly', :to_var => 'v' do
|
|
352
|
+
echo '0:${v:v}'
|
|
353
|
+
echo '1:${v:v}'
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
#@dashboard.noisy = true
|
|
358
|
+
|
|
359
|
+
wfid = @dashboard.launch(pdef)
|
|
360
|
+
r = @dashboard.wait_for(wfid)
|
|
361
|
+
|
|
362
|
+
assert_equal(
|
|
363
|
+
%w[
|
|
364
|
+
0:alice 1:alice
|
|
365
|
+
0:bob 1:bob
|
|
366
|
+
0:charly 1:charly
|
|
367
|
+
],
|
|
368
|
+
@tracer.to_a)
|
|
369
|
+
end
|
|
304
370
|
end
|
|
305
371
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Mon Jun 29 18:34:02 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
require 'ruote/part/no_op_participant'
|
|
11
11
|
|
|
@@ -147,10 +147,10 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
149
|
|
|
150
|
-
@
|
|
150
|
+
@dashboard.register_participant :alpha do |workitem|
|
|
151
151
|
workitem.fields['counter'] += 1
|
|
152
152
|
workitem.fields['rewind'] = workitem.fields['counter'] < 5
|
|
153
|
-
|
|
153
|
+
tracer << "a\n"
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
#noisy
|
|
@@ -169,17 +169,17 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
171
|
|
|
172
|
-
@
|
|
173
|
-
|
|
174
|
-
stash[:count] ||= 0
|
|
175
|
-
stash[:count] += 1
|
|
172
|
+
@dashboard.register_participant :author do |workitem|
|
|
173
|
+
tracer << "a\n"
|
|
174
|
+
context.stash[:count] ||= 0
|
|
175
|
+
context.stash[:count] += 1
|
|
176
176
|
end
|
|
177
|
-
@
|
|
178
|
-
|
|
179
|
-
workitem.fields['not_ok'] = (stash[:count] < 3)
|
|
177
|
+
@dashboard.register_participant :reviewer do |workitem|
|
|
178
|
+
tracer << "r\n"
|
|
179
|
+
workitem.fields['not_ok'] = (context.stash[:count] < 3)
|
|
180
180
|
end
|
|
181
|
-
@
|
|
182
|
-
|
|
181
|
+
@dashboard.register_participant :publisher do |workitem|
|
|
182
|
+
tracer << "p\n"
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
#noisy
|
|
@@ -202,7 +202,7 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
202
202
|
|
|
203
203
|
#noisy
|
|
204
204
|
|
|
205
|
-
wfid = @
|
|
205
|
+
wfid = @dashboard.launch(pdef)
|
|
206
206
|
|
|
207
207
|
wait_for(14)
|
|
208
208
|
|
|
@@ -226,11 +226,11 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
226
226
|
end
|
|
227
227
|
end
|
|
228
228
|
|
|
229
|
-
@
|
|
229
|
+
@dashboard.register_participant :alpha, Ruote::NoOpParticipant
|
|
230
230
|
|
|
231
231
|
#noisy
|
|
232
232
|
|
|
233
|
-
wfid = @
|
|
233
|
+
wfid = @dashboard.launch(pdef)
|
|
234
234
|
|
|
235
235
|
wait_for(:alpha)
|
|
236
236
|
wait_for(wfid)
|
|
@@ -238,7 +238,7 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
238
238
|
#p @tracer.to_s
|
|
239
239
|
assert_equal %w[ a a a ], @tracer.to_a[0, 3]
|
|
240
240
|
|
|
241
|
-
assert_nil @
|
|
241
|
+
assert_nil @dashboard.process(wfid)
|
|
242
242
|
end
|
|
243
243
|
|
|
244
244
|
def test_nested_break
|
|
@@ -319,7 +319,7 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
319
319
|
|
|
320
320
|
#noisy
|
|
321
321
|
|
|
322
|
-
@
|
|
322
|
+
@dashboard.register do
|
|
323
323
|
alpha EftCursorTest::Alpha
|
|
324
324
|
bravo EftCursorTest::Bravo
|
|
325
325
|
end
|
|
@@ -335,13 +335,13 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
335
335
|
end
|
|
336
336
|
end
|
|
337
337
|
|
|
338
|
-
#@
|
|
338
|
+
#@dashboard.noisy = true
|
|
339
339
|
|
|
340
|
-
wfid = @
|
|
340
|
+
wfid = @dashboard.launch(pdef)
|
|
341
341
|
|
|
342
|
-
@
|
|
342
|
+
@dashboard.wait_for(9)
|
|
343
343
|
|
|
344
|
-
assert_not_nil @
|
|
344
|
+
assert_not_nil @dashboard.process(wfid)
|
|
345
345
|
end
|
|
346
346
|
|
|
347
347
|
class Charly
|
|
@@ -371,7 +371,7 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
371
371
|
|
|
372
372
|
#noisy
|
|
373
373
|
|
|
374
|
-
@
|
|
374
|
+
@dashboard.register do
|
|
375
375
|
charly EftCursorTest::Charly, 'command' => [ 'jump', 'delta' ]
|
|
376
376
|
catchall Ruote::NoOpParticipant
|
|
377
377
|
end
|
|
@@ -383,7 +383,7 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
383
383
|
|
|
384
384
|
#noisy
|
|
385
385
|
|
|
386
|
-
@
|
|
386
|
+
@dashboard.register do
|
|
387
387
|
charly EftCursorTest::Charly, 'command' => 'jump delta'
|
|
388
388
|
catchall Ruote::NoOpParticipant
|
|
389
389
|
end
|
|
@@ -395,12 +395,62 @@ class EftCursorTest < Test::Unit::TestCase
|
|
|
395
395
|
|
|
396
396
|
#noisy
|
|
397
397
|
|
|
398
|
-
@
|
|
398
|
+
@dashboard.register do
|
|
399
399
|
charly EftCursorTest::Charly, 'command' => 'jump to delta'
|
|
400
400
|
catchall Ruote::NoOpParticipant
|
|
401
401
|
end
|
|
402
402
|
|
|
403
403
|
assert_trace "top\nbottom", JUMP_DEF
|
|
404
404
|
end
|
|
405
|
+
|
|
406
|
+
def test_reset
|
|
407
|
+
|
|
408
|
+
pdef = Ruote.define do
|
|
409
|
+
cursor do
|
|
410
|
+
alpha
|
|
411
|
+
set 'f:toto' => 'oops'
|
|
412
|
+
reset
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
@dashboard.register { catchall }
|
|
417
|
+
|
|
418
|
+
#@dashboard.noisy = true
|
|
419
|
+
|
|
420
|
+
wfid = @dashboard.launch(pdef)
|
|
421
|
+
@dashboard.wait_for(:alpha)
|
|
422
|
+
|
|
423
|
+
assert_nil @dashboard.storage_participant.first.fields['toto']
|
|
424
|
+
|
|
425
|
+
@dashboard.storage_participant.proceed(@dashboard.storage_participant.first)
|
|
426
|
+
@dashboard.wait_for(:alpha)
|
|
427
|
+
|
|
428
|
+
assert_nil @dashboard.storage_participant.first.fields['toto']
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
def test_reset_if
|
|
432
|
+
|
|
433
|
+
pdef = Ruote.define do
|
|
434
|
+
cursor :reset_if => '${f:reset} == true' do
|
|
435
|
+
alpha
|
|
436
|
+
set 'f:toto' => 'oops'
|
|
437
|
+
set 'f:reset' => true
|
|
438
|
+
end
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
@dashboard.register { catchall }
|
|
442
|
+
|
|
443
|
+
#@dashboard.noisy = true
|
|
444
|
+
|
|
445
|
+
wfid = @dashboard.launch(pdef)
|
|
446
|
+
@dashboard.wait_for(:alpha)
|
|
447
|
+
|
|
448
|
+
assert_nil @dashboard.storage_participant.first.fields['toto']
|
|
449
|
+
|
|
450
|
+
@dashboard.storage_participant.proceed(@dashboard.storage_participant.first)
|
|
451
|
+
@dashboard.wait_for(:alpha)
|
|
452
|
+
|
|
453
|
+
assert_nil @dashboard.storage_participant.first.fields['toto']
|
|
454
|
+
end
|
|
405
455
|
end
|
|
406
456
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Mon Jun 29 22:29:15 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class EftLoopTest < Test::Unit::TestCase
|
|
@@ -22,16 +22,16 @@ class EftLoopTest < Test::Unit::TestCase
|
|
|
22
22
|
|
|
23
23
|
#noisy
|
|
24
24
|
|
|
25
|
-
@
|
|
25
|
+
@dashboard.register_participant :alpha do |workitem|
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
tracer << "a\n"
|
|
28
28
|
(workitem.fields['count'] ||= 0)
|
|
29
29
|
workitem.fields['count'] += 1
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
@
|
|
32
|
+
@dashboard.register_participant :bravo do |workitem|
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
tracer << "b\n"
|
|
35
35
|
workitem.fields['count'] += 1
|
|
36
36
|
|
|
37
37
|
if workitem.fields['count'] > 5
|
|
@@ -52,9 +52,9 @@ class EftLoopTest < Test::Unit::TestCase
|
|
|
52
52
|
|
|
53
53
|
#noisy
|
|
54
54
|
|
|
55
|
-
@
|
|
55
|
+
@dashboard.register_participant :alpha do |workitem|
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
tracer << "a\n"
|
|
58
58
|
(workitem.fields['count'] ||= 0)
|
|
59
59
|
workitem.fields['count'] += 1
|
|
60
60
|
|