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
@@ -23,7 +23,7 @@
23
23
 
24
24
  #require 'profile'
25
25
 
26
- require File.join(File.dirname(__FILE__), 'base')
26
+ require File.expand_path('../base', __FILE__)
27
27
 
28
28
 
29
29
  class EftEchoTest < Test::Unit::TestCase
@@ -5,7 +5,7 @@
5
5
  # Mon Aug 3 12:13:11 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
 
@@ -22,15 +22,15 @@ class EftSaveTest < Test::Unit::TestCase
22
22
 
23
23
  #noisy
24
24
 
25
- @engine.register_participant :alpha, Ruote::StorageParticipant
25
+ @dashboard.register_participant :alpha, Ruote::StorageParticipant
26
26
 
27
- wfid = @engine.launch(pdef)
27
+ wfid = @dashboard.launch(pdef)
28
28
 
29
29
  wait_for(:alpha)
30
30
 
31
- ps = @engine.process(wfid)
31
+ ps = @dashboard.process(wfid)
32
32
 
33
- assert_equal Hash, ps.variables['v'].class
33
+ assert ps.variables['v'].kind_of?(Hash)
34
34
  end
35
35
 
36
36
  def test_save_to_field
@@ -43,9 +43,9 @@ class EftSaveTest < Test::Unit::TestCase
43
43
 
44
44
  #noisy
45
45
 
46
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
46
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
47
47
 
48
- wfid = @engine.launch(pdef)
48
+ wfid = @dashboard.launch(pdef)
49
49
 
50
50
  wait_for(:alpha)
51
51
 
@@ -63,14 +63,56 @@ class EftSaveTest < Test::Unit::TestCase
63
63
 
64
64
  #noisy
65
65
 
66
- alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
66
+ alpha = @dashboard.register_participant :alpha, Ruote::StorageParticipant
67
67
 
68
- wfid = @engine.launch(pdef)
68
+ wfid = @dashboard.launch(pdef)
69
69
 
70
70
  wait_for(:alpha)
71
71
 
72
72
  #p alpha.first.fields
73
73
  assert_equal 'surf', alpha.first.fields['h']['wi_as_before']['nada']
74
74
  end
75
+
76
+ # sfo -> fra
77
+
78
+ def test_save_to_f # and deep f
79
+
80
+ pdef = Ruote.process_definition do
81
+ set 'f:x' => 'val0'
82
+ set 'f:h' => {}
83
+ save :to => 'f:h.deep'
84
+ save :to => 'f:a'
85
+ end
86
+
87
+ #@dashboard.noisy = true
88
+
89
+ wfid = @dashboard.launch(pdef)
90
+
91
+ fields = @dashboard.wait_for(wfid)['workitem']['fields']
92
+ Ruote.delete_all(fields, '__result__')
93
+
94
+ assert_equal(
95
+ { 'deep' => { 'x' => 'val0', 'h' => {} } },
96
+ fields['h'])
97
+ assert_equal(
98
+ { 'x' => 'val0', 'h' => { 'deep' => { 'x' => 'val0', 'h' => { } } } },
99
+ fields['a'])
100
+ end
101
+
102
+ def test_save_to_v
103
+
104
+ pdef = Ruote.process_definition do
105
+ set 'f:x' => 'val0'
106
+ save :to => 'v:a'
107
+ set 'f:y' => '$v:a'
108
+ end
109
+
110
+ #@dashboard.noisy = true
111
+
112
+ wfid = @dashboard.launch(pdef)
113
+ fields = @dashboard.wait_for(wfid)['workitem']['fields']
114
+
115
+ assert_equal({ 'x' => 'val0', '__result__' => 'val0' }, fields['y'])
116
+ end
75
117
  end
76
118
 
@@ -5,7 +5,7 @@
5
5
  # Tue Aug 4 08:53:33 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 EftRestoreTest < Test::Unit::TestCase
@@ -5,7 +5,7 @@
5
5
  # Sun Aug 16 20:46:13 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 EftNoOpTest < Test::Unit::TestCase
@@ -5,7 +5,7 @@
5
5
  # Thu Aug 20 13:21:54 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 EftApplyTest < Test::Unit::TestCase
@@ -1,11 +1,10 @@
1
-
2
1
  #
3
2
  # testing ruote
4
3
  #
5
4
  # Fri Sep 11 16:09:32 JST 2009
6
5
  #
7
6
 
8
- require File.join(File.dirname(__FILE__), 'base')
7
+ require File.expand_path('../base', __FILE__)
9
8
 
10
9
 
11
10
  class EftAddBranchesTest < Test::Unit::TestCase
@@ -25,7 +24,7 @@ class EftAddBranchesTest < Test::Unit::TestCase
25
24
 
26
25
  #noisy
27
26
 
