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 10 11:03:26 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
 
11
11
  class FtParticipantConsumptionTest < Test::Unit::TestCase
@@ -19,20 +19,26 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
19
19
  end
20
20
  end
21
21
 
22
- @engine.register_participant :alpha do |workitem|
23
- @tracer << "#{workitem.participant_name}\n"
22
+ @dashboard.register_participant :alpha do |workitem|
23
+ tracer << "#{workitem.participant_name}\n"
24
24
  end
25
25
 
26
- #noisy
26
+ #@dashboard.noisy = true
27
27
 
28
- assert_trace('alpha', pdef)
28
+ wfid = @dashboard.launch(pdef)
29
+ @dashboard.wait_for('dispatched', 'receive', 'terminated')
29
30
 
30
- Thread.pass
31
- # making sure the reply to the participant expression is intercepted
32
- # as well
31
+ assert_equal(
32
+ 'alpha',
33
+ @tracer.to_s)
33
34
 
34
35
  assert_equal(
35
- 3, logger.log.select { |e| e['participant_name'] == 'alpha' }.size)
36
+ %w[ dispatch dispatched receive ],
37
+ logger.log.select { |e|
38
+ e['participant_name'] == 'alpha'
39
+ }.collect { |e|
40
+ e['action']
41
+ }.sort)
36
42
  end
37
43
 
38
44
  def test_missing_participant_name
@@ -45,11 +51,11 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
45
51
 
46
52
  #noisy
47
53
 
48
- wfid = @engine.launch(pdef)
54
+ wfid = @dashboard.launch(pdef)
49
55
 
50
56
  wait_for(wfid)
51
57
 
52
- ps = @engine.process(wfid)
58
+ ps = @dashboard.process(wfid)
53
59
 
54
60
  assert_equal(
55
61
  1, ps.errors.size)
@@ -65,8 +71,8 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
65
71
  end
66
72
  end
67
73
 
68
- @engine.register_participant '.*' do |workitem|
69
- @tracer << "#{workitem.participant_name} #{workitem.fei.expid}\n"
74
+ @dashboard.register_participant '.*' do |workitem|
75
+ tracer << "#{workitem.participant_name} #{workitem.fei.expid}\n"
70
76
  end
71
77
 
72
78
  assert_trace('alpha 0_0_0', pdef)
@@ -74,11 +80,11 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
74
80
 
75
81
  def test_dispatch_time
76
82
 
77
- @engine.context.stash[:wis] = []
83
+ @dashboard.context.stash[:wis] = []
78
84
 
79
85
  pdef = Ruote.process_definition { alpha; alpha }
80
86
 
81
- @engine.register_participant 'alpha' do |workitem|
87
+ @dashboard.register_participant 'alpha' do |workitem|
82
88
  stash[:wis] << workitem.to_h.dup
83
89
  end
84
90
 
@@ -86,11 +92,11 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
86
92
 
87
93
  assert_equal(
88
94
  String,
89
- @engine.context.stash[:wis].first['fields']['dispatched_at'].class)
95
+ @dashboard.context.stash[:wis].first['fields']['dispatched_at'].class)
90
96
 
91
97
  assert_not_equal(
92
- @engine.context.stash[:wis].first['fields']['dispathed_at'],
93
- @engine.context.stash[:wis].last['fields']['dispatched_at'])
98
+ @dashboard.context.stash[:wis].first['fields']['dispathed_at'],
99
+ @dashboard.context.stash[:wis].last['fields']['dispatched_at'])
94
100
  end
95
101
 
96
102
  class MyParticipant
@@ -112,11 +118,11 @@ class FtParticipantConsumptionTest < Test::Unit::TestCase
112
118
  alpha
113
119
  end
114
120
 
115
- @engine.register_participant :alpha, MyParticipant
121
+ @dashboard.register_participant :alpha, MyParticipant
116
122
 
117
- wfid = @engine.launch(pdef, 'msg' => 'kilroy')
123
+ wfid = @dashboard.launch(pdef, 'msg' => 'kilroy')
118
124
 
119
- @engine.wait_for(wfid)
125
+ @dashboard.wait_for(wfid)
120
126
 
121
127
  assert_equal 'kilroy', @tracer.to_s
122
128
  end
@@ -5,7 +5,7 @@
5
5
  # Wed Jun 10 17:41:23 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
 
