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.
Files changed (305) hide show
  1. data/CHANGELOG.txt +166 -1
  2. data/CREDITS.txt +36 -17
  3. data/LICENSE.txt +1 -1
  4. data/README.rdoc +1 -7
  5. data/Rakefile +38 -29
  6. data/TODO.txt +93 -52
  7. data/lib/ruote-fs.rb +3 -0
  8. data/lib/ruote.rb +5 -1
  9. data/lib/ruote/context.rb +140 -35
  10. data/lib/ruote/dashboard.rb +1247 -0
  11. data/lib/ruote/{engine → dboard}/process_error.rb +22 -2
  12. data/lib/ruote/dboard/process_status.rb +587 -0
  13. data/lib/ruote/engine.rb +6 -871
  14. data/lib/ruote/exp/command.rb +7 -2
  15. data/lib/ruote/exp/commanded.rb +2 -2
  16. data/lib/ruote/exp/condition.rb +38 -13
  17. data/lib/ruote/exp/fe_add_branches.rb +1 -1
  18. data/lib/ruote/exp/fe_apply.rb +1 -1
  19. data/lib/ruote/exp/fe_await.rb +357 -0
  20. data/lib/ruote/exp/fe_cancel_process.rb +17 -3
  21. data/lib/ruote/exp/fe_command.rb +8 -4
  22. data/lib/ruote/exp/fe_concurrence.rb +218 -18
  23. data/lib/ruote/exp/fe_concurrent_iterator.rb +71 -10
  24. data/lib/ruote/exp/fe_cron.rb +3 -10
  25. data/lib/ruote/exp/fe_cursor.rb +14 -4
  26. data/lib/ruote/exp/fe_define.rb +3 -1
  27. data/lib/ruote/exp/fe_echo.rb +1 -1
  28. data/lib/ruote/exp/fe_equals.rb +1 -1
  29. data/lib/ruote/exp/fe_error.rb +1 -1
  30. data/lib/ruote/exp/fe_filter.rb +163 -4
  31. data/lib/ruote/exp/fe_forget.rb +21 -4
  32. data/lib/ruote/exp/fe_given.rb +1 -1
  33. data/lib/ruote/exp/fe_if.rb +1 -1
  34. data/lib/ruote/exp/fe_inc.rb +102 -35
  35. data/lib/ruote/exp/fe_iterator.rb +47 -12
  36. data/lib/ruote/exp/fe_listen.rb +96 -11
  37. data/lib/ruote/exp/fe_lose.rb +31 -4
  38. data/lib/ruote/exp/fe_noop.rb +1 -1
  39. data/lib/ruote/exp/fe_on_error.rb +109 -0
  40. data/lib/ruote/exp/fe_once.rb +10 -19
  41. data/lib/ruote/exp/fe_participant.rb +90 -28
  42. data/lib/ruote/exp/fe_read.rb +69 -0
  43. data/lib/ruote/exp/fe_redo.rb +3 -2
  44. data/lib/ruote/exp/fe_ref.rb +57 -27
  45. data/lib/ruote/exp/fe_registerp.rb +1 -3
  46. data/lib/ruote/exp/fe_reserve.rb +1 -1
  47. data/lib/ruote/exp/fe_restore.rb +6 -6
  48. data/lib/ruote/exp/fe_save.rb +12 -19
  49. data/lib/ruote/exp/fe_sequence.rb +38 -2
  50. data/lib/ruote/exp/fe_set.rb +143 -40
  51. data/lib/ruote/exp/{fe_let.rb → fe_stall.rb} +7 -38
  52. data/lib/ruote/exp/fe_subprocess.rb +8 -2
  53. data/lib/ruote/exp/fe_that.rb +1 -1
  54. data/lib/ruote/exp/fe_undo.rb +40 -4
  55. data/lib/ruote/exp/fe_unregisterp.rb +1 -3
  56. data/lib/ruote/exp/fe_wait.rb +12 -25
  57. data/lib/ruote/exp/{flowexpression.rb → flow_expression.rb} +375 -229
  58. data/lib/ruote/exp/iterator.rb +2 -2
  59. data/lib/ruote/exp/merge.rb +78 -17
  60. data/lib/ruote/exp/ro_attributes.rb +46 -36
  61. data/lib/ruote/exp/ro_filters.rb +34 -8
  62. data/lib/ruote/exp/ro_on_x.rb +431 -0
  63. data/lib/ruote/exp/ro_persist.rb +19 -7
  64. data/lib/ruote/exp/ro_timers.rb +123 -0
  65. data/lib/ruote/exp/ro_variables.rb +90 -29
  66. data/lib/ruote/fei.rb +57 -3
  67. data/lib/ruote/fs.rb +3 -0
  68. data/lib/ruote/id/mnemo_wfid_generator.rb +30 -7
  69. data/lib/ruote/id/wfid_generator.rb +17 -38
  70. data/lib/ruote/log/default_history.rb +23 -9
  71. data/lib/ruote/log/fancy_printing.rb +265 -0
  72. data/lib/ruote/log/storage_history.rb +23 -13
  73. data/lib/ruote/log/wait_logger.rb +224 -17
  74. data/lib/ruote/observer.rb +82 -0
  75. data/lib/ruote/part/block_participant.rb +65 -28
  76. data/lib/ruote/part/code_participant.rb +81 -0
  77. data/lib/ruote/part/engine_participant.rb +7 -2
  78. data/lib/ruote/part/local_participant.rb +221 -21
  79. data/lib/ruote/part/no_op_participant.rb +1 -1
  80. data/lib/ruote/part/null_participant.rb +1 -1
  81. data/lib/ruote/part/participant.rb +50 -0
  82. data/lib/ruote/part/rev_participant.rb +178 -0
  83. data/lib/ruote/part/smtp_participant.rb +2 -2
  84. data/lib/ruote/part/storage_participant.rb +228 -60
  85. data/lib/ruote/part/template.rb +1 -1
  86. data/lib/ruote/participant.rb +2 -0
  87. data/lib/ruote/reader.rb +205 -68
  88. data/lib/ruote/reader/json.rb +49 -0
  89. data/lib/ruote/reader/radial.rb +303 -0
  90. data/lib/ruote/reader/ruby_dsl.rb +44 -9
  91. data/lib/ruote/reader/xml.rb +11 -8
  92. data/lib/ruote/receiver/base.rb +98 -45
  93. data/lib/ruote/storage/base.rb +104 -35
  94. data/lib/ruote/storage/composite_storage.rb +50 -60
  95. data/lib/ruote/storage/fs_storage.rb +25 -34
  96. data/lib/ruote/storage/hash_storage.rb +38 -36
  97. data/lib/ruote/svc/dispatch_pool.rb +104 -35
  98. data/lib/ruote/svc/dollar_sub.rb +10 -8
  99. data/lib/ruote/svc/error_handler.rb +108 -52
  100. data/lib/ruote/svc/expression_map.rb +3 -3
  101. data/lib/ruote/svc/participant_list.rb +160 -55
  102. data/lib/ruote/svc/tracker.rb +31 -31
  103. data/lib/ruote/svc/treechecker.rb +28 -16
  104. data/lib/ruote/tree_dot.rb +1 -1
  105. data/lib/ruote/util/deep.rb +143 -0
  106. data/lib/ruote/util/filter.rb +125 -18
  107. data/lib/ruote/util/hashdot.rb +15 -13
  108. data/lib/ruote/util/look.rb +1 -1
  109. data/lib/ruote/util/lookup.rb +60 -22
  110. data/lib/ruote/util/misc.rb +63 -18
  111. data/lib/ruote/util/mpatch.rb +53 -0
  112. data/lib/ruote/util/ometa.rb +1 -2
  113. data/lib/ruote/util/process_observer.rb +177 -0
  114. data/lib/ruote/util/subprocess.rb +1 -1
  115. data/lib/ruote/util/time.rb +2 -2
  116. data/lib/ruote/util/tree.rb +64 -2
  117. data/lib/ruote/version.rb +3 -2
  118. data/lib/ruote/worker.rb +421 -92
  119. data/lib/ruote/workitem.rb +157 -22
  120. data/ruote.gemspec +15 -9
  121. data/test/bm/ci.rb +0 -2
  122. data/test/bm/ici.rb +0 -2
  123. data/test/bm/load_26c.rb +0 -3
  124. data/test/bm/mega.rb +0 -2
  125. data/test/functional/base.rb +57 -43
  126. data/test/functional/concurrent_base.rb +16 -13
  127. data/test/functional/ct_0_concurrence.rb +7 -11
  128. data/test/functional/ct_1_iterator.rb +9 -11
  129. data/test/functional/ct_2_cancel.rb +28 -17
  130. data/test/functional/eft_0_flow_expression.rb +35 -0
  131. data/test/functional/eft_10_cancel_process.rb +1 -1
  132. data/test/functional/eft_11_wait.rb +13 -13
  133. data/test/functional/eft_12_listen.rb +199 -66
  134. data/test/functional/eft_13_iterator.rb +95 -29
  135. data/test/functional/eft_14_cursor.rb +74 -24
  136. data/test/functional/eft_15_loop.rb +7 -7
  137. data/test/functional/eft_16_if.rb +1 -1
  138. data/test/functional/eft_17_equals.rb +1 -1
  139. data/test/functional/eft_18_concurrent_iterator.rb +156 -68
  140. data/test/functional/eft_19_reserve.rb +15 -15
  141. data/test/functional/eft_1_echo.rb +1 -1
  142. data/test/functional/eft_20_save.rb +51 -9
  143. data/test/functional/eft_21_restore.rb +1 -1
  144. data/test/functional/eft_22_noop.rb +1 -1
  145. data/test/functional/eft_23_apply.rb +1 -1
  146. data/test/functional/eft_24_add_branches.rb +7 -8
  147. data/test/functional/eft_25_command.rb +1 -1
  148. data/test/functional/eft_26_error.rb +11 -11
  149. data/test/functional/eft_27_inc.rb +111 -67
  150. data/test/functional/eft_28_once.rb +16 -16
  151. data/test/functional/eft_29_cron.rb +9 -9
  152. data/test/functional/eft_2_sequence.rb +23 -4
  153. data/test/functional/eft_30_ref.rb +36 -24
  154. data/test/functional/eft_31_registerp.rb +24 -24
  155. data/test/functional/eft_32_lose.rb +46 -20
  156. data/test/functional/eft_34_given.rb +1 -1
  157. data/test/functional/eft_35_filter.rb +161 -7
  158. data/test/functional/eft_36_read.rb +97 -0
  159. data/test/functional/{eft_0_process_definition.rb → eft_37_process_definition.rb} +4 -4
  160. data/test/functional/eft_38_on_error.rb +195 -0
  161. data/test/functional/eft_39_stall.rb +35 -0
  162. data/test/functional/eft_3_participant.rb +77 -22
  163. data/test/functional/eft_40_await.rb +297 -0
  164. data/test/functional/eft_4_set.rb +110 -11
  165. data/test/functional/eft_5_subprocess.rb +27 -5
  166. data/test/functional/eft_6_concurrence.rb +299 -60
  167. data/test/functional/eft_7_forget.rb +24 -22
  168. data/test/functional/eft_8_undo.rb +52 -15
  169. data/test/functional/eft_9_redo.rb +18 -20
  170. data/test/functional/ft_0_worker.rb +122 -13
  171. data/test/functional/ft_10_dollar.rb +77 -16
  172. data/test/functional/ft_11_recursion.rb +9 -9
  173. data/test/functional/ft_12_launchitem.rb +7 -9
  174. data/test/functional/ft_13_variables.rb +125 -22
  175. data/test/functional/ft_14_re_apply.rb +112 -56
  176. data/test/functional/ft_15_timeout.rb +64 -33
  177. data/test/functional/ft_16_participant_params.rb +59 -6
  178. data/test/functional/ft_17_conditional.rb +68 -2
  179. data/test/functional/ft_18_kill.rb +48 -30
  180. data/test/functional/ft_19_participant_code.rb +67 -0
  181. data/test/functional/ft_1_process_status.rb +222 -150
  182. data/test/functional/ft_20_storage_participant.rb +445 -44
  183. data/test/functional/ft_21_forget.rb +21 -26
  184. data/test/functional/ft_22_process_definitions.rb +8 -6
  185. data/test/functional/ft_23_load_defs.rb +29 -5
  186. data/test/functional/ft_24_block_participant.rb +199 -20
  187. data/test/functional/ft_25_receiver.rb +98 -46
  188. data/test/functional/ft_26_participant_rtimeout.rb +34 -26
  189. data/test/functional/ft_27_var_indirection.rb +40 -5
  190. data/test/functional/ft_28_null_noop_participants.rb +5 -5
  191. data/test/functional/ft_29_part_template.rb +2 -2
  192. data/test/functional/ft_2_errors.rb +106 -74
  193. data/test/functional/ft_30_smtp_participant.rb +7 -7
  194. data/test/functional/ft_31_part_blocking.rb +11 -11
  195. data/test/functional/ft_32_scope.rb +50 -0
  196. data/test/functional/ft_33_participant_subprocess_priority.rb +3 -3
  197. data/test/functional/ft_34_cursor_rewind.rb +14 -14
  198. data/test/functional/ft_35_add_service.rb +67 -9
  199. data/test/functional/ft_36_storage_history.rb +92 -24
  200. data/test/functional/ft_37_default_history.rb +35 -23
  201. data/test/functional/ft_38_participant_more.rb +189 -32
  202. data/test/functional/ft_39_wait_for.rb +25 -25
  203. data/test/functional/ft_3_participant_registration.rb +235 -107
  204. data/test/functional/ft_40_wait_logger.rb +105 -18
  205. data/test/functional/ft_41_participants.rb +13 -12
  206. data/test/functional/ft_42_storage_copy.rb +12 -12
  207. data/test/functional/ft_43_participant_on_reply.rb +85 -11
  208. data/test/functional/ft_44_var_participant.rb +5 -5
  209. data/test/functional/ft_45_participant_accept.rb +3 -3
  210. data/test/functional/ft_46_launch_single.rb +17 -17
  211. data/test/functional/ft_47_wfids.rb +41 -0
  212. data/test/functional/ft_48_lose.rb +19 -25
  213. data/test/functional/ft_49_engine_on_error.rb +54 -70
  214. data/test/functional/ft_4_cancel.rb +84 -26
  215. data/test/functional/ft_50_engine_config.rb +4 -4
  216. data/test/functional/ft_51_misc.rb +12 -12
  217. data/test/functional/ft_52_case.rb +17 -17
  218. data/test/functional/ft_53_engine_on_terminate.rb +18 -21
  219. data/test/functional/ft_54_patterns.rb +18 -16
  220. data/test/functional/ft_55_engine_participant.rb +55 -55
  221. data/test/functional/ft_56_filter_attribute.rb +90 -52
  222. data/test/functional/ft_57_rev_participant.rb +252 -0
  223. data/test/functional/ft_58_workitem.rb +150 -0
  224. data/test/functional/ft_59_pause.rb +329 -0
  225. data/test/functional/ft_5_on_error.rb +430 -77
  226. data/test/functional/ft_60_code_participant.rb +65 -0
  227. data/test/functional/ft_61_trailing_fields.rb +34 -0
  228. data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
  229. data/test/functional/ft_63_participants_221.rb +458 -0
  230. data/test/functional/ft_64_stash.rb +41 -0
  231. data/test/functional/ft_65_timers.rb +313 -0
  232. data/test/functional/ft_66_flank.rb +133 -0
  233. data/test/functional/ft_67_radial_misc.rb +34 -0
  234. data/test/functional/ft_68_reput.rb +72 -0
  235. data/test/functional/ft_69_worker_info.rb +56 -0
  236. data/test/functional/ft_6_on_cancel.rb +189 -36
  237. data/test/functional/ft_70_take_and_discard_attributes.rb +94 -0
  238. data/test/functional/ft_71_retries.rb +144 -0
  239. data/test/functional/ft_72_on_terminate.rb +60 -0
  240. data/test/functional/ft_73_raise_msg.rb +107 -0
  241. data/test/functional/ft_74_respark.rb +106 -0
  242. data/test/functional/ft_75_context.rb +66 -0
  243. data/test/functional/ft_76_observer.rb +53 -0
  244. data/test/functional/ft_77_process_observer.rb +157 -0
  245. data/test/functional/ft_78_part_participant.rb +37 -0
  246. data/test/functional/ft_7_tags.rb +238 -50
  247. data/test/functional/ft_8_participant_consumption.rb +27 -21
  248. data/test/functional/ft_9_subprocesses.rb +48 -18
  249. data/test/functional/restart_base.rb +4 -6
  250. data/test/functional/rt_0_wait.rb +10 -10
  251. data/test/functional/rt_1_listen.rb +6 -6
  252. data/test/functional/rt_2_errors.rb +12 -12
  253. data/test/functional/rt_3_once.rb +17 -12
  254. data/test/functional/rt_4_cron.rb +17 -17
  255. data/test/functional/rt_5_timeout.rb +13 -13
  256. data/test/functional/signals.rb +103 -0
  257. data/test/functional/storage.rb +730 -0
  258. data/test/functional/storage_helper.rb +48 -35
  259. data/test/functional/test.rb +6 -2
  260. data/test/misc/idle.rb +21 -0
  261. data/test/misc/light.rb +29 -0
  262. data/test/path_helper.rb +1 -1
  263. data/test/test.rb +2 -5
  264. data/test/test_helper.rb +13 -0
  265. data/test/unit/test.rb +1 -4
  266. data/test/unit/ut_0_ruby_reader.rb +25 -9
  267. data/test/unit/ut_10_participants.rb +47 -0
  268. data/test/unit/ut_11_lookup.rb +59 -2
  269. data/test/unit/ut_12_wait_logger.rb +123 -0
  270. data/test/unit/ut_14_is_uri.rb +1 -1
  271. data/test/unit/ut_15_util.rb +1 -1
  272. data/test/unit/ut_16_reader.rb +136 -14
  273. data/test/unit/ut_17_merge.rb +155 -0
  274. data/test/unit/ut_19_part_template.rb +1 -1
  275. data/test/unit/ut_1_fei.rb +11 -2
  276. data/test/unit/ut_20_composite_storage.rb +27 -1
  277. data/test/unit/{ut_21_participant_list.rb → ut_21_svc_participant_list.rb} +2 -3
  278. data/test/unit/ut_22_filter.rb +231 -10
  279. data/test/unit/ut_23_svc_tracker.rb +48 -0
  280. data/test/unit/ut_24_radial_reader.rb +458 -0
  281. data/test/unit/ut_25_process_status.rb +143 -0
  282. data/test/unit/ut_26_deep.rb +131 -0
  283. data/test/unit/ut_2_dashboard.rb +114 -0
  284. data/test/unit/ut_3_worker.rb +54 -0
  285. data/test/unit/ut_4_expmap.rb +1 -1
  286. data/test/unit/ut_5_tree.rb +23 -23
  287. data/test/unit/ut_6_condition.rb +71 -29
  288. data/test/unit/ut_7_workitem.rb +18 -4
  289. data/test/unit/ut_8_tree_to_dot.rb +1 -1
  290. data/test/unit/ut_9_xml_reader.rb +1 -1
  291. metadata +142 -63
  292. data/jruby_issue.txt +0 -32
  293. data/lib/ruote/engine/process_status.rb +0 -403
  294. data/lib/ruote/log/pretty.rb +0 -165
  295. data/lib/ruote/log/test_logger.rb +0 -204
  296. data/lib/ruote/util/serializer.rb +0 -103
  297. data/phil.txt +0 -14
  298. data/test/functional/eft_33_let.rb +0 -31
  299. data/test/functional/ft_19_alias.rb +0 -33
  300. data/test/functional/ft_47_wfid_generator.rb +0 -54
  301. data/test/unit/storage.rb +0 -403
  302. data/test/unit/storages.rb +0 -37
  303. data/test/unit/ut_13_serializer.rb +0 -65
  304. data/test/unit/ut_18_engine.rb +0 -47
  305. data/test/unit/ut_3_wait_logger.rb +0 -39