28
- wfid = @engine.launch(pdef)
27
+ wfid = @dashboard.launch(pdef)
29
28
  wait_for(wfid)
30
29
 
31
30
  assert_equal %w[ a b c d ], @tracer.to_a.sort
@@ -44,10 +43,10 @@ class EftAddBranchesTest < Test::Unit::TestCase
44
43
 
45
44
  #noisy
46
45
 
47
- wfid = @engine.launch(pdef)
46
+ wfid = @dashboard.launch(pdef)
48
47
  wait_for(wfid)
49
48
 
50
- assert_equal %w[ 1 2 3 4 5 ], @tracer.to_a.sort
49
+ assert_equal %w[ 0 1 2 3 4 ], @tracer.to_a.sort
51
50
  end
52
51
 
53
52
  def test_add_branches_times_and_whatever
@@ -63,10 +62,10 @@ class EftAddBranchesTest < Test::Unit::TestCase
63
62
 
64
63
  #noisy
65
64
 
66
- wfid = @engine.launch(pdef)
65
+ wfid = @dashboard.launch(pdef)
67
66
  wait_for(wfid)
68
67
 
69
- assert_equal %w[ 1 2 3 a b ], @tracer.to_a.sort
68
+ assert_equal %w[ 0 1 2 a b ], @tracer.to_a.sort
70
69
  end
71
70
 
72
71
  def test_add_branches_with_tag
@@ -87,7 +86,7 @@ class EftAddBranchesTest < Test::Unit::TestCase
87
86
 
88
87
  #noisy
89
88
 
90
- wfid = @engine.launch(pdef)
89
+ wfid = @dashboard.launch(pdef)
91
90
  wait_for(wfid)
92
91
 