@@ -26,26 +26,26 @@ class FtSubprocessesTest < Test::Unit::TestCase
26
26
  end
27
27
  end
28
28
 
29
- bravo = @engine.register_participant :bravo, Ruote::StorageParticipant
29
+ bravo = @dashboard.register_participant :bravo, Ruote::StorageParticipant
30
30
 
31
31
  #noisy
32
32
 
33
- wfid = @engine.launch(pdef)
33
+ wfid = @dashboard.launch(pdef)
34
34
  wait_for(:bravo)
35
35
 
36
36
  fexp = Ruote::Exp::FlowExpression.fetch(
37
- @engine.context, bravo.first.fei.to_h)
37
+ @dashboard.context, bravo.first.fei.to_h)
38
38
 
39
39
  assert_equal(
40
40
  [ '0_0',
41
41
  ['define', {'sub0'=>nil}, [['bravo', {}, []], ['echo', {'result : ${v:nada}'=>nil}, []]]] ],
42
42
  fexp.lookup_variable('sub0'))
43
43
 
44
- bravo.reply(bravo.first)
44
+ bravo.proceed(bravo.first)
45
45
  wait_for(:bravo)
46
46
 
47
47
  fexp = Ruote::Exp::FlowExpression.fetch(
48
- @engine.context, bravo.first.fei.to_h)
48
+ @dashboard.context, bravo.first.fei.to_h)
49
49
 