@@ -5,7 +5,7 @@
5
5
  # Wed Jun 3 08:42:07 JST 2009
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
8
+ require File.expand_path('../base', __FILE__)
9
9
 
10
10
  require 'ruote/participant'
11
11
 
@@ -19,22 +19,22 @@ class FtCancelTest < Test::Unit::TestCase
19
19
  alpha
20
20
  end
21
21
 
22
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
22
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
23
23
 
24
24
  #noisy
25
25
 
26
- wfid = @engine.launch(pdef)
26
+ wfid = @dashboard.launch(pdef)
27
27
  wait_for(:alpha)
28
28
 
29
- ps = @engine.process(wfid)
29
+ ps = @dashboard.process(wfid)
30
30
  assert_equal 1, alpha.size
31
31
 
32
32
  assert_not_nil ps
33
33
 
34
- @engine.cancel_process(wfid)
34
+ @dashboard.cancel_process(wfid)
35
35
 
36
36
  wait_for(wfid)
37
- ps = @engine.process(wfid)
37
+ ps = @dashboard.process(wfid)
38
38
 
39
39
  assert_nil ps
40
40
  assert_equal 0, alpha.size
@@ -53,19 +53,19 @@ class FtCancelTest < Test::Unit::TestCase
53
53
  end
54
54
  end