93
92
  assert_equal(
@@ -5,7 +5,7 @@
5
5
  # Mon Sep 14 08:39:35 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 EftCommandTest < Test::Unit::TestCase
@@ -5,7 +5,7 @@
5
5
  # Tue Sep 15 19:26:33 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 EftErrorTest < Test::Unit::TestCase
@@ -23,11 +23,11 @@ class EftErrorTest < Test::Unit::TestCase
23
23
 
24
24
  #noisy
25
25
 
26
- wfid = @engine.launch(PDEF0)
26
+ wfid = @dashboard.launch(PDEF0)
27
27
 
28
28
  wait_for(wfid)
29
29
 
30
- ps = @engine.process(wfid)
30
+ ps = @dashboard.process(wfid)
31
31
 
32
32
  assert_equal(
33
33
  'a', @tracer.to_s)
@@ -42,35 +42,35 @@ class EftErrorTest < Test::Unit::TestCase
42
42
 
43
43
  #noisy
44
44
 
45
- wfid = @engine.launch(PDEF0)
45
+ wfid = @dashboard.launch(PDEF0)
46
46
 
47
47
  wait_for(wfid)
48
48
 
49
- ps = @engine.process(wfid)
49
+ ps = @dashboard.process(wfid)
50
50
 
51
- @engine.replay_at_error(ps.errors.first)
51
+ @dashboard.replay_at_error(ps.errors.first)
52
52
 
53
53
  wait_for(wfid)
54
54
 
55
- assert_nil @engine.process(wfid)
55
+ assert_nil @dashboard.process(wfid)
56
56
  assert_equal "a\nb", @tracer.to_s
57
57
  end
58
58
 
59
59
  def test_error_cancel
60
60
 
61
- wfid = @engine.launch(PDEF0)
61
+ wfid = @dashboard.launch(PDEF0)
62
62
 
63
63
  wait_for(wfid)
64
64
 
65
- ps = @engine.process(wfid)
65
+ ps = @dashboard.process(wfid)
66
66
 
67
67
  sequence = ps.expressions.find { |fe| fe.fei.expid == '0_0' }
68
68
 
69
- @engine.cancel_expression(sequence.fei)
69
+ @dashboard.cancel_expression(sequence.fei)
70
70
 
71
71
  wait_for(wfid)
72
72
 
73
- assert_nil @engine.process(wfid)
73
+ assert_nil @dashboard.process(wfid)
74
74
  assert_equal 'a', @tracer.to_s
75
75
  end
76
76
  end
@@ -5,7 +5,7 @@
5
5
  # Sat Sep 19 12:56:16 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 EftIncTest < Test::Unit::TestCase
@@ -28,8 +28,6 @@ class EftIncTest < Test::Unit::TestCase
28
28
  end
29
29
  end
30
30
 
31
- #noisy
32
-
33
31
  assert_trace '2|2', pdef
34
32
  end
35
33
 
@@ -47,8 +45,6 @@ class EftIncTest < Test::Unit::TestCase
47
45
  end
48
46
  end
49
47
 
50
- #noisy
51
-
52
48
  assert_trace '2|2', pdef
53
49
  end
54
50
 
@@ -60,17 +56,20 @@ class EftIncTest < Test::Unit::TestCase
60
56
  inc 'v:x', :val => 2
61
57
  inc 'f:y', :val => 3
62
58
  inc 'v:z', :val => 1.0
59
+
63
60
  inc :var => 'x', :val => '4'
64
61
  inc :field => 'y', :val => 5
65
62
  inc 'v:z', :val => '2.0'
66
63
 
64
+ inc 'v:x' => 2
65
+ inc 'y' => 2
66
+ inc 'v:z' => 0.5
67
+
67
68
  echo '${v:x}|${f:y}|${v:z}'
68
69
  end
69
70
  end
70
71
 
71
- #noisy
72
-
73
- assert_trace '6|8|3.0', pdef
72
+ assert_trace '8|10|3.5', pdef
74
73
  end
75
74
 
76
75
  def test_inc_v_val
@@ -86,14 +85,12 @@ class EftIncTest < Test::Unit::TestCase
86
85
  end
87
86
  end
88
87
 
89
- #noisy
90
-
91
88
  assert_trace '4', pdef
92
89
  end
93
90
 
94
91
  def test_inc_array
95
92
 
96
- @engine.context['ruby_eval_allowed'] = true
93
+ @dashboard.context['ruby_eval_allowed'] = true
97
94
 
98
95
  pdef = Ruote.process_definition do
99
96
  sequence do
@@ -106,15 +103,13 @@ class EftIncTest < Test::Unit::TestCase
106
103
  end
107
104
  end
108
105
 
109
- #noisy
110
-
111
106
  assert_trace %w[ alpha bravo charly ], pdef
112
107
  end
113
108
 
114
109
  def test_inc_array_head
115
110
 
116
- #@engine.context['ruby_eval_allowed'] = true
117
- @engine.configure('ruby_eval_allowed', true)
111
+ #@dashboard.context['ruby_eval_allowed'] = true
112
+ @dashboard.configure('ruby_eval_allowed', true)
118
113
 
119
114
  pdef = Ruote.process_definition do
120
115
  sequence do
@@ -127,14 +122,12 @@ class EftIncTest < Test::Unit::TestCase
127
122
  end
128
123
  end
129
124
 
130
- #noisy
131
-
132
125
  assert_trace %w[ charly alpha bravo ], pdef
133
126
  end
134
127
 
135
128
  def test_inc_array_missing
136
129
 
137
- @engine.context['ruby_eval_allowed'] = true
130
+ @dashboard.context['ruby_eval_allowed'] = true
138
131
 
139
132
  pdef = Ruote.process_definition do
140
133
  sequence do
@@ -147,8 +140,6 @@ class EftIncTest < Test::Unit::TestCase
147
140
  end
148
141
  end
149
142
 
150
- #noisy
151
-
152
143
  assert_trace %w[ charly charly ], pdef
153
144
  end
154
145
 
@@ -168,74 +159,60 @@ class EftIncTest < Test::Unit::TestCase
168
159
  end
169
160
  end
170
161
 
171
- #noisy
172
-
173
162
  assert_trace '3|3|-1', pdef
174
163
  end
175
164
 
176
165
  def test_dec_array
177
166
 
178
- @engine.context['ruby_eval_allowed'] = true
167
+ @dashboard.context['ruby_eval_allowed'] = true
179
168
 
180
- pdef = Ruote.process_definition do
181
- sequence do
169
+ pdef = Ruote.define do
182
170
 
183
- set 'v:x' => %w[ a b c ]
184
- set 'v:y' => %w[ a b c ]
171
+ set 'v:x' => %w[ a b c ]
172
+ set 'v:y' => %w[ d e f ]
185
173
 
186
- dec 'v:x'
187
- dec 'v:y', :position => :head
174
+ dec 'v:x'
175
+ dec 'v:y', :position => :head
188
176
 
189
- echo '${r:fe.lv("x").join(".")}'
190
- echo '${r:fe.lv("y").join(".")}'
191
- echo '${v:d}'
192
- end
177
+ echo '${r:fe.lv("x").join(".")}'
178
+ echo '${r:fe.lv("y").join(".")}'
179
+ echo '${__result__}'
193
180
  end
194
181
 
195
- #noisy
196
-
197
- assert_trace %w[ a.b b.c a ], pdef
182
+ assert_trace %w[ a.b e.f d ], pdef
198
183
  end
199
184
 
200
- def test_dec_to
185
+ def test_dec_val
201
186
 
202
- @engine.context['ruby_eval_allowed'] = true
187
+ @dashboard.context['ruby_eval_allowed'] = true
203
188
 
204
- pdef = Ruote.process_definition do
205
- sequence do
189
+ pdef = Ruote.define do
206
190
 
207
- set 'v:x' => %w[ a b c ]
191
+ set 'v:x' => %w[ a b c ]
208
192
 
209
- dec 'v:x', :to_var => 'y'
193
+ dec 'v:x', :val => 'b'
210
194
 
211
- echo '${r:fe.lv("x").join(".")}'
212
- echo '${v:y}'
213
- end
195
+ echo '${r:fe.lv("x").join(".")}'
196
+ echo '${__result__}'
214
197
  end
215
198
 
216
- #noisy
217
-
218
- assert_trace %w[ a.b c ], pdef
199
+ assert_trace %w[ a.c b ], pdef
219
200
  end
220
201
 
221
- def test_dec_val
202
+ def test_dec_val_to_d
222
203
 
223
- @engine.context['ruby_eval_allowed'] = true
204
+ @dashboard.context['ruby_eval_allowed'] = true
224
205
 
225
- pdef = Ruote.process_definition do
226
- sequence do
206
+ pdef = Ruote.define do
227
207
 
228
- set 'v:x' => %w[ a b c ]
208
+ set 'v:x' => %w[ a b c ]
229
209
 
230
- dec 'v:x', :val => 'b'
210
+ dec 'v:x', :val => 'b', :to_v => 'd'
231
211
 
232
- echo '${r:fe.lv("x").join(".")}'
233
- echo '${v:d}'
234
- end
212
+ echo '${r:fe.lv("x").join(".")}'
213
+ echo '${v:d}'
235
214
  end
236
215
 
237
- #noisy
238
-
239
216
  assert_trace %w[ a.c b ], pdef
240
217
  end
241
218
 
@@ -246,14 +223,12 @@ class EftIncTest < Test::Unit::TestCase
246
223
  set 'v:x' => %w[ a b c d ]
247
224
  repeat do
248
225
  dec 'v:x', :pos => :head
249
- _break :unless => '${v:d}'
250
- echo '${v:d}'
226
+ echo '${__result__}'
227
+ _break :unless => '${__result__}'
251
228
  end
252
229
  end
253
230
  end
254
231
 
255
- #noisy
256
-
257
232
  assert_trace %w[ a b c d ], pdef
258
233
  end
259
234
 
@@ -266,15 +241,84 @@ class EftIncTest < Test::Unit::TestCase
266
241
  end
267
242
  end
268
243
 
269
- #noisy
270
-
271
- wfid = @engine.launch(pdef)
244
+ wfid = @dashboard.launch(pdef)
272
245
 
273
246
  wait_for(wfid)
274
247
 
275
- ps = @engine.process(wfid)
248
+ ps = @dashboard.process(wfid)
276
249
 
277
250
  assert_equal 1, ps.errors.size
278
251
  end
252
+
253
+ def test_nested_inc
254
+
255
+ pdef = Ruote.define do
256
+
257
+ set :var => 'x', :value => 1
258
+
259
+ inc 'v:x' do
260
+ set '__result__' => 2
261
+ end
262
+
263
+ echo '${v:x}'
264
+ end
265
+
266
+ wfid = @dashboard.launch(pdef)
267
+ r = @dashboard.wait_for(wfid)
268
+
269
+ assert_equal 'terminated', r['action']
270
+ assert_equal '3', @tracer.to_s
271
+ end
272
+
273
+ def test_push
274
+
275
+ pdef = Ruote.define do
276
+ push 'v:x' => 1
277
+ push 'v:x' => 2
278
+ end
279
+
280
+ wfid = @dashboard.launch(pdef)
281
+ r = @dashboard.wait_for(wfid)
282
+
283
+ assert_equal 'terminated', r['action']
284
+ assert_equal [ 1, 2 ], r['variables']['x']
285
+ end
286
+
287
+ def test_pop
288
+
289
+ pdef = Ruote.define do
290
+ pop 'v:x'
291
+ push 'v:x' => false
292
+ push 'v:x' => 1
293
+ push 'v:x' => 2
294
+ pop 'v:x'
295
+ end
296
+
297
+ wfid = @dashboard.launch(pdef)
298
+ r = @dashboard.wait_for(wfid)
299
+
300
+ assert_equal 'terminated', r['action']
301
+ assert_equal [ false, 1 ], r['variables']['x']
302
+ assert_equal 2, r['workitem']['fields']['__result__']
303
+ end
304
+
305
+ def test_pop_2
306
+
307
+ pdef = Ruote.define do
308
+
309
+ set 'v:x' => 12
310
+ push 'v:x' => 4
311
+ pop 'v:x'
312
+
313
+ pop 'v:y'
314
+ end
315
+
316
+ wfid = @dashboard.launch(pdef)
317
+ r = @dashboard.wait_for(wfid)
318
+
319
+ assert_equal 'terminated', r['action']
320
+ assert_equal [ 12 ], r['variables']['x']
321
+ assert_equal [], r['variables']['y']
322
+ end
279
323
  end
280
324