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
|
# Thu Jun 25 13:31:26 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class FtReApplyTest < Test::Unit::TestCase
|
|
@@ -20,29 +20,29 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
20
20
|
|
|
21
21
|
def test_re_apply
|
|
22
22
|
|
|
23
|
-
alpha = @
|
|
23
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
24
24
|
|
|
25
25
|
#noisy
|
|
26
26
|
|
|
27
|
-
wfid = @
|
|
27
|
+
wfid = @dashboard.launch(PDEF)
|
|
28
28
|
wait_for(:alpha)
|
|
29
29
|
|
|
30
30
|
id0 = alpha.first.object_id
|
|
31
31
|
|
|
32
32
|
# ... flow stalled ...
|
|
33
33
|
|
|
34
|
-
ps = @
|
|
34
|
+
ps = @dashboard.process(wfid)
|
|
35
35
|
|
|
36
36
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
37
37
|
|
|
38
|
-
@
|
|
38
|
+
@dashboard.re_apply(stalled_exp.fei)
|
|
39
39
|
|
|
40
40
|
wait_for(:alpha)
|
|
41
41
|
|
|
42
42
|
assert_equal 1, alpha.size
|
|
43
43
|
assert_not_equal id0, alpha.first.object_id
|
|
44
44
|
|
|
45
|
-
alpha.
|
|
45
|
+
alpha.proceed(alpha.first)
|
|
46
46
|
|
|
47
47
|
wait_for(wfid)
|
|
48
48
|
|
|
@@ -51,29 +51,29 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
51
51
|
|
|
52
52
|
def test_cancel_and_re_apply
|
|
53
53
|
|
|
54
|
-
alpha = @
|
|
54
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
55
55
|
|
|
56
56
|
#noisy
|
|
57
57
|
|
|
58
|
-
wfid = @
|
|
58
|
+
wfid = @dashboard.launch(PDEF)
|
|
59
59
|
wait_for(:alpha)
|
|
60
60
|
|
|
61
61
|
id0 = alpha.first.object_id
|
|
62
62
|
|
|
63
63
|
# ... flow stalled ...
|
|
64
64
|
|
|
65
|
-
ps = @
|
|
65
|
+
ps = @dashboard.process(wfid)
|
|
66
66
|
|
|
67
67
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
68
68
|
|
|
69
|
-
@
|
|
69
|
+
@dashboard.re_apply(stalled_exp.fei)
|
|
70
70
|
|
|
71
71
|
wait_for(:alpha)
|
|
72
72
|
|
|
73
73
|
assert_equal 1, alpha.size
|
|
74
74
|
assert_not_equal id0, alpha.first.object_id
|
|
75
75
|
|
|
76
|
-
alpha.
|
|
76
|
+
alpha.proceed(alpha.first)
|
|
77
77
|
|
|
78
78
|
wait_for(wfid)
|
|
79
79
|
|
|
@@ -82,11 +82,11 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
82
82
|
|
|
83
83
|
def test_update_expression_and_re_apply
|
|
84
84
|
|
|
85
|
-
alpha = @
|
|
85
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
86
86
|
|
|
87
87
|
#noisy
|
|
88
88
|
|
|
89
|
-
wfid = @
|
|
89
|
+
wfid = @dashboard.launch(PDEF)
|
|
90
90
|
wait_for(:alpha)
|
|
91
91
|
|
|
92
92
|
sleep 0.350 # threaded dispatch
|
|
@@ -95,7 +95,7 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
95
95
|
|
|
96
96
|
# ... flow stalled ...
|
|
97
97
|
|
|
98
|
-
ps = @
|
|
98
|
+
ps = @dashboard.process(wfid)
|
|
99
99
|
|
|
100
100
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
101
101
|
|
|
@@ -104,13 +104,13 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
104
104
|
#p [ :stalled, stalled_exp.h['_rev'] ]
|
|
105
105
|
stalled_exp.persist
|
|
106
106
|
|
|
107
|
-
@
|
|
107
|
+
@dashboard.re_apply(stalled_exp.fei)
|
|
108
108
|
|
|
109
109
|
wait_for(:alpha)
|
|
110
110
|
|
|
111
111
|
assert_equal 'mow lawn', alpha.first.fields['params']['activity']
|
|
112
112
|
|
|
113
|
-
alpha.
|
|
113
|
+
alpha.proceed(alpha.first)
|
|
114
114
|
|
|
115
115
|
wait_for(wfid)
|
|
116
116
|
|
|
@@ -126,29 +126,29 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
alpha = @
|
|
129
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
130
130
|
|
|
131
131
|
#noisy
|
|
132
132
|
|
|
133
|
-
wfid = @
|
|
133
|
+
wfid = @dashboard.launch(pdef)
|
|
134
134
|
wait_for(:alpha)
|
|
135
135
|
|
|
136
136
|
id0 = alpha.first.object_id
|
|
137
137
|
|
|
138
138
|
# ... flow stalled ...
|
|
139
139
|
|
|
140
|
-
ps = @
|
|
140
|
+
ps = @dashboard.process(wfid)
|
|
141
141
|
|
|
142
142
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
143
143
|
|
|
144
|
-
@
|
|
144
|
+
@dashboard.re_apply(stalled_exp.fei, :fields => { 'x' => 'nada' })
|
|
145
145
|
|
|
146
146
|
wait_for(:alpha)
|
|
147
147
|
|
|
148
148
|
assert_equal 1, alpha.size
|
|
149
149
|
assert_not_equal id0, alpha.first.object_id
|
|
150
150
|
|
|
151
|
-
alpha.
|
|
151
|
+
alpha.proceed(alpha.first)
|
|
152
152
|
|
|
153
153
|
wait_for(wfid)
|
|
154
154
|
|
|
@@ -164,29 +164,29 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
164
164
|
end
|
|
165
165
|
end
|
|
166
166
|
|
|
167
|
-
alpha = @
|
|
167
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
168
168
|
|
|
169
169
|
#noisy
|
|
170
170
|
|
|
171
|
-
wfid = @
|
|
171
|
+
wfid = @dashboard.launch(pdef, { 'y' => 'nemo' })
|
|
172
172
|
wait_for(:alpha)
|
|
173
173
|
|
|
174
174
|
id0 = alpha.first.object_id
|
|
175
175
|
|
|
176
176
|
# ... flow stalled ...
|
|
177
177
|
|
|
178
|
-
ps = @
|
|
178
|
+
ps = @dashboard.process(wfid)
|
|
179
179
|
|
|
180
180
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
181
181
|
|
|
182
|
-
@
|
|
182
|
+
@dashboard.re_apply(stalled_exp.fei, :merge_in_fields => { 'x' => 'nada' })
|
|
183
183
|
|
|
184
184
|
wait_for(:alpha)
|
|
185
185
|
|
|
186
186
|
assert_equal 1, alpha.size
|
|
187
187
|
assert_not_equal id0, alpha.first.object_id
|
|
188
188
|
|
|
189
|
-
alpha.
|
|
189
|
+
alpha.proceed(alpha.first)
|
|
190
190
|
|
|
191
191
|
wait_for(wfid)
|
|
192
192
|
|
|
@@ -195,22 +195,22 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
195
195
|
|
|
196
196
|
def test_re_apply_with_new_tree
|
|
197
197
|
|
|
198
|
-
alpha = @
|
|
198
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
199
199
|
|
|
200
200
|
#noisy
|
|
201
201
|
|
|
202
|
-
wfid = @
|
|
202
|
+
wfid = @dashboard.launch(PDEF)
|
|
203
203
|
wait_for(:alpha)
|
|
204
204
|
|
|
205
205
|
id0 = alpha.first.object_id
|
|
206
206
|
|
|
207
207
|
# ... flow stalled ...
|
|
208
208
|
|
|
209
|
-
ps = @
|
|
209
|
+
ps = @dashboard.process(wfid)
|
|
210
210
|
|
|
211
211
|
stalled_exp = ps.expressions.find { |fexp| fexp.fei.expid == '0_0_0' }
|
|
212
212
|
|
|
213
|
-
@
|
|
213
|
+
@dashboard.re_apply(
|
|
214
214
|
stalled_exp.fei, :tree => [ 'echo', { 're_applied' => nil }, [] ])
|
|
215
215
|
|
|
216
216
|
wait_for(wfid)
|
|
@@ -220,77 +220,133 @@ class FtReApplyTest < Test::Unit::TestCase
|
|
|
220
220
|
|
|
221
221
|
def test_new_tree_and_process_status_current_tree
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
#@dashboard.noisy = true
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
@dashboard.register_participant '.+', Ruote::StorageParticipant
|
|
226
226
|
|
|
227
|
-
@
|
|
227
|
+
wfid = @dashboard.launch(Ruote.define { alpha })
|
|
228
|
+
|
|
229
|
+
@dashboard.wait_for(:alpha)
|
|
228
230
|
|
|
229
231
|
assert_equal(
|
|
230
232
|
[ 'define', {}, [ [ 'participant', { 'ref' => 'alpha' }, [] ] ] ],
|
|
231
|
-
@
|
|
233
|
+
@dashboard.process(wfid).current_tree)
|
|
232
234
|
|
|
233
|
-
fei = @
|
|
235
|
+
fei = @dashboard.storage_participant.first.fei
|
|
234
236
|
|
|
235
|
-
@
|
|
237
|
+
@dashboard.re_apply(fei, :tree => [ 'bravo', {}, [] ])
|
|
236
238
|
|
|
237
|
-
@
|
|
239
|
+
@dashboard.wait_for(:bravo)
|
|
238
240
|
|
|
239
241
|
assert_equal(
|
|
240
242
|
'bravo',
|
|
241
|
-
@
|
|
243
|
+
@dashboard.storage_participant.first.participant_name)
|
|
242
244
|
|
|
243
245
|
assert_equal(
|
|
244
246
|
[ 'participant', { 'ref' => 'bravo', '_triggered' => 'on_re_apply' }, [] ],
|
|
245
|
-
@
|
|
247
|
+
@dashboard.process(wfid).expressions.last.tree)
|
|
246
248
|
|
|
247
249
|
assert_equal(
|
|
248
250
|
[ 'define', {}, [ [ 'participant', { 'ref' => 'bravo', '_triggered' => 'on_re_apply' }, [] ] ] ],
|
|
249
|
-
@
|
|
251
|
+
@dashboard.process(wfid).current_tree)
|
|
250
252
|
end
|
|
251
253
|
|
|
252
254
|
# Issue reported by Brett Anthoine
|
|
253
255
|
#
|
|
254
256
|
def test_re_apply_root
|
|
255
257
|
|
|
256
|
-
@
|
|
258
|
+
@dashboard.register_participant '.+', Ruote::StorageParticipant
|
|
257
259
|
|
|
258
|
-
wfid = @
|
|
260
|
+
wfid = @dashboard.launch(Ruote.define { alpha })
|
|
259
261
|
|
|
260
|
-
@
|
|
261
|
-
at0 = @
|
|
262
|
+
@dashboard.wait_for(:alpha)
|
|
263
|
+
at0 = @dashboard.storage_participant.first.dispatched_at
|
|
262
264
|
|
|
263
|
-
root = @
|
|
264
|
-
@
|
|
265
|
+
root = @dashboard.process(wfid).root_expression
|
|
266
|
+
@dashboard.re_apply(root.fei)
|
|
265
267
|
|
|
266
|
-
@
|
|
267
|
-
at1 = @
|
|
268
|
+
@dashboard.wait_for(:alpha)
|
|
269
|
+
at1 = @dashboard.storage_participant.first.dispatched_at
|
|
268
270
|
|
|
269
271
|
assert at1 > at0
|
|
270
272
|
end
|
|
271
273
|
|
|
272
274
|
def test_re_apply_define
|
|
273
275
|
|
|
274
|
-
@
|
|
276
|
+
@dashboard.register_participant '.+', Ruote::StorageParticipant
|
|
275
277
|
|
|
276
|
-
wfid = @
|
|
278
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
277
279
|
sub0
|
|
278
280
|
define 'sub0' do
|
|
279
281
|
alpha
|
|
280
282
|
end
|
|
281
283
|
end)
|
|
282
284
|
|
|
283
|
-
@
|
|
284
|
-
at0 = @
|
|
285
|
+
@dashboard.wait_for(:alpha)
|
|
286
|
+
at0 = @dashboard.storage_participant.first.dispatched_at
|
|
285
287
|
|
|
286
|
-
exp = @
|
|
288
|
+
exp = @dashboard.process(wfid).expressions[1]
|
|
287
289
|
|
|
288
|
-
@
|
|
290
|
+
@dashboard.re_apply(exp.fei)
|
|
289
291
|
|
|
290
|
-
@
|
|
291
|
-
at1 = @
|
|
292
|
+
@dashboard.wait_for(:alpha)
|
|
293
|
+
at1 = @dashboard.storage_participant.first.dispatched_at
|
|
292
294
|
|
|
293
295
|
assert at1 > at0
|
|
294
296
|
end
|
|
297
|
+
|
|
298
|
+
def test_re_apply_chunk
|
|
299
|
+
|
|
300
|
+
@dashboard.register_participant '.+', Ruote::StorageParticipant
|
|
301
|
+
|
|
302
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
303
|
+
alpha
|
|
304
|
+
end)
|
|
305
|
+
|
|
306
|
+
@dashboard.wait_for(:alpha)
|
|
307
|
+
|
|
308
|
+
at0 = @dashboard.storage_participant.first.dispatched_at
|
|
309
|
+
|
|
310
|
+
exp = @dashboard.process(wfid).expressions.last
|
|
311
|
+
|
|
312
|
+
t = Ruote.tree do
|
|
313
|
+
alpha :take => two
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
@dashboard.re_apply(exp)
|
|
317
|
+
@dashboard.wait_for(:alpha)
|
|
318
|
+
|
|
319
|
+
wi1 = @dashboard.storage_participant.first
|
|
320
|
+
at1 = wi1.dispatched_at
|
|
321
|
+
|
|
322
|
+
assert at1 > at0
|
|
323
|
+
assert_equal 'on_re_apply', wi1.params['_triggered']
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
# Making sure re_apply nukes errors
|
|
327
|
+
#
|
|
328
|
+
def test_re_apply_error
|
|
329
|
+
|
|
330
|
+
#@dashboard.noisy = true
|
|
331
|
+
|
|
332
|
+
@dashboard.register_participant '.+', Ruote::StorageParticipant
|
|
333
|
+
|
|
334
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
335
|
+
error "X"
|
|
336
|
+
end)
|
|
337
|
+
|
|
338
|
+
@dashboard.wait_for(wfid)
|
|
339
|
+
|
|
340
|
+
fei = @dashboard.ps(wfid).expressions.last.fei
|
|
341
|
+
|
|
342
|
+
@dashboard.re_apply(fei, :tree => [ 'alpha', {}, [] ])
|
|
343
|
+
|
|
344
|
+
@dashboard.wait_for(:alpha)
|
|
345
|
+
|
|
346
|
+
ps = @dashboard.ps(wfid)
|
|
347
|
+
|
|
348
|
+
assert_equal 0, ps.errors.size
|
|
349
|
+
assert_equal Ruote::Exp::ParticipantExpression, ps.expressions.last.class
|
|
350
|
+
end
|
|
295
351
|
end
|
|
296
352
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Sun Jun 28 16:45:57 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class FtTimeoutTest < Test::Unit::TestCase
|
|
@@ -20,21 +20,27 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
@
|
|
24
|
-
sto = @
|
|
23
|
+
@dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
24
|
+
sto = @dashboard.register_participant :bravo, Ruote::StorageParticipant
|
|
25
25
|
|
|
26
26
|
#noisy
|
|
27
27
|
|
|
28
|
-
wfid = @
|
|
28
|
+
wfid = @dashboard.launch(pdef)
|
|
29
29
|
wait_for(:bravo)
|
|
30
30
|
|
|
31
31
|
assert_equal 1, sto.size
|
|
32
32
|
assert_equal 'bravo', sto.first.participant_name
|
|
33
33
|
|
|
34
34
|
assert_equal 2, logger.log.select { |e| e['flavour'] == 'timeout' }.size
|
|
35
|
-
assert_equal 0, @
|
|
35
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
assert_equal wfid, sto.first.fields['__timed_out__'][0]['wfid']
|
|
38
|
+
assert_equal '0_0_0', sto.first.fields['__timed_out__'][0]['expid']
|
|
39
|
+
assert_equal 'participant', sto.first.fields['__timed_out__'][2]
|
|
40
|
+
|
|
41
|
+
assert_equal(
|
|
42
|
+
{ 'timeout' => '1.1', 'ref' => 'alpha' },
|
|
43
|
+
sto.first.fields['__timed_out__'][3])
|
|
38
44
|
end
|
|
39
45
|
|
|
40
46
|
def test_cancel_timeout
|
|
@@ -46,24 +52,24 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
46
52
|
end
|
|
47
53
|
end
|
|
48
54
|
|
|
49
|
-
@
|
|
50
|
-
sto = @
|
|
55
|
+
@dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
56
|
+
sto = @dashboard.register_participant :bravo, Ruote::StorageParticipant
|
|
51
57
|
|
|
52
58
|
#noisy
|
|
53
59
|
|
|
54
|
-
wfid = @
|
|
60
|
+
wfid = @dashboard.launch(pdef)
|
|
55
61
|
wait_for(6)
|
|
56
62
|
|
|
57
63
|
assert_equal 1, sto.size
|
|
58
64
|
assert_equal 'alpha', sto.first.participant_name
|
|
59
65
|
|
|
60
|
-
@
|
|
66
|
+
@dashboard.cancel_expression(sto.first.fei)
|
|
61
67
|
|
|
62
68
|
wait_for(:bravo)
|
|
63
69
|
|
|
64
70
|
assert_equal 1, sto.size
|
|
65
71
|
assert_equal 'bravo', sto.first.participant_name
|
|
66
|
-
assert_equal 0, @
|
|
72
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
67
73
|
end
|
|
68
74
|
|
|
69
75
|
def test_on_timeout_redo
|
|
@@ -82,11 +88,11 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
82
88
|
alpha :timeout => '1.1', :on_timeout => 'redo'
|
|
83
89
|
end
|
|
84
90
|
|
|
85
|
-
alpha = @
|
|
91
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
86
92
|
|
|
87
93
|
#noisy
|
|
88
94
|
|
|
89
|
-
wfid = @
|
|
95
|
+
wfid = @dashboard.launch(pdef)
|
|
90
96
|
wait_for(8)
|
|
91
97
|
|
|
92
98
|
#logger.log.each { |e| p e['flavour'] }
|
|
@@ -94,12 +100,12 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
94
100
|
|
|
95
101
|
3.times do
|
|
96
102
|
Thread.pass
|
|
97
|
-
@
|
|
103
|
+
@dashboard.cancel_process(wfid)
|
|
98
104
|
end
|
|
99
105
|
|
|
100
106
|
wait_for(wfid)
|
|
101
107
|
|
|
102
|
-
assert_nil @
|
|
108
|
+
assert_nil @dashboard.process(wfid)
|
|
103
109
|
end
|
|
104
110
|
|
|
105
111
|
def test_on_timeout_cancel_nested
|
|
@@ -113,16 +119,16 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
113
119
|
end
|
|
114
120
|
end
|
|
115
121
|
|
|
116
|
-
alpha = @
|
|
122
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
117
123
|
|
|
118
124
|
#noisy
|
|
119
125
|
|
|
120
|
-
wfid = @
|
|
126
|
+
wfid = @dashboard.launch(pdef)
|
|
121
127
|
wait_for(wfid)
|
|
122
128
|
|
|
123
|
-
assert_nil @
|
|
129
|
+
assert_nil @dashboard.process(wfid)
|
|
124
130
|
assert_equal 'timed out', @tracer.to_s
|
|
125
|
-
assert_equal 0, @
|
|
131
|
+
assert_equal 0, @dashboard.context.storage.get_many('expressions').size
|
|
126
132
|
assert_equal 0, alpha.size
|
|
127
133
|
end
|
|
128
134
|
|
|
@@ -132,21 +138,21 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
132
138
|
alpha :timeout => '1.1', :on_timeout => 'error'
|
|
133
139
|
end
|
|
134
140
|
|
|
135
|
-
alpha = @
|
|
141
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
136
142
|
|
|
137
143
|
#noisy
|
|
138
144
|
|
|
139
|
-
wfid = @
|
|
145
|
+
wfid = @dashboard.launch(pdef)
|
|
140
146
|
wait_for(wfid)
|
|
141
147
|
|
|
142
|
-
ps = @
|
|
148
|
+
ps = @dashboard.process(wfid)
|
|
143
149
|
|
|
144
150
|
assert_equal 1, ps.errors.size
|
|
145
151
|
|
|
146
152
|
err = ps.errors.first
|
|
147
153
|
err.tree = [ 'alpha', {}, [] ]
|
|
148
154
|
|
|
149
|
-
@
|
|
155
|
+
@dashboard.replay_at_error(err)
|
|
150
156
|
wait_for(:alpha)
|
|
151
157
|
|
|
152
158
|
assert_equal 1, alpha.size
|
|
@@ -161,18 +167,43 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
161
167
|
end
|
|
162
168
|
end
|
|
163
169
|
|
|
164
|
-
alpha = @
|
|
170
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
165
171
|
|
|
166
|
-
wfid = @
|
|
172
|
+
wfid = @dashboard.launch(pdef)
|
|
167
173
|
wait_for(wfid)
|
|
168
174
|
|
|
169
|
-
ps = @
|
|
175
|
+
ps = @dashboard.process(wfid)
|
|
170
176
|
|
|
171
177
|
assert_equal 1, ps.errors.size
|
|
172
178
|
assert_equal 0, alpha.size
|
|
173
179
|
assert_equal 2, ps.expressions.size
|
|
174
180
|
end
|
|
175
181
|
|
|
182
|
+
def test_on_timeout_jump
|
|
183
|
+
|
|
184
|
+
pdef = Ruote.define do
|
|
185
|
+
cursor do
|
|
186
|
+
alpha :timeout => '1.1', :on_timeout => 'jump to charly'
|
|
187
|
+
bravo
|
|
188
|
+
charly
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
@dashboard.register_participant 'alpha' do |wi|
|
|
193
|
+
sleep 60
|
|
194
|
+
end
|
|
195
|
+
@dashboard.register_participant '.+' do |wi|
|
|
196
|
+
tracer << wi.participant_name + "\n"
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
#@dashboard.noisy = true
|
|
200
|
+
|
|
201
|
+
wfid = @dashboard.launch(pdef)
|
|
202
|
+
@dashboard.wait_for(wfid)
|
|
203
|
+
|
|
204
|
+
assert_equal 'charly', @tracer.to_s
|
|
205
|
+
end
|
|
206
|
+
|
|
176
207
|
def test_timeout_then_error
|
|
177
208
|
|
|
178
209
|
pdef = Ruote.process_definition do
|
|
@@ -183,14 +214,14 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
183
214
|
|
|
184
215
|
#noisy
|
|
185
216
|
|
|
186
|
-
wfid = @
|
|
217
|
+
wfid = @dashboard.launch(pdef)
|
|
187
218
|
|
|
188
219
|
wait_for(4)
|
|
189
220
|
|
|
190
|
-
ps = @
|
|
221
|
+
ps = @dashboard.process(wfid)
|
|
191
222
|
|
|
192
223
|
assert_equal 1, ps.errors.size
|
|
193
|
-
assert_equal 0, @
|
|
224
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
194
225
|
end
|
|
195
226
|
|
|
196
227
|
def test_timeout_at
|
|
@@ -203,18 +234,18 @@ class FtTimeoutTest < Test::Unit::TestCase
|
|
|
203
234
|
end
|
|
204
235
|
end
|
|
205
236
|
|
|
206
|
-
alpha = @
|
|
237
|
+
alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
207
238
|
|
|
208
239
|
#noisy
|
|
209
240
|
|
|
210
|
-
wfid = @
|
|
241
|
+
wfid = @dashboard.launch(pdef)
|
|
211
242
|
|
|
212
243
|
#wait_for(9)
|
|
213
244
|
wait_for(wfid)
|
|
214
245
|
|
|
215
|
-
assert_nil @
|
|
246
|
+
assert_nil @dashboard.process(wfid)
|
|
216
247
|
assert_equal 0, alpha.size
|
|
217
|
-
assert_equal 0, @
|
|
248
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
218
249
|
end
|
|
219
250
|
end
|
|
220
251
|
|