55
55
 
56
- @engine.register_participant :alpha, Ruote::StorageParticipant
57
- sto = @engine.register_participant :bravo, Ruote::StorageParticipant
56
+ @dashboard.register_participant :alpha, Ruote::StorageParticipant
57
+ sto = @dashboard.register_participant :bravo, Ruote::StorageParticipant
58
58
 
59
59
  #noisy
60
60
 
61
- wfid = @engine.launch(pdef)
61
+ wfid = @dashboard.launch(pdef)
62
62
  wait_for(:alpha)
63
63
 
64
64
  assert_equal 1, sto.size
65
65
 
66
66
  wi = sto.first
67
67
 
68
- @engine.cancel_expression(wi.fei)
68
+ @dashboard.cancel_expression(wi.fei)
69
69
  wait_for(:bravo)
70
70
 
71
71
  assert_equal 1, sto.size
@@ -78,21 +78,32 @@ class FtCancelTest < Test::Unit::TestCase
78
78
  alpha
79
79
  end
80
80
 
81
- @engine.register_participant :alpha, Ruote::NullParticipant
81
+ @dashboard.register_participant :alpha, Ruote::NullParticipant
82
82
 
83
83
  #noisy
84
84
 
85
- wfid = @engine.launch(pdef)
85
+ wfid = @dashboard.launch(pdef)
86
86
 