50
50
  assert_equal(
51
51
  ['define', {'sub0'=>nil}, [['bravo', {}, []], ['echo', {'result : ${v:nada}'=>nil}, []]]],
@@ -70,22 +70,22 @@ class FtSubprocessesTest < Test::Unit::TestCase
70
70
  end
71
71
  end
72
72
 
73
- @engine.context.stash[:wfids] = []
73
+ @dashboard.context.stash[:wfids] = []
74
74
 
75
- @engine.register_participant :alpha do |workitem|
75
+ @dashboard.register_participant :alpha do |workitem|
76
76
  stash[:wfids] << workitem.fei.subid
77
77
  end
78
78
 
79
79
  #noisy
80
80
 
81
- wfid = @engine.launch(pdef)
81
+ wfid = @dashboard.launch(pdef)
82
82
 
83
83
  wait_for(:alpha)
84
84
  wait_for(:alpha)
85
85
  wait_for(6)
86
86
 
87
- assert_equal 2, @engine.context.stash[:wfids].size
88
- assert_equal 2, @engine.context.stash[:wfids].sort.uniq.size
87
+ assert_equal 2, @dashboard.context.stash[:wfids].size
88
+ assert_equal 2, @dashboard.context.stash[:wfids].sort.uniq.size
89
89
  end
90
90
 
91
91
  def test_cancel_and_subprocess
@@ -99,15 +99,17 @@ class FtSubprocessesTest < Test::Unit::TestCase
99
99
  end
100
100
  end
101
101
 
102
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
102
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
103
103
 
104
- wfid = @engine.launch(pdef)
104
+ #@dashboard.noisy = true
105
+
106
+ wfid = @dashboard.launch(pdef)
105
107
 
106
108
  wait_for(:alpha)
107
109
 
108
110
  assert_equal 1, alpha.size
109
111
 
110
- @engine.cancel_process(wfid)
112
+ @dashboard.cancel_process(wfid)
111
113
 
112
114
  wait_for(wfid)
113
115
 
@@ -122,25 +124,53 @@ class FtSubprocessesTest < Test::Unit::TestCase
122
124
  end
123
125
  end
124
126
 
125
- @engine.variables['sub0'] = Ruote.process_definition do
127
+ @dashboard.variables['sub0'] = Ruote.process_definition do
126
128
  alpha
127
129
  end
128
130
 
129
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
131
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
130
132
 
131
133
  #noisy
132
134
 
133
- wfid = @engine.launch(pdef)
135
+ wfid = @dashboard.launch(pdef)
134
136
 
135
137
  wait_for(:alpha)
136
138
 
137
139
  assert_equal 1, alpha.size
138
140
 
139
- @engine.cancel_process(wfid)
141
+ @dashboard.cancel_process(wfid)
140
142
 
141
143
  wait_for(wfid)
142
144
 
143
145
  assert_equal 0, alpha.size
144
146
  end
147
+
148
+ # testing noisy and process definition output...
149
+ #
150
+ def test_sub_subprocess
151
+
152
+ pdef = Ruote.process_definition do
153
+ sequence do
154
+ sub0
155
+ end
156
+ define 'sub0' do
157
+ echo 'a'
158
+ sub1
159
+ define 'sub1' do
160
+ echo 'b'
161
+ end
162
+ end
163
+ end
164
+
165
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
166
+
167
+ #@dashboard.noisy = true
168
+
169
+ wfid = @dashboard.launch(pdef)
170
+ r = @dashboard.wait_for(wfid)
171
+
172
+ assert_equal 'terminated', r['action']
173
+ assert_equal %w[ a b ], @tracer.to_a
174
+ end
145
175
  end
146
176
 
@@ -12,7 +12,7 @@ module RestartBase
12
12
  end
13
13
 
14
14
  def teardown
15
- @engine.shutdown
15
+ @dashboard.shutdown
16
16
  @storage.purge!
17
17
  end
18
18
 
@@ -20,15 +20,13 @@ module RestartBase
20
20
 
21
21
  def start_new_engine
22
22
 
23
- @storage = determine_storage(
24
- 's_logger' => [ 'ruote/log/test_logger', 'Ruote::TestLogger' ],
25
- :persistent => true)
23
+ @storage = determine_storage(:persistent => true)
26
24
 
27
- @engine = Ruote::Engine.new(Ruote::Worker.new(@storage))
25
+ @dashboard = Ruote::Engine.new(Ruote::Worker.new(@storage))
28
26
 
29
27
  #@tracer.clear
30
28
 
31
- @engine.add_service('tracer', @tracer)
29
+ @dashboard.add_service('tracer', @tracer)
32
30
  end
33
31
  end
34
32
 
@@ -5,8 +5,8 @@
5
5
  # Wed Jul 1 23:22:26 JST 2009
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
9
- require File.join(File.dirname(__FILE__), 'restart_base')
8
+ require File.expand_path('../base', __FILE__)
9
+ require File.expand_path('../restart_base', __FILE__)
10
10
 
11
11
 
12
12
  class RtWaitTest < Test::Unit::TestCase
@@ -27,14 +27,14 @@ class RtWaitTest < Test::Unit::TestCase
27
27
 
28
28
  #noisy
29
29
 
30
- wfid = @engine.launch(pdef)
30
+ wfid = @dashboard.launch(pdef)
31
31
 
32
32
  wait_for(5)
33
33
 
34
- assert_equal 1, @engine.processes.size
35
- assert_equal 1, @engine.storage.get_many('schedules').size
34
+ assert_equal 1, @dashboard.processes.size
35
+ assert_equal 1, @dashboard.storage.get_many('schedules').size
36
36
 
37
- @engine.shutdown
37
+ @dashboard.shutdown
38
38
 
39
39
  # restart...
40
40
 
@@ -42,14 +42,14 @@ class RtWaitTest < Test::Unit::TestCase
42
42
 
43
43
  #noisy
44
44
 
45
- assert_equal 1, @engine.processes.size
46
- assert_equal 1, @engine.storage.get_many('schedules').size
45
+ assert_equal 1, @dashboard.processes.size
46
+ assert_equal 1, @dashboard.storage.get_many('schedules').size
47
47
 
48
- @engine.cancel_process(wfid)
48
+ @dashboard.cancel_process(wfid)
49
49
 
50
50
  wait_for(wfid)
51
51
 
52
- assert_equal 0, @engine.processes.size
52
+ assert_equal 0, @dashboard.processes.size
53
53
  end
54
54
  end
55
55
 
@@ -5,8 +5,8 @@
5
5
  # Thu Jul 2 12:51:54 JST 2009
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
9
- require File.join(File.dirname(__FILE__), 'restart_base')
8
+ require File.expand_path('../base', __FILE__)
9
+ require File.expand_path('../restart_base', __FILE__)
10
10
 
11
11
 
12
12
  require 'ruote/participant'
@@ -32,21 +32,21 @@ class RtListenTest < Test::Unit::TestCase
32
32
 
33
33
  #puts; noisy
34
34
 
35
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
35
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
36
36
 
37
- wfid = @engine.launch(pdef)
37
+ wfid = @dashboard.launch(pdef)
38
38
 
39
39
  wait_for(:alpha)
40
40
 
41
41
  assert_equal '', @tracer.to_s
42
42
 
43
- @engine.shutdown
43
+ @dashboard.shutdown
44
44
 
45
45
  start_new_engine
46
46
 
47
47
  #puts; noisy
48
48
 
49
- @engine.reply(alpha.first)
49
+ @dashboard.reply(alpha.first)
50
50
 
51
51
  wait_for(wfid)
52
52
 
@@ -5,8 +5,8 @@
5
5
  # Thu Jul 16 13:49:09 JST 2009
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
9
- require File.join(File.dirname(__FILE__), 'restart_base')
8
+ require File.expand_path('../base', __FILE__)
9
+ require File.expand_path('../restart_base', __FILE__)
10
10
 
11
11
 
12
12
  class RtErrorsTest < Test::Unit::TestCase
@@ -23,34 +23,34 @@ class RtErrorsTest < Test::Unit::TestCase
23
23
  end
24
24
  end
25
25
 
26
- #noisy
26
+ #@dashboard.noisy = true
27
27
 
28
- wfid = @engine.launch(pdef)
28
+ wfid = @dashboard.launch(pdef)
29
29
 
30
- wait_for(3)
30
+ wait_for(wfid)
31
31
 
32
- ps = @engine.process(wfid)
32
+ ps = @dashboard.process(wfid)
33
33
 
34
34
  assert_equal 1, ps.errors.size
35
35
 
36
- @engine.shutdown
36
+ @dashboard.shutdown
37
37
 
38
38
  # restart...
39
39
 
40
40
  start_new_engine
41
41
 
42
- #noisy
42
+ #@dashboard.noisy = true
43
43
 
44
- assert_equal 1, @engine.processes.size
44
+ assert_equal 1, @dashboard.processes.size
45
45
 
46
- ps = @engine.process(wfid)
46
+ ps = @dashboard.process(wfid)
47
47
  assert_equal 1, ps.errors.size
48
48
 
49
- @engine.cancel_process(wfid)
49
+ @dashboard.cancel_process(wfid)
50
50
 
51
51
  wait_for(wfid)
52
52
 
53
- assert_nil @engine.process(wfid)
53
+ assert_nil @dashboard.process(wfid)
54
54
  end
55
55
  end
56
56
 
@@ -5,8 +5,8 @@
5
5
  # Tue Oct 27 01:36:52 JST 2009
6
6
  #
7
7
 
8
- require File.join(File.dirname(__FILE__), 'base')
9
- require File.join(File.dirname(__FILE__), 'restart_base')
8
+ require File.expand_path('../base', __FILE__)
9
+ require File.expand_path('../restart_base', __FILE__)
10
10
 
11
11
 
12
12
  class RtWhenTest < Test::Unit::TestCase
@@ -37,34 +37,39 @@ class RtWhenTest < Test::Unit::TestCase
37
37
  end
38
38
  end
39
39
 
40
- #noisy
40
+ #@dashboard.noisy = true
41
41
 
42
- wfid = @engine.launch(pdef)
42
+ wfid = @dashboard.launch(pdef)
43
43
 
44
44
  wait_for(5)
45
45
 
46
- assert_equal 1, @engine.processes.size
47
- assert_equal 1, @engine.storage.get_many('schedules').size
46
+ sleep 0.300
47
+ # give it some time to register the schedule
48
+
49
+ assert_equal 1, @dashboard.processes.size
50
+ assert_equal 1, @dashboard.storage.get_many('schedules').size
48
51
 
49
- @engine.shutdown
52
+ @dashboard.shutdown
50
53
 
51
54
  # restart...
52
55
 
53
56
  start_new_engine
54
57
 
58
+ sleep 0.500
59
+
55
60
  #noisy
56
61
 
57
- assert_equal 1, @engine.processes.size
58
- assert_equal 1, @engine.storage.get_many('schedules').size
62
+ assert_equal 1, @dashboard.processes.size
63
+ assert_equal 1, @dashboard.storage.get_many('schedules').size
59
64
 
60
- @engine.variables['resume'] = true
65
+ @dashboard.variables['resume'] = true
61
66
 
62
67
  wait_for(wfid)
63
68
 
64
69
  assert_equal "in\nout.", @tracer.to_s
65
70
 
66
- assert_equal 0, @engine.processes.size
67
- assert_equal 0, @engine.storage.get_many('schedules').size
71
+ assert_equal 0, @dashboard.processes.size
72
+ assert_equal 0, @dashboard.storage.get_many('schedules').size
68
73
  end
69
74
  end
70
75