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
|
# Wed Aug 12 23:24:16 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
|
|
|
@@ -24,7 +24,7 @@ class FtReceiverTest < Test::Unit::TestCase
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
@
|
|
27
|
+
@dashboard.register_participant 'alpha', MyParticipant
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
class MyParticipant
|
|
@@ -52,50 +52,48 @@ class FtReceiverTest < Test::Unit::TestCase
|
|
|
52
52
|
|
|
53
53
|
def test_my_receiver_init
|
|
54
54
|
|
|
55
|
-
cid = @
|
|
55
|
+
cid = @dashboard.context.object_id
|
|
56
56
|
|
|
57
|
-
receiver = MyReceiver.new(@
|
|
57
|
+
receiver = MyReceiver.new(@dashboard)
|
|
58
58
|
assert_equal cid, receiver.context.object_id
|
|
59
59
|
assert_not_nil receiver.context.storage
|
|
60
60
|
|
|
61
|
-
receiver = MyReceiver.new(@
|
|
61
|
+
receiver = MyReceiver.new(@dashboard.context)
|
|
62
62
|
assert_equal cid, receiver.context.object_id
|
|
63
63
|
assert_not_nil receiver.context.storage
|
|
64
64
|
|
|
65
|
-
receiver = MyReceiver.new(@
|
|
65
|
+
receiver = MyReceiver.new(@dashboard.worker)
|
|
66
66
|
assert_equal cid, receiver.context.object_id
|
|
67
67
|
assert_not_nil receiver.context.storage
|
|
68
68
|
|
|
69
|
-
receiver = MyReceiver.new(@
|
|
69
|
+
receiver = MyReceiver.new(@dashboard.storage)
|
|
70
70
|
assert_equal cid, receiver.context.object_id
|
|
71
71
|
assert_not_nil receiver.context.storage
|
|
72
72
|
|
|
73
|
-
@
|
|
74
|
-
receiver = MyReceiver.new(@
|
|
73
|
+
@dashboard.storage.instance_variable_set(:@context, nil)
|
|
74
|
+
receiver = MyReceiver.new(@dashboard.storage)
|
|
75
75
|
assert_not_equal cid, receiver.context.object_id
|
|
76
76
|
assert_not_nil receiver.context.storage
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def test_my_receiver
|
|
80
80
|
|
|
81
|
-
receiver = MyReceiver.new(@
|
|
81
|
+
receiver = MyReceiver.new(@dashboard.context)
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
wfid = @engine.launch(@pdef)
|
|
83
|
+
wfid = @dashboard.launch(@pdef)
|
|
86
84
|
|
|
87
85
|
wait_for(:alpha)
|
|
88
|
-
while @
|
|
86
|
+
while @dashboard.context.stash[:wi].nil? do
|
|
89
87
|
Thread.pass
|
|
90
88
|
end
|
|
91
89
|
|
|
92
|
-
assert_equal 3, @
|
|
90
|
+
assert_equal 3, @dashboard.process(wfid).expressions.size
|
|
93
91
|
|
|
94
|
-
receiver.receive(@
|
|
92
|
+
receiver.receive(@dashboard.context.stash[:wi])
|
|
95
93
|
|
|
96
94
|
wait_for(wfid)
|
|
97
95
|
|
|
98
|
-
assert_nil @
|
|
96
|
+
assert_nil @dashboard.process(wfid)
|
|
99
97
|
|
|
100
98
|
rcv = logger.log.select { |e| e['action'] == 'receive' }.first
|
|
101
99
|
assert_equal 'FtReceiverTest::MyReceiver', rcv['receiver']
|
|
@@ -103,18 +101,18 @@ class FtReceiverTest < Test::Unit::TestCase
|
|
|
103
101
|
|
|
104
102
|
def test_engine_receive
|
|
105
103
|
|
|
106
|
-
wfid = @
|
|
104
|
+
wfid = @dashboard.launch(@pdef)
|
|
107
105
|
|
|
108
106
|
wait_for(:alpha)
|
|
109
107
|
|
|
110
|
-
@
|
|
108
|
+
@dashboard.receive(@dashboard.context.stash[:wi])
|
|
111
109
|
|
|
112
110
|
wait_for(wfid)
|
|
113
111
|
|
|
114
|
-
assert_nil @
|
|
112
|
+
assert_nil @dashboard.process(wfid)
|
|
115
113
|
|
|
116
114
|
rcv = logger.log.select { |e| e['action'] == 'receive' }.first
|
|
117
|
-
assert_equal 'Ruote::
|
|
115
|
+
assert_equal 'Ruote::Dashboard', rcv['receiver']
|
|
118
116
|
end
|
|
119
117
|
|
|
120
118
|
class MyOtherParticipant
|
|
@@ -141,67 +139,121 @@ class FtReceiverTest < Test::Unit::TestCase
|
|
|
141
139
|
|
|
142
140
|
def test_receiver_triggered_dispatch_error
|
|
143
141
|
|
|
144
|
-
class << @
|
|
142
|
+
class << @dashboard.context
|
|
145
143
|
def receiver
|
|
146
144
|
@rcv ||= MyOtherReceiver.new(engine)
|
|
147
145
|
end
|
|
148
146
|
end
|
|
149
147
|
|
|
150
|
-
@
|
|
148
|
+
@dashboard.register_participant :alpha, MyOtherParticipant
|
|
151
149
|
|
|
152
150
|
pdef = Ruote.process_definition do
|
|
153
151
|
alpha
|
|
154
152
|
end
|
|
155
153
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
wfid = @engine.launch(pdef)
|
|
154
|
+
wfid = @dashboard.launch(pdef)
|
|
159
155
|
|
|
160
156
|
wait_for(wfid)
|
|
161
157
|
|
|
162
|
-
ps = @
|
|
158
|
+
ps = @dashboard.process(wfid)
|
|
163
159
|
err = ps.errors.first
|
|
164
160
|
|
|
161
|
+
assert_equal 2, ps.expressions.size
|
|
165
162
|
assert_equal 1, ps.errors.size
|
|
166
163
|
assert_equal '#<RuntimeError: something went wrong>', err.message
|
|
164
|
+
assert_equal String, err.msg['put_at'].class
|
|
167
165
|
|
|
168
|
-
@
|
|
166
|
+
@dashboard.replay_at_error(err)
|
|
169
167
|
|
|
170
168
|
wait_for(wfid)
|
|
171
169
|
|
|
172
|
-
ps = @
|
|
170
|
+
ps = @dashboard.process(wfid)
|
|
173
171
|
|
|
174
172
|
assert_nil ps
|
|
175
173
|
end
|
|
176
174
|
|
|
177
175
|
def test_receiver_fexp_and_wi
|
|
178
176
|
|
|
179
|
-
|
|
180
|
-
# catchall Ruote::StorageParticipant
|
|
181
|
-
#end
|
|
182
|
-
@engine.register_participant :alpha, Ruote::StorageParticipant
|
|
183
|
-
|
|
184
|
-
#noisy
|
|
177
|
+
@dashboard.register_participant :alpha, Ruote::StorageParticipant
|
|
185
178
|
|
|
186
|
-
wfid = @
|
|
179
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
187
180
|
alpha
|
|
188
181
|
end)
|
|
189
182
|
|
|
190
|
-
@
|
|
191
|
-
@engine.wait_for(1)
|
|
183
|
+
@dashboard.wait_for('dispatched')
|
|
192
184
|
|
|
193
|
-
wi = @
|
|
185
|
+
wi = @dashboard.storage_participant.first
|
|
194
186
|
|
|
195
187
|
assert_equal wfid, wi.fei.wfid
|
|
196
188
|
|
|
197
|
-
assert_equal wfid, @
|
|
198
|
-
assert_equal wfid, @
|
|
199
|
-
assert_equal wfid, @
|
|
200
|
-
assert_equal wfid, @
|
|
189
|
+
assert_equal wfid, @dashboard.fexp(wi).fei.wfid
|
|
190
|
+
assert_equal wfid, @dashboard.fexp(wi.fei).fei.wfid
|
|
191
|
+
assert_equal wfid, @dashboard.fexp(wi.fei.sid).fei.wfid
|
|
192
|
+
assert_equal wfid, @dashboard.fexp(wi.fei.sid).h.applied_workitem['fei']['wfid']
|
|
193
|
+
|
|
194
|
+
assert_equal wfid, @dashboard.workitem(wi).wfid
|
|
195
|
+
assert_equal wfid, @dashboard.workitem(wi.fei).wfid
|
|
196
|
+
assert_equal wfid, @dashboard.workitem(wi.fei.sid).wfid
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
class FlunkParticipant
|
|
200
|
+
include Ruote::LocalParticipant
|
|
201
|
+
|
|
202
|
+
# Since LocalParticipant extends ReceiverMixin, we can call #flunk
|
|
203
|
+
#
|
|
204
|
+
def on_workitem
|
|
205
|
+
flunk(workitem, ArgumentError, 'out of order')
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def on_cancel
|
|
209
|
+
# ...
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
class StringFlunkParticipant
|
|
214
|
+
include Ruote::LocalParticipant
|
|
215
|
+
|
|
216
|
+
# Since LocalParticipant extends ReceiverMixin, we can call #flunk
|
|
217
|
+
#
|
|
218
|
+
def on_workitem
|
|
219
|
+
flunk(workitem, 'out of order')
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def on_cancel
|
|
223
|
+
# ...
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def test_flunk
|
|
228
|
+
|
|
229
|
+
@dashboard.register :alpha, FlunkParticipant
|
|
230
|
+
|
|
231
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
232
|
+
alpha
|
|
233
|
+
end)
|
|
234
|
+
|
|
235
|
+
r = @dashboard.wait_for(wfid)
|
|
236
|
+
|
|
237
|
+
assert_equal 'error_intercepted', r['action']
|
|
238
|
+
assert_equal 'ArgumentError', r['error']['class']
|
|
239
|
+
assert_equal 'out of order', r['error']['message']
|
|
240
|
+
assert_match __FILE__, r['error']['trace'].first
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def test_string_flunk
|
|
244
|
+
|
|
245
|
+
@dashboard.register :alpha, StringFlunkParticipant
|
|
246
|
+
|
|
247
|
+
wfid = @dashboard.launch(Ruote.define do
|
|
248
|
+
alpha
|
|
249
|
+
end)
|
|
250
|
+
|
|
251
|
+
r = @dashboard.wait_for(wfid)
|
|
201
252
|
|
|
202
|
-
assert_equal
|
|
203
|
-
assert_equal
|
|
204
|
-
assert_equal
|
|
253
|
+
assert_equal 'error_intercepted', r['action']
|
|
254
|
+
assert_equal 'RuntimeError', r['error']['class']
|
|
255
|
+
assert_equal 'out of order', r['error']['message']
|
|
256
|
+
assert_match __FILE__, r['error']['trace'].first
|
|
205
257
|
end
|
|
206
258
|
end
|
|
207
259
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Sun Aug 16 14:25:35 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
|
|
|
@@ -28,20 +28,22 @@ class FtParticipantTimeoutTest < Test::Unit::TestCase
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
@
|
|
32
|
-
sto = @
|
|
31
|
+
@dashboard.register_participant :alpha, AlphaParticipant
|
|
32
|
+
sto = @dashboard.register_participant :bravo, Ruote::StorageParticipant
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
#@dashboard.noisy = true
|
|
35
|
+
|
|
36
|
+
wfid = @dashboard.launch(pdef)
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
wait_for(
|
|
38
|
+
@dashboard.wait_for('dispatched')
|
|
39
|
+
@dashboard.wait_for('dispatched')
|
|
38
40
|
|
|
39
41
|
assert_equal 1, sto.size
|
|
40
42
|
assert_equal 'bravo', sto.first.participant_name
|
|
41
43
|
|
|
42
44
|
#logger.log.each { |l| p l }
|
|
43
45
|
assert_equal 2, logger.log.select { |e| e['flavour'] == 'timeout' }.size
|
|
44
|
-
assert_equal 0, @
|
|
46
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
45
47
|
|
|
46
48
|
assert_not_nil sto.first.fields['__timed_out__']
|
|
47
49
|
end
|
|
@@ -69,13 +71,13 @@ class FtParticipantTimeoutTest < Test::Unit::TestCase
|
|
|
69
71
|
echo 'done.'
|
|
70
72
|
end
|
|
71
73
|
|
|
72
|
-
@
|
|
74
|
+
@dashboard.register_participant :alpha, MyParticipant
|
|
73
75
|
|
|
74
76
|
#noisy
|
|
75
77
|
|
|
76
|
-
wfid = @
|
|
78
|
+
wfid = @dashboard.launch(pdef)
|
|
77
79
|
|
|
78
|
-
@
|
|
80
|
+
@dashboard.wait_for(wfid)
|
|
79
81
|
|
|
80
82
|
assert_equal 'done.', @tracer.to_s
|
|
81
83
|
assert_equal 2, logger.log.select { |e| e['flavour'] == 'timeout' }.size
|
|
@@ -85,20 +87,20 @@ class FtParticipantTimeoutTest < Test::Unit::TestCase
|
|
|
85
87
|
|
|
86
88
|
# process definition cancels timeout given by participant
|
|
87
89
|
|
|
90
|
+
#@dashboard.noisy = true
|
|
91
|
+
|
|
88
92
|
pdef = Ruote.define do
|
|
89
93
|
alpha :timeout => ''
|
|
90
94
|
echo 'done.'
|
|
91
95
|
end
|
|
92
96
|
|
|
93
|
-
@
|
|
97
|
+
@dashboard.register_participant :alpha, MyParticipant
|
|
94
98
|
|
|
95
|
-
wfid = @
|
|
99
|
+
wfid = @dashboard.launch(pdef)
|
|
96
100
|
|
|
97
|
-
@
|
|
101
|
+
@dashboard.wait_for('dispatched')
|
|
98
102
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
assert_equal 0, @engine.storage.get_many('schedules').size
|
|
103
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
102
104
|
assert_equal '', @tracer.to_s
|
|
103
105
|
end
|
|
104
106
|
|
|
@@ -126,16 +128,16 @@ class FtParticipantTimeoutTest < Test::Unit::TestCase
|
|
|
126
128
|
echo 'done.'
|
|
127
129
|
end
|
|
128
130
|
|
|
129
|
-
@
|
|
130
|
-
@
|
|
131
|
+
@dashboard.register_participant :alpha, MyOtherParticipant, 'timeout' => '1s'
|
|
132
|
+
@dashboard.register_participant :bravo, MyOtherParticipant
|
|
131
133
|
|
|
132
134
|
#noisy
|
|
133
135
|
|
|
134
|
-
wfid = @
|
|
136
|
+
wfid = @dashboard.launch(pdef)
|
|
135
137
|
|
|
136
|
-
@
|
|
138
|
+
@dashboard.wait_for(:bravo)
|
|
137
139
|
|
|
138
|
-
assert_equal 0, @
|
|
140
|
+
assert_equal 0, @dashboard.storage.get_many('schedules').size
|
|
139
141
|
# no timeout for participant :bravo
|
|
140
142
|
end
|
|
141
143
|
|
|
@@ -161,19 +163,25 @@ class FtParticipantTimeoutTest < Test::Unit::TestCase
|
|
|
161
163
|
alpha
|
|
162
164
|
end
|
|
163
165
|
|
|
164
|
-
@
|
|
166
|
+
@dashboard.register_participant :alpha, YetAnotherParticipant
|
|
165
167
|
|
|
166
168
|
#noisy
|
|
167
169
|
|
|
168
|
-
wfid = @
|
|
170
|
+
wfid = @dashboard.launch(pdef, 'timeout' => 60)
|
|
169
171
|
|
|
170
|
-
@
|
|
171
|
-
@
|
|
172
|
+
@dashboard.wait_for(:alpha)
|
|
173
|
+
@dashboard.wait_for(1)
|
|
172
174
|
|
|
173
|
-
schedules = @
|
|
175
|
+
schedules = @dashboard.storage.get_many('schedules')
|
|
174
176
|
|
|
175
177
|
assert_equal 1, schedules.size
|
|
176
178
|
assert_equal '120s', schedules.first['original']
|
|
179
|
+
|
|
180
|
+
ps = @dashboard.ps(wfid)
|
|
181
|
+
|
|
182
|
+
assert_not_nil ps.expressions.last.h.timers
|
|
183
|
+
assert_equal 1, ps.expressions.last.h.timers.size
|
|
184
|
+
assert_equal 'timeout', ps.expressions.last.h.timers.first.last
|
|
177
185
|
end
|
|
178
186
|
end
|
|
179
187
|
|
|
@@ -5,12 +5,31 @@
|
|
|
5
5
|
# Sun Aug 23 16:59:07 JST 2009
|
|
6
6
|
#
|
|
7
7
|
|
|
8
|
-
require File.
|
|
8
|
+
require File.expand_path('../base', __FILE__)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class FtVarIndirectionTest < Test::Unit::TestCase
|
|
12
12
|
include FunctionalBase
|
|
13
13
|
|
|
14
|
+
def test_var_alias
|
|
15
|
+
|
|
16
|
+
pdef = Ruote.process_definition :name => 'def0' do
|
|
17
|
+
set :v => 'alpha', :val => 'bravo'
|
|
18
|
+
sequence do
|
|
19
|
+
alpha
|
|
20
|
+
bravo
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
alpha = @dashboard.register_participant :bravo do |workitem|
|
|
25
|
+
tracer << "b:#{workitem.fields['params']['original_ref']}\n"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
#noisy
|
|
29
|
+
|
|
30
|
+
assert_trace(%w[ b:alpha b: ], pdef)
|
|
31
|
+
end
|
|
32
|
+
|
|
14
33
|
def test_participant_indirection
|
|
15
34
|
|
|
16
35
|
pdef = Ruote.process_definition do
|
|
@@ -21,8 +40,8 @@ class FtVarIndirectionTest < Test::Unit::TestCase
|
|
|
21
40
|
end
|
|
22
41
|
end
|
|
23
42
|
|
|
24
|
-
@
|
|
25
|
-
|
|
43
|
+
@dashboard.register_participant :alpha do |workitem|
|
|
44
|
+
tracer << "alpha\n"
|
|
26
45
|
end
|
|
27
46
|
|
|
28
47
|
#noisy
|
|
@@ -71,7 +90,7 @@ class FtVarIndirectionTest < Test::Unit::TestCase
|
|
|
71
90
|
|
|
72
91
|
#noisy
|
|
73
92
|
|
|
74
|
-
@
|
|
93
|
+
@dashboard.variables['v'] = File.join(File.dirname(__FILE__), '..', 'pdef.xml')
|
|
75
94
|
|
|
76
95
|
assert_trace %w[ a b ], pdef
|
|
77
96
|
end
|
|
@@ -84,10 +103,26 @@ class FtVarIndirectionTest < Test::Unit::TestCase
|
|
|
84
103
|
|
|
85
104
|
#noisy
|
|
86
105
|
|
|
87
|
-
@
|
|
106
|
+
@dashboard.variables['v'] = File.expand_path(
|
|
88
107
|
File.join(File.dirname(__FILE__), '..', 'pdef.xml'))
|
|
89
108
|
|
|
90
109
|
assert_trace %w[ a b ], pdef
|
|
91
110
|
end
|
|
111
|
+
|
|
112
|
+
def test_engine_variable_for_expression_aliases
|
|
113
|
+
|
|
114
|
+
pdef = Ruote.define do
|
|
115
|
+
output "nada"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
@dashboard.variables['output'] = 'echo'
|
|
119
|
+
|
|
120
|
+
#@dashboard.noisy = true
|
|
121
|
+
|
|
122
|
+
wfid = @dashboard.launch(pdef)
|
|
123
|
+
@dashboard.wait_for(wfid)
|
|
124
|
+
|
|
125
|
+
assert_equal 'nada', @tracer.to_s
|
|
126
|
+
end
|
|
92
127
|
end
|
|
93
128
|
|