87
- @engine.wait_for(:alpha)
87
+ @dashboard.wait_for(:alpha)
88
88
 
89
- @engine.cancel(wfid)
89
+ @dashboard.cancel(wfid)
90
90
 
91
- @engine.wait_for(wfid)
91
+ @dashboard.wait_for(wfid)
92
92
 
93
- assert_nil @engine.process(wfid)
93
+ assert_nil @dashboard.process(wfid)
94
94
 
95
- assert_equal 1, logger.log.select { |e| e['action'] == 'cancel_process' }.size
95
+ assert_equal(
96
+ 1,
97
+ logger.log.select { |e| e['action'] == 'cancel_process' }.size)
98
+ end
99
+
100
+ def test_cancel_process_with_source
101
+
102
+ @dashboard.cancel('20111121-nada', :source => 'x')
103
+
104
+ @dashboard.wait_for(1)
105
+
106
+ assert_equal 'x', logger.log.first['source']
96
107
  end
97
108
 
98
109
  def test_cancel__expression
@@ -106,27 +117,74 @@ class FtCancelTest < Test::Unit::TestCase
106
117
  echo '2'
107
118
  end
108
119
 
109
- @engine.register_participant :alpha, Ruote::NullParticipant
120
+ @dashboard.register_participant :alpha, Ruote::NullParticipant
110
121
 
