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 Sep 14 19:11:45 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
|
require 'ruote/part/null_participant'
|
|
@@ -20,15 +20,15 @@ class FtNullNoopParticipantsTest < Test::Unit::TestCase
|
|
|
20
20
|
alpha
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
alpha = @
|
|
23
|
+
alpha = @dashboard.register_participant :alpha, Ruote::NullParticipant
|
|
24
24
|
|
|
25
25
|
#noisy
|
|
26
26
|
|
|
27
|
-
wfid = @
|
|
27
|
+
wfid = @dashboard.launch(pdef)
|
|
28
28
|
|
|
29
29
|
wait_for(4)
|
|
30
30
|
|
|
31
|
-
ps = @
|
|
31
|
+
ps = @dashboard.process(wfid)
|
|
32
32
|
|
|
33
33
|
assert_not_nil ps
|
|
34
34
|
assert_equal [], ps.errors
|
|
@@ -41,7 +41,7 @@ class FtNullNoopParticipantsTest < Test::Unit::TestCase
|
|
|
41
41
|
echo 'done.'
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
@
|
|
44
|
+
@dashboard.register_participant :alpha, Ruote::NoOpParticipant
|
|
45
45
|
|
|
46
46
|
#noisy
|
|
47
47
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Mon Sep 14 19:31:37 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
|
require 'ruote/part/template'
|
|
@@ -49,7 +49,7 @@ class FtPartTemplateTest < Test::Unit::TestCase
|
|
|
49
49
|
|
|
50
50
|
#noisy
|
|
51
51
|
|
|
52
|
-
@
|
|
52
|
+
@dashboard.register_participant(
|
|
53
53
|
:alpha,
|
|
54
54
|
MyParticipant,
|
|
55
55
|
:template => "0:${v:var0}\n1:${f:field0}")
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Fri May 15 09:51:28 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
|
|
|
@@ -19,14 +19,14 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
19
19
|
nada
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
wfid = @
|
|
23
|
-
wait_for(wfid)
|
|
22
|
+
wfid = @dashboard.launch(pdef)
|
|
23
|
+
@dashboard.wait_for(wfid)
|
|
24
24
|
|
|
25
|
-
ps = @
|
|
25
|
+
ps = @dashboard.process(wfid)
|
|
26
26
|
|
|
27
27
|
assert_equal 1, ps.errors.size
|
|
28
28
|
|
|
29
|
-
pss = @
|
|
29
|
+
pss = @dashboard.processes
|
|
30
30
|
|
|
31
31
|
assert_equal 1, pss.size
|
|
32
32
|
assert_equal 1, pss.first.errors.size
|
|
@@ -40,27 +40,25 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
40
40
|
nada
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
wfid = @engine.launch(pdef)
|
|
43
|
+
wfid = @dashboard.launch(pdef)
|
|
46
44
|
wait_for(wfid)
|
|
47
45
|
|
|
48
|
-
ps = @
|
|
46
|
+
ps = @dashboard.process(wfid)
|
|
49
47
|
|
|
50
48
|
exp = ps.expressions.find { |fe| fe.class == Ruote::Exp::RefExpression }
|
|
51
49
|
|
|
52
50
|
assert_not_nil exp
|
|
53
51
|
|
|
54
|
-
@
|
|
55
|
-
|
|
52
|
+
@dashboard.register_participant :nada do |workitem|
|
|
53
|
+
tracer << 'done.'
|
|
56
54
|
end
|
|
57
55
|
|
|
58
|
-
@
|
|
56
|
+
@dashboard.re_apply(exp.fei)
|
|
59
57
|
wait_for(wfid)
|
|
60
58
|
|
|
61
59
|
assert_equal 'done.', @tracer.to_s
|
|
62
60
|
|
|
63
|
-
assert_equal 0, @
|
|
61
|
+
assert_equal 0, @dashboard.storage.get_many('errors').size
|
|
64
62
|
end
|
|
65
63
|
|
|
66
64
|
def test_error_replay
|
|
@@ -69,19 +67,17 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
69
67
|
nada
|
|
70
68
|
end
|
|
71
69
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
wfid = @engine.launch(pdef)
|
|
70
|
+
wfid = @dashboard.launch(pdef)
|
|
75
71
|
wait_for(wfid)
|
|
76
72
|
|
|
77
|
-
ps = @
|
|
73
|
+
ps = @dashboard.process(wfid)
|
|
78
74
|
|
|
79
75
|
err = ps.errors.first
|
|
80
76
|
|
|
81
|
-
@
|
|
77
|
+
@dashboard.replay_at_error(err)
|
|
82
78
|
|
|
83
79
|
wait_for(wfid)
|
|
84
|
-
ps = @
|
|
80
|
+
ps = @dashboard.process(wfid)
|
|
85
81
|
|
|
86
82
|
#p ps
|
|
87
83
|
|
|
@@ -93,7 +89,7 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
93
89
|
assert_not_equal err.at, err1.at
|
|
94
90
|
# not the same error
|
|
95
91
|
|
|
96
|
-
assert_equal 1, @
|
|
92
|
+
assert_equal 1, @dashboard.storage.get_many('errors').size
|
|
97
93
|
end
|
|
98
94
|
|
|
99
95
|
def test_error_fix_then_replay
|
|
@@ -102,30 +98,28 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
102
98
|
nada
|
|
103
99
|
end
|
|
104
100
|
|
|
105
|
-
@
|
|
106
|
-
|
|
101
|
+
@dashboard.register_participant :alpha do
|
|
102
|
+
tracer << "alpha\n"
|
|
107
103
|
end
|
|
108
104
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
wfid = @engine.launch(pdef)
|
|
105
|
+
wfid = @dashboard.launch(pdef)
|
|
112
106
|
wait_for(wfid)
|
|
113
|
-
ps = @
|
|
107
|
+
ps = @dashboard.process(wfid)
|
|
114
108
|
|
|
115
109
|
err = ps.errors.first
|
|
116
110
|
assert_equal [ 'nada', { 'ref' => 'nada' }, [] ], err.tree
|
|
117
111
|
|
|
118
112
|
err.tree = [ 'alpha', {}, [] ]
|
|
119
|
-
@
|
|
113
|
+
@dashboard.replay_at_error(err)
|
|
120
114
|
wait_for(wfid)
|
|
121
115
|
|
|
122
|
-
assert_nil @
|
|
116
|
+
assert_nil @dashboard.process(wfid)
|
|
123
117
|
|
|
124
118
|
assert_equal 'alpha', @tracer.to_s
|
|
125
119
|
|
|
126
120
|
# check if error is really gone from error journal...
|
|
127
121
|
|
|
128
|
-
assert_equal [], @
|
|
122
|
+
assert_equal [], @dashboard.storage.get_many('errors')
|
|
129
123
|
end
|
|
130
124
|
|
|
131
125
|
def test_error_in_participant
|
|
@@ -137,27 +131,25 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
137
131
|
end
|
|
138
132
|
end
|
|
139
133
|
|
|
140
|
-
@
|
|
134
|
+
@dashboard.context.stash[:count] = 0
|
|
141
135
|
|
|
142
|
-
@
|
|
136
|
+
@dashboard.register_participant :alpha do
|
|
143
137
|
stash[:count] += 1
|
|
144
|
-
|
|
138
|
+
tracer << "alpha\n"
|
|
145
139
|
raise "something went wrong" if stash[:count] == 1
|
|
146
140
|
end
|
|
147
141
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
wfid = @engine.launch(pdef)
|
|
142
|
+
wfid = @dashboard.launch(pdef)
|
|
151
143
|
|
|
152
144
|
wait_for(wfid)
|
|
153
145
|
|
|
154
146
|
sleep 0.250 # grrr...
|
|
155
147
|
|
|
156
|
-
ps = @
|
|
148
|
+
ps = @dashboard.process(wfid)
|
|
157
149
|
|
|
158
150
|
assert_equal 1, ps.errors.size
|
|
159
151
|
|
|
160
|
-
@
|
|
152
|
+
@dashboard.replay_at_error(ps.errors.first)
|
|
161
153
|
|
|
162
154
|
wait_for(wfid)
|
|
163
155
|
|
|
@@ -173,25 +165,23 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
173
165
|
end
|
|
174
166
|
end
|
|
175
167
|
|
|
176
|
-
@
|
|
168
|
+
@dashboard.context.stash[:count] = 0
|
|
177
169
|
|
|
178
|
-
alpha = @
|
|
170
|
+
alpha = @dashboard.register_participant :alpha, 'do_not_thread' => true do
|
|
179
171
|
stash[:count] += 1
|
|
180
|
-
|
|
172
|
+
tracer << "alpha\n"
|
|
181
173
|
raise "something went wrong" if stash[:count] == 1
|
|
182
174
|
end
|
|
183
175
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
wfid = @engine.launch(pdef)
|
|
176
|
+
wfid = @dashboard.launch(pdef)
|
|
187
177
|
|
|
188
178
|
wait_for(wfid)
|
|
189
179
|
|
|
190
|
-
ps = @
|
|
180
|
+
ps = @dashboard.process(wfid)
|
|
191
181
|
|
|
192
182
|
assert_equal 1, ps.errors.size
|
|
193
183
|
|
|
194
|
-
@
|
|
184
|
+
@dashboard.replay_at_error(ps.errors.first)
|
|
195
185
|
|
|
196
186
|
wait_for(wfid)
|
|
197
187
|
|
|
@@ -220,29 +210,27 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
220
210
|
alpha
|
|
221
211
|
end
|
|
222
212
|
|
|
223
|
-
@
|
|
213
|
+
@dashboard.register_participant 'alpha', WeakCancelParticipant
|
|
224
214
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
wfid = @engine.launch(pdef)
|
|
215
|
+
wfid = @dashboard.launch(pdef)
|
|
228
216
|
|
|
229
217
|
wait_for(:alpha)
|
|
230
218
|
|
|
231
|
-
@
|
|
219
|
+
@dashboard.cancel_process(wfid)
|
|
232
220
|
|
|
233
221
|
wait_for(wfid)
|
|
234
222
|
|
|
235
|
-
ps = @
|
|
223
|
+
ps = @dashboard.process(wfid)
|
|
236
224
|
|
|
237
225
|
#puts ps.errors.first.trace
|
|
238
226
|
assert_equal 1, ps.errors.size
|
|
239
227
|
assert_equal 2, ps.expressions.size
|
|
240
228
|
|
|
241
|
-
@
|
|
229
|
+
@dashboard.kill_process(wfid)
|
|
242
230
|
|
|
243
231
|
wait_for(wfid)
|
|
244
232
|
|
|
245
|
-
assert_nil @
|
|
233
|
+
assert_nil @dashboard.process(wfid)
|
|
246
234
|
end
|
|
247
235
|
|
|
248
236
|
def test_errors_and_subprocesses
|
|
@@ -257,21 +245,19 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
257
245
|
end
|
|
258
246
|
end
|
|
259
247
|
|
|
260
|
-
@
|
|
248
|
+
@dashboard.context.stash[:count] = 0
|
|
261
249
|
|
|
262
|
-
alpha = @
|
|
250
|
+
alpha = @dashboard.register_participant :alpha, :do_not_thread => true do
|
|
263
251
|
stash[:count] += 1
|
|
264
|
-
|
|
252
|
+
tracer << "alpha\n"
|
|
265
253
|
raise "something went wrong" if stash[:count] == 1
|
|
266
254
|
end
|
|
267
255
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
wfid = @engine.launch(pdef)
|
|
256
|
+
wfid = @dashboard.launch(pdef)
|
|
271
257
|
|
|
272
258
|
wait_for(wfid)
|
|
273
259
|
|
|
274
|
-
ps = @
|
|
260
|
+
ps = @dashboard.process(wfid)
|
|
275
261
|
|
|
276
262
|
assert_equal 1, ps.errors.size
|
|
277
263
|
|
|
@@ -280,7 +266,7 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
280
266
|
assert_equal wfid, err.fei.wfid
|
|
281
267
|
assert_not_nil err.fei.subid
|
|
282
268
|
|
|
283
|
-
@
|
|
269
|
+
@dashboard.replay_at_error(err)
|
|
284
270
|
|
|
285
271
|
wait_for(wfid)
|
|
286
272
|
|
|
@@ -293,20 +279,18 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
293
279
|
nada
|
|
294
280
|
end
|
|
295
281
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
wfid = @engine.launch(pdef)
|
|
282
|
+
wfid = @dashboard.launch(pdef)
|
|
299
283
|
|
|
300
284
|
wait_for(wfid)
|
|
301
285
|
|
|
302
|
-
assert_equal 1, @
|
|
286
|
+
assert_equal 1, @dashboard.process(wfid).errors.size
|
|
303
287
|
|
|
304
|
-
@
|
|
288
|
+
@dashboard.cancel_process(wfid)
|
|
305
289
|
|
|
306
290
|
wait_for(wfid)
|
|
307
291
|
|
|
308
|
-
assert_nil @
|
|
309
|
-
assert_equal [], @
|
|
292
|
+
assert_nil @dashboard.process(wfid)
|
|
293
|
+
assert_equal [], @dashboard.storage.get_many('errors')
|
|
310
294
|
end
|
|
311
295
|
|
|
312
296
|
def test_forgotten_subprocess
|
|
@@ -321,20 +305,20 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
321
305
|
end
|
|
322
306
|
end
|
|
323
307
|
|
|
324
|
-
wfid = @
|
|
308
|
+
wfid = @dashboard.launch(pdef)
|
|
325
309
|
wait_for(wfid)
|
|
326
310
|
wait_for(wfid)
|
|
327
311
|
|
|
328
312
|
assert_equal 'done.', @tracer.to_s
|
|
329
313
|
|
|
330
|
-
ps = @
|
|
314
|
+
ps = @dashboard.process(wfid)
|
|
331
315
|
assert_equal 3, ps.expressions.size
|
|
332
316
|
assert_equal 1, ps.errors.size
|
|
333
317
|
|
|
334
|
-
@
|
|
318
|
+
@dashboard.replay_at_error(ps.errors.first)
|
|
335
319
|
wait_for(wfid)
|
|
336
320
|
|
|
337
|
-
assert_nil @
|
|
321
|
+
assert_nil @dashboard.process(wfid)
|
|
338
322
|
end
|
|
339
323
|
|
|
340
324
|
def test_error_intercepted
|
|
@@ -343,13 +327,61 @@ class FtErrorsTest < Test::Unit::TestCase
|
|
|
343
327
|
nada
|
|
344
328
|
end
|
|
345
329
|
|
|
346
|
-
wfid = @
|
|
330
|
+
wfid = @dashboard.launch(pdef)
|
|
347
331
|
|
|
348
|
-
r = @
|
|
332
|
+
r = @dashboard.wait_for(wfid)
|
|
349
333
|
|
|
334
|
+
assert_equal 'error_intercepted', r['action']
|
|
350
335
|
assert_equal 'RuntimeError', r['error']['class']
|
|
351
336
|
assert_equal "unknown participant or subprocess 'nada'", r['error']['message']
|
|
352
337
|
assert_equal Array, r['error']['trace'].class
|
|
338
|
+
assert_equal [ 'nada', { 'ref' => 'nada' }, [] ], r['error']['tree']
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def test_replay_at_error_fei
|
|
342
|
+
|
|
343
|
+
@dashboard.register { catchall }
|
|
344
|
+
|
|
345
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
346
|
+
error 'alpha'
|
|
347
|
+
error 'bravo'
|
|
348
|
+
end)
|
|
349
|
+
|
|
350
|
+
@dashboard.wait_for(wfid)
|
|
351
|
+
|
|
352
|
+
err = @dashboard.ps(wfid).errors.first
|
|
353
|
+
assert_match /alpha/, err.message
|
|
354
|
+
fei = err.fei
|
|
355
|
+
|
|
356
|
+
@dashboard.replay_at_error(fei)
|
|
357
|
+
|
|
358
|
+
@dashboard.wait_for(wfid)
|
|
359
|
+
|
|
360
|
+
err = @dashboard.ps(wfid).errors.first
|
|
361
|
+
assert_match /bravo/, err.message
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
class MyError < RuntimeError
|
|
365
|
+
def ruote_details
|
|
366
|
+
'where the devil is'
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
def test_error_details
|
|
371
|
+
|
|
372
|
+
@dashboard.register :alpha do |workitem|
|
|
373
|
+
raise FtErrorsTest::MyError
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
377
|
+
alpha
|
|
378
|
+
end)
|
|
379
|
+
|
|
380
|
+
@dashboard.wait_for('error_intercepted')
|
|
381
|
+
|
|
382
|
+
assert_equal 'where the devil is', @dashboard.ps(wfid).errors.first.details
|
|
383
|
+
|
|
384
|
+
#p @dashboard.ps(wfid)
|
|
353
385
|
end
|
|
354
386
|
end
|
|
355
387
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Tue Sep 15 09:04:36 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
require 'ruote/part/smtp_participant'
|
|
11
11
|
|
|
@@ -44,7 +44,7 @@ class NftSmtpParticipantTest < Test::Unit::TestCase
|
|
|
44
44
|
# sleep 0.040
|
|
45
45
|
# # give it some time to start listening
|
|
46
46
|
#
|
|
47
|
-
# @
|
|
47
|
+
# @dashboard.register_participant(
|
|
48
48
|
# :alpha,
|
|
49
49
|
# Ruote::SmtpParticipant.new(
|
|
50
50
|
# :server => '127.0.0.1',
|
|
@@ -58,13 +58,13 @@ class NftSmtpParticipantTest < Test::Unit::TestCase
|
|
|
58
58
|
#
|
|
59
59
|
# #noisy
|
|
60
60
|
#
|
|
61
|
-
# wfid = @
|
|
61
|
+
# wfid = @dashboard.launch(pdef)
|
|
62
62
|
#
|
|
63
63
|
# #sleep 0.450
|
|
64
64
|
# wait_for(wfid)
|
|
65
65
|
#
|
|
66
66
|
# assert_match(/cat food/, File.read(trapfile))
|
|
67
|
-
# assert_nil @
|
|
67
|
+
# assert_nil @dashboard.process(wfid)
|
|
68
68
|
#
|
|
69
69
|
# t.kill
|
|
70
70
|
# end
|
|
@@ -91,7 +91,7 @@ class NftSmtpParticipantTest < Test::Unit::TestCase
|
|
|
91
91
|
sleep 0.040
|
|
92
92
|
# give it some time to start listening
|
|
93
93
|
|
|
94
|
-
@
|
|
94
|
+
@dashboard.register_participant(
|
|
95
95
|
:alpha,
|
|
96
96
|
Ruote::SmtpParticipant,
|
|
97
97
|
:server => '127.0.0.1',
|
|
@@ -105,7 +105,7 @@ class NftSmtpParticipantTest < Test::Unit::TestCase
|
|
|
105
105
|
|
|
106
106
|
#noisy
|
|
107
107
|
|
|
108
|
-
wfid = @
|
|
108
|
+
wfid = @dashboard.launch(pdef)
|
|
109
109
|
|
|
110
110
|
#sleep 0.450
|
|
111
111
|
wait_for(wfid)
|
|
@@ -114,7 +114,7 @@ class NftSmtpParticipantTest < Test::Unit::TestCase
|
|
|
114
114
|
FileUtils.rm_f(trapfile)
|
|
115
115
|
|
|
116
116
|
assert_match /want cat food/, trapped
|
|
117
|
-
assert_nil @
|
|
117
|
+
assert_nil @dashboard.process(wfid)
|
|
118
118
|
|
|
119
119
|
t.kill
|
|
120
120
|
end
|