111
- wfid = @engine.launch(pdef)
122
+ wfid = @dashboard.launch(pdef)
112
123
 
113
- r = @engine.wait_for(:alpha)
124
+ r = @dashboard.wait_for(:alpha)
114
125
 
115
- @engine.cancel(r['fei']) # fei as a Hash
126
+ @dashboard.cancel(r['fei']) # fei as a Hash
116
127
 
117
- r = @engine.wait_for(:alpha)
128
+ r = @dashboard.wait_for(:alpha)
118
129
 
119
- @engine.cancel(Ruote.sid(r['fei'])) # fei as a String
130
+ @dashboard.cancel(Ruote.sid(r['fei'])) # fei as a String
120
131
 
121
- r = @engine.wait_for(:alpha)
132
+ r = @dashboard.wait_for(:alpha)
122
133
 
123
- @engine.cancel(Ruote::Workitem.new(r['workitem'])) # fei as workitem
134
+ @dashboard.cancel(Ruote::Workitem.new(r['workitem'])) # fei as workitem
124
135
 
125
- @engine.wait_for(wfid)
136
+ @dashboard.wait_for(wfid)
126
137
 
127
138
  assert_equal %w[ 0 1 2 ], @tracer.to_a
128
139
 
129
140
  assert_equal 3, logger.log.select { |e| e['action'] == 'cancel' }.size
130
141
  end
142
+
143
+ def test_cancel_rebound
144
+
145
+ pdef = Ruote.define do
146
+ stall
147
+ end
148
+
149
+ wfid = @dashboard.launch(pdef)
150
+ @dashboard.wait_for('apply')
151
+
152
+ @dashboard.cancel(wfid)
153
+ r = @dashboard.wait_for('terminated')
154
+
155
+ assert_equal 'cancel', r['flavour']
156
+ end
157
+
158
+ def test_kill_rebound
159
+
160
+ pdef = Ruote.define do
161
+ stall
162
+ end
163
+
164
+ wfid = @dashboard.launch(pdef)
165
+ @dashboard.wait_for('apply')
166
+
167
+ @dashboard.kill(wfid)
168
+ r = @dashboard.wait_for('terminated')
169
+
170
+ assert_equal 'kill', r['flavour']
171
+ end
172
+
173
+ def test_cancel_limited_rebound
174
+
175
+ pdef = Ruote.define do
176
+ stall
177
+ end
178
+
179
+ wfid = @dashboard.launch(pdef)
180
+ @dashboard.wait_for('apply')
181
+
182
+ exp = @dashboard.process(wfid).expressions.last
183
+
184
+ @dashboard.cancel(exp)
185
+ r = @dashboard.wait_for('terminated')
186
+
187
+ assert_equal nil, r['flavour']
188
+ end
131
189
  end
132
190
 
@@ -5,7 +5,7 @@
5
5
  # Mon Dec 6 10:40:29 JST 2010
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
8
+ require File.expand_path('../base', __FILE__)
9
9
 
10
10
 
11
11
  class FtEngineConfigTest < Test::Unit::TestCase
@@ -13,10 +13,10 @@ class FtEngineConfigTest < Test::Unit::TestCase
13
13
 
14
14
  def test_engine_config
15
15
 
16
- @engine.configure('a', 'b')
16
+ @dashboard.configure('a', 'b')
17
17
 
18
- assert_equal 'b', @engine.configuration('a')
19
- assert_equal 'b', @engine.storage.get_configuration('engine')['a']
18
+ assert_equal 'b', @dashboard.configuration('a')
19
+ assert_equal 'b', @dashboard.storage.get_configuration('engine')['a']
20
20
  end
21
21
  end
22
22
 
@@ -6,7 +6,7 @@
6
6
  #
7
7
 
8
8
  require 'stringio'
9
- require File.join(File.dirname(__FILE__), 'base')
9
+ require File.expand_path('../base', __FILE__)
10
10
 
11
11
 
12
12
  class FtMiscTest < Test::Unit::TestCase
@@ -20,13 +20,13 @@ class FtMiscTest < Test::Unit::TestCase
20
20
  prev = $stdout
21
21
  $stdout = out
22
22
 
23
- @engine.noisy = true
23
+ @dashboard.noisy = true
24
24
 
25
- wfid = @engine.launch(Ruote.define do
25
+ wfid = @dashboard.launch(Ruote.define do
26
26
  echo 'nada'
27
27
  end)
28
28
 
29
- @engine.wait_for(wfid)
29
+ @dashboard.wait_for(wfid)
30
30
 
31
31
  out.close
32
32
  $stdout = prev
@@ -47,21 +47,21 @@ class FtMiscTest < Test::Unit::TestCase
47
47
  participant 'no_cancel'
48
48
  end
49
49
 
50
- @engine.register 'no_cancel', NoCancel
50
+ @dashboard.register 'no_cancel', NoCancel
51
51
 
52
- #noisy
52
+ #@dashboard.noisy = true
53
53
 
54
- wfid = @engine.launch(pdef)
54
+ wfid = @dashboard.launch(pdef)
55
55
 
56
- @engine.wait_for(:no_cancel)
56
+ @dashboard.wait_for(:no_cancel)
57
57
 
58
- @engine.cancel(wfid)
58
+ @dashboard.cancel(wfid)
59
59
 
60
- @engine.wait_for(wfid)
60
+ @dashboard.wait_for(wfid)
61
61
 
62
62
  assert_match(
63
- /undefined method `cancel' for/,
64
- @engine.ps(wfid).errors.first.message)
63
+ /undefined method `on_cancel' for/,
64
+ @dashboard.ps(wfid).errors.first.message)
65
65
  end
66
66
  end
67
67
 
@@ -5,7 +5,7 @@
5
5
  # Fri Dec 24 14:53:30 JST 2010
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
8
+ require File.expand_path('../base', __FILE__)
9
9
 
10
10
 
11
11
  #
@@ -30,12 +30,12 @@ class FtCaseTest < Test::Unit::TestCase
30
30
  subprocess '${the_case}'
31
31
  end
32
32
 
33
- wfid = @engine.launch(pdef, 'the_case' => 'a')
34
- r = @engine.wait_for(wfid)
33
+ wfid = @dashboard.launch(pdef, 'the_case' => 'a')
34
+ r = @dashboard.wait_for(wfid)
35
35
  assert_equal 'a', r['workitem']['fields']['result']
36
36
 
37
- wfid = @engine.launch(pdef, 'the_case' => 'b')
38
- r = @engine.wait_for(wfid)
37
+ wfid = @dashboard.launch(pdef, 'the_case' => 'b')
38
+ r = @dashboard.wait_for(wfid)
39
39
  assert_equal 'b', r['workitem']['fields']['result']
40
40
  end
41
41
 
@@ -58,12 +58,12 @@ class FtCaseTest < Test::Unit::TestCase
58
58
  subprocess 'case'
59
59
  end
60
60
 
61
- wfid = @engine.launch(pdef, 'the_case' => 'a')
62
- r = @engine.wait_for(wfid)
61
+ wfid = @dashboard.launch(pdef, 'the_case' => 'a')
62
+ r = @dashboard.wait_for(wfid)
63
63
  assert_equal 'a', r['workitem']['fields']['result']
64
64
 
65
- wfid = @engine.launch(pdef, 'the_case' => 'b')
66
- r = @engine.wait_for(wfid)
65
+ wfid = @dashboard.launch(pdef, 'the_case' => 'b')
66
+ r = @dashboard.wait_for(wfid)
67
67
  assert_equal 'b', r['workitem']['fields']['result']
68
68
  end
69
69
 
@@ -88,12 +88,12 @@ class FtCaseTest < Test::Unit::TestCase
88
88
  subprocess 'a' # /!\
89
89
  end
90
90
 
91
- wfid = @engine.launch(pdef, 'the_case' => 'a')
92
- r = @engine.wait_for(wfid)
91
+ wfid = @dashboard.launch(pdef, 'the_case' => 'a')
92
+ r = @dashboard.wait_for(wfid)
93
93
  assert_equal 'a', r['workitem']['fields']['result']
94
94
 
95
- wfid = @engine.launch(pdef, 'the_case' => 'b')
96
- r = @engine.wait_for(wfid)
95
+ wfid = @dashboard.launch(pdef, 'the_case' => 'b')
96
+ r = @dashboard.wait_for(wfid)
97
97
  assert_equal 'a', r['workitem']['fields']['result']
98
98
  end
99
99
 
@@ -120,14 +120,14 @@ class FtCaseTest < Test::Unit::TestCase
120
120
  subprocess 'a'
121
121
  end
122
122
 
123
- wfid = @engine.launch(pdef, 'the_case' => 'a')
124
- @engine.wait_for(wfid)
123
+ wfid = @dashboard.launch(pdef, 'the_case' => 'a')
124
+ @dashboard.wait_for(wfid)
125
125
  assert_equal %w[ a global_a ], @tracer.to_a
126
126
 
127
127
  @tracer.clear
128
128
 
129
- wfid = @engine.launch(pdef, 'the_case' => 'b')
130
- @engine.wait_for(wfid)
129
+ wfid = @dashboard.launch(pdef, 'the_case' => 'b')
130
+ @dashboard.wait_for(wfid)
131
131
  assert_equal %w[ b global_a ], @tracer.to_a
132
132
  end
133
133
  end
@@ -5,7 +5,7 @@
5
5
  # Thu Jan 6 21:49:01 JST 2011
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
8
+ require File.expand_path('../base', __FILE__)
9
9
 
10
10
  #require 'ruote/participant'
11
11
 
@@ -15,32 +15,31 @@ class FtEngineOnTerminateTest < Test::Unit::TestCase
15
15
 
16
16
  def test_no_on_terminate
17
17
 
18
- assert_nil @engine.on_terminate
18
+ assert_nil @dashboard.on_terminate
19
19
  end
20
20
 
21
21
  def test_on_terminate
22
22
 
23
- @engine.on_terminate = 'supervisor'
23
+ @dashboard.on_terminate = 'supervisor'
24
24
 
25
25
  assert_equal(
26
26
  [ 'define', {}, [ [ 'supervisor', {}, [] ] ] ],
27
- @engine.on_terminate)
27
+ @dashboard.on_terminate)
28
28
  end
29
29
 
30
30
  def test_on_terminate_tree
31
31
 
32
- @engine.on_terminate = Ruote.define do
32
+ @dashboard.on_terminate = Ruote.define do
33
33
  echo '${__terminate__.wfid} terminated'
34
34
  end
35
35
 
36
- #@engine.noisy = true
36
+ #@dashboard.noisy = true
37
37
 
38
- wfid = @engine.launch(Ruote.define do
38
+ wfid = @dashboard.launch(Ruote.define do
39
39
  echo 'main'
40
40
  end)
41
41
 
42
- @engine.wait_for(wfid)
43
- sleep 1
42
+ @dashboard.wait_for(8)
44
43
 
45
44
  assert_equal [ 'main', "#{wfid} terminated" ], @tracer.to_a
46
45
  end
@@ -49,22 +48,21 @@ class FtEngineOnTerminateTest < Test::Unit::TestCase
49
48
  #
50
49
  def test_no_on_terminate_when_on_error
51
50
 
52
- @engine.on_error = Ruote.define do
51
+ @dashboard.on_error = Ruote.define do
53
52
  echo 'on_error'
54
53
  end
55
- @engine.on_terminate = Ruote.define do
54
+ @dashboard.on_terminate = Ruote.define do
56
55
  echo 'on_terminate'
57
56
  end
58
57
 
59
- #noisy
58
+ #@dashboard.noisy = true
60
59
 
61
- wfid = @engine.launch(Ruote.define do
60
+ wfid = @dashboard.launch(Ruote.define do
62
61
  echo 'main'
63
62
  error 'in main'
64
63
  end)
65
64
 
66
- @engine.wait_for(wfid)
67
- sleep 1
65
+ @dashboard.wait_for(9)
68
66
 
69
67
  assert_equal [ 'main', 'on_error' ], @tracer.to_a
70
68
  end
@@ -73,21 +71,20 @@ class FtEngineOnTerminateTest < Test::Unit::TestCase
73
71
  #
74
72
  def test_on_error_when_on_terminate
75
73
 
76
- @engine.on_error = Ruote.define do
74
+ @dashboard.on_error = Ruote.define do
77
75
  echo 'on_error'
78
76
  end
79
- @engine.on_terminate = Ruote.define do
77
+ @dashboard.on_terminate = Ruote.define do
80
78
  error 'in on_terminate'
81
79
  end
82
80
 
83
- #noisy
81
+ #@dashboard.noisy = true
84
82
 
85
- wfid = @engine.launch(Ruote.define do
83
+ wfid = @dashboard.launch(Ruote.define do
86
84
  echo 'main'
87
85
  end)
88
86
 
89
- @engine.wait_for(wfid)
90
- sleep 1
87
+ @dashboard.wait_for(11)
91
88
 
92
89
  assert_equal [ 'main', 'on_error' ], @tracer.to_a
93
90
  end
@@ -5,7 +5,7 @@
5
5
  # Fri Jan 7 15:13:28 JST 2011
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
8
+ require File.expand_path('../base', __FILE__)
9
9
 
10
10
  #require 'ruote/participant'
11
11
 
@@ -71,34 +71,36 @@ class FtPatternsTest < Test::Unit::TestCase
71
71
 
72
72
  def test_18_milestone
73
73
 
74
- @engine.register do
74
+ @dashboard.register do
75
75
  catchall Ruote::StorageParticipant
76
76
  end
77
77
 
78
- #@engine.noisy = true
78
+ #@dashboard.noisy = true
79
79
 
80
- wfid = @engine.launch(MILESTONE)
80
+ wfid = @dashboard.launch(MILESTONE)
81
81
 
82
- @engine.wait_for(:a)
82
+ @dashboard.wait_for(:a)
83
83
 
84
- assert_equal({}, @engine.ps(wfid).tags)
84
+ assert_equal({}, @dashboard.ps(wfid).tags)
85
85
 
86
- @engine.storage_participant.reply(@engine.storage_participant.first)
86
+ @dashboard.storage_participant.proceed(@dashboard.storage_participant.first)
87
87
 
88
- @engine.wait_for(:d)
88
+ @dashboard.wait_for(:d)
89
89
 
90
- assert_equal %w[ milestone ], @engine.ps(wfid).tags.collect { |t| t.first }
91
- assert_equal %w[ b d ], @engine.ps(wfid).position.collect { |pos| pos[1] }
90
+ assert_equal %w[ milestone ], @dashboard.ps(wfid).tags.collect { |t| t.first }
91
+ assert_equal %w[ b d ], @dashboard.ps(wfid).position.collect { |pos| pos[1] }
92
92
 
93
- wi = @engine.storage_participant.by_participant('b').first
94
- @engine.storage_participant.reply(wi)
93
+ wi = @dashboard.storage_participant.by_participant('b').first
94
+ @dashboard.storage_participant.proceed(wi)
95
95
 
96
- @engine.wait_for(:c)
96
+ @dashboard.wait_for(:c)
97
97
 
98
- sleep 0.7 # give some time for the task d to get removed
98
+ @dashboard.wait_for('dispatch_cancel')
99
+ @dashboard.wait_for(1)
100
+ # give some time for the task d to get removed
99
101
 
100
- assert_equal({}, @engine.ps(wfid).tags)
101
- assert_equal %w[ c ], @engine.ps(wfid).position.collect { |pos| pos[1] }
102
+ assert_equal({}, @dashboard.ps(wfid).tags)
103
+ assert_equal %w[ c ], @dashboard.ps(wfid).position.collect { |pos| pos[1] }
102
104
  end
103
105
  end
104
106