ruote-maestrodev 2.2.1

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 (265) hide show
  1. data/CHANGELOG.txt +290 -0
  2. data/CREDITS.txt +99 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.rdoc +88 -0
  5. data/Rakefile +108 -0
  6. data/TODO.txt +488 -0
  7. data/lib/ruote.rb +7 -0
  8. data/lib/ruote/context.rb +194 -0
  9. data/lib/ruote/engine.rb +1062 -0
  10. data/lib/ruote/engine/process_error.rb +122 -0
  11. data/lib/ruote/engine/process_status.rb +448 -0
  12. data/lib/ruote/exp/command.rb +87 -0
  13. data/lib/ruote/exp/commanded.rb +69 -0
  14. data/lib/ruote/exp/condition.rb +227 -0
  15. data/lib/ruote/exp/fe_add_branches.rb +138 -0
  16. data/lib/ruote/exp/fe_apply.rb +154 -0
  17. data/lib/ruote/exp/fe_cancel_process.rb +78 -0
  18. data/lib/ruote/exp/fe_command.rb +156 -0
  19. data/lib/ruote/exp/fe_concurrence.rb +321 -0
  20. data/lib/ruote/exp/fe_concurrent_iterator.rb +219 -0
  21. data/lib/ruote/exp/fe_cron.rb +141 -0
  22. data/lib/ruote/exp/fe_cursor.rb +324 -0
  23. data/lib/ruote/exp/fe_define.rb +112 -0
  24. data/lib/ruote/exp/fe_echo.rb +60 -0
  25. data/lib/ruote/exp/fe_equals.rb +115 -0
  26. data/lib/ruote/exp/fe_error.rb +82 -0
  27. data/lib/ruote/exp/fe_filter.rb +648 -0
  28. data/lib/ruote/exp/fe_forget.rb +88 -0
  29. data/lib/ruote/exp/fe_given.rb +154 -0
  30. data/lib/ruote/exp/fe_if.rb +127 -0
  31. data/lib/ruote/exp/fe_inc.rb +205 -0
  32. data/lib/ruote/exp/fe_iterator.rb +234 -0
  33. data/lib/ruote/exp/fe_let.rb +75 -0
  34. data/lib/ruote/exp/fe_listen.rb +304 -0
  35. data/lib/ruote/exp/fe_lose.rb +110 -0
  36. data/lib/ruote/exp/fe_noop.rb +45 -0
  37. data/lib/ruote/exp/fe_once.rb +215 -0
  38. data/lib/ruote/exp/fe_participant.rb +287 -0
  39. data/lib/ruote/exp/fe_read.rb +69 -0
  40. data/lib/ruote/exp/fe_redo.rb +82 -0
  41. data/lib/ruote/exp/fe_ref.rb +152 -0
  42. data/lib/ruote/exp/fe_registerp.rb +110 -0
  43. data/lib/ruote/exp/fe_reserve.rb +126 -0
  44. data/lib/ruote/exp/fe_restore.rb +102 -0
  45. data/lib/ruote/exp/fe_save.rb +72 -0
  46. data/lib/ruote/exp/fe_sequence.rb +59 -0
  47. data/lib/ruote/exp/fe_set.rb +154 -0
  48. data/lib/ruote/exp/fe_subprocess.rb +211 -0
  49. data/lib/ruote/exp/fe_that.rb +92 -0
  50. data/lib/ruote/exp/fe_undo.rb +67 -0
  51. data/lib/ruote/exp/fe_unregisterp.rb +69 -0
  52. data/lib/ruote/exp/fe_wait.rb +95 -0
  53. data/lib/ruote/exp/flowexpression.rb +886 -0
  54. data/lib/ruote/exp/iterator.rb +81 -0
  55. data/lib/ruote/exp/merge.rb +118 -0
  56. data/lib/ruote/exp/ro_attributes.rb +212 -0
  57. data/lib/ruote/exp/ro_filters.rb +136 -0
  58. data/lib/ruote/exp/ro_persist.rb +154 -0
  59. data/lib/ruote/exp/ro_variables.rb +189 -0
  60. data/lib/ruote/exp/ro_vf.rb +68 -0
  61. data/lib/ruote/fei.rb +260 -0
  62. data/lib/ruote/id/mnemo_wfid_generator.rb +43 -0
  63. data/lib/ruote/id/wfid_generator.rb +81 -0
  64. data/lib/ruote/log/default_history.rb +122 -0
  65. data/lib/ruote/log/pretty.rb +176 -0
  66. data/lib/ruote/log/storage_history.rb +159 -0
  67. data/lib/ruote/log/test_logger.rb +208 -0
  68. data/lib/ruote/log/wait_logger.rb +64 -0
  69. data/lib/ruote/part/block_participant.rb +137 -0
  70. data/lib/ruote/part/code_participant.rb +81 -0
  71. data/lib/ruote/part/engine_participant.rb +189 -0
  72. data/lib/ruote/part/local_participant.rb +138 -0
  73. data/lib/ruote/part/no_op_participant.rb +60 -0
  74. data/lib/ruote/part/null_participant.rb +54 -0
  75. data/lib/ruote/part/rev_participant.rb +169 -0
  76. data/lib/ruote/part/smtp_participant.rb +116 -0
  77. data/lib/ruote/part/storage_participant.rb +392 -0
  78. data/lib/ruote/part/template.rb +84 -0
  79. data/lib/ruote/participant.rb +7 -0
  80. data/lib/ruote/reader.rb +278 -0
  81. data/lib/ruote/reader/json.rb +49 -0
  82. data/lib/ruote/reader/radial.rb +290 -0
  83. data/lib/ruote/reader/ruby_dsl.rb +186 -0
  84. data/lib/ruote/reader/xml.rb +99 -0
  85. data/lib/ruote/receiver/base.rb +212 -0
  86. data/lib/ruote/storage/base.rb +364 -0
  87. data/lib/ruote/storage/composite_storage.rb +121 -0
  88. data/lib/ruote/storage/fs_storage.rb +139 -0
  89. data/lib/ruote/storage/hash_storage.rb +211 -0
  90. data/lib/ruote/svc/dispatch_pool.rb +158 -0
  91. data/lib/ruote/svc/dollar_sub.rb +298 -0
  92. data/lib/ruote/svc/error_handler.rb +138 -0
  93. data/lib/ruote/svc/expression_map.rb +97 -0
  94. data/lib/ruote/svc/participant_list.rb +397 -0
  95. data/lib/ruote/svc/tracker.rb +172 -0
  96. data/lib/ruote/svc/treechecker.rb +141 -0
  97. data/lib/ruote/tree_dot.rb +85 -0
  98. data/lib/ruote/util/filter.rb +525 -0
  99. data/lib/ruote/util/hashdot.rb +79 -0
  100. data/lib/ruote/util/look.rb +128 -0
  101. data/lib/ruote/util/lookup.rb +127 -0
  102. data/lib/ruote/util/misc.rb +167 -0
  103. data/lib/ruote/util/ometa.rb +71 -0
  104. data/lib/ruote/util/serializer.rb +103 -0
  105. data/lib/ruote/util/subprocess.rb +88 -0
  106. data/lib/ruote/util/time.rb +100 -0
  107. data/lib/ruote/util/tree.rb +58 -0
  108. data/lib/ruote/version.rb +29 -0
  109. data/lib/ruote/worker.rb +386 -0
  110. data/lib/ruote/workitem.rb +394 -0
  111. data/phil.txt +14 -0
  112. data/ruote.gemspec +44 -0
  113. data/test/bm/ci.rb +55 -0
  114. data/test/bm/ici.rb +71 -0
  115. data/test/bm/juuman.rb +54 -0
  116. data/test/bm/launch_bench.rb +37 -0
  117. data/test/bm/load_26c.rb +97 -0
  118. data/test/bm/mega.rb +64 -0
  119. data/test/bm/seq_thousand.rb +31 -0
  120. data/test/bm/t.rb +35 -0
  121. data/test/functional/base.rb +247 -0
  122. data/test/functional/concurrent_base.rb +98 -0
  123. data/test/functional/crunner.rb +31 -0
  124. data/test/functional/ct_0_concurrence.rb +65 -0
  125. data/test/functional/ct_1_iterator.rb +67 -0
  126. data/test/functional/ct_2_cancel.rb +81 -0
  127. data/test/functional/eft_0_process_definition.rb +65 -0
  128. data/test/functional/eft_10_cancel_process.rb +46 -0
  129. data/test/functional/eft_11_wait.rb +109 -0
  130. data/test/functional/eft_12_listen.rb +500 -0
  131. data/test/functional/eft_13_iterator.rb +342 -0
  132. data/test/functional/eft_14_cursor.rb +456 -0
  133. data/test/functional/eft_15_loop.rb +69 -0
  134. data/test/functional/eft_16_if.rb +183 -0
  135. data/test/functional/eft_17_equals.rb +55 -0
  136. data/test/functional/eft_18_concurrent_iterator.rb +410 -0
  137. data/test/functional/eft_19_reserve.rb +136 -0
  138. data/test/functional/eft_1_echo.rb +68 -0
  139. data/test/functional/eft_20_save.rb +116 -0
  140. data/test/functional/eft_21_restore.rb +61 -0
  141. data/test/functional/eft_22_noop.rb +28 -0
  142. data/test/functional/eft_23_apply.rb +168 -0
  143. data/test/functional/eft_24_add_branches.rb +98 -0
  144. data/test/functional/eft_25_command.rb +28 -0
  145. data/test/functional/eft_26_error.rb +77 -0
  146. data/test/functional/eft_27_inc.rb +280 -0
  147. data/test/functional/eft_28_once.rb +135 -0
  148. data/test/functional/eft_29_cron.rb +64 -0
  149. data/test/functional/eft_2_sequence.rb +58 -0
  150. data/test/functional/eft_30_ref.rb +155 -0
  151. data/test/functional/eft_31_registerp.rb +130 -0
  152. data/test/functional/eft_32_lose.rb +93 -0
  153. data/test/functional/eft_33_let.rb +31 -0
  154. data/test/functional/eft_34_given.rb +123 -0
  155. data/test/functional/eft_35_filter.rb +375 -0
  156. data/test/functional/eft_36_read.rb +95 -0
  157. data/test/functional/eft_3_participant.rb +149 -0
  158. data/test/functional/eft_4_set.rb +296 -0
  159. data/test/functional/eft_5_subprocess.rb +163 -0
  160. data/test/functional/eft_6_concurrence.rb +304 -0
  161. data/test/functional/eft_7_forget.rb +61 -0
  162. data/test/functional/eft_8_undo.rb +114 -0
  163. data/test/functional/eft_9_redo.rb +138 -0
  164. data/test/functional/ft_0_worker.rb +65 -0
  165. data/test/functional/ft_10_dollar.rb +304 -0
  166. data/test/functional/ft_11_recursion.rb +109 -0
  167. data/test/functional/ft_12_launchitem.rb +43 -0
  168. data/test/functional/ft_13_variables.rb +151 -0
  169. data/test/functional/ft_14_re_apply.rb +324 -0
  170. data/test/functional/ft_15_timeout.rb +226 -0
  171. data/test/functional/ft_16_participant_params.rb +98 -0
  172. data/test/functional/ft_17_conditional.rb +102 -0
  173. data/test/functional/ft_18_kill.rb +138 -0
  174. data/test/functional/ft_19_participant_code.rb +67 -0
  175. data/test/functional/ft_1_process_status.rb +796 -0
  176. data/test/functional/ft_20_storage_participant.rb +543 -0
  177. data/test/functional/ft_21_forget.rb +153 -0
  178. data/test/functional/ft_22_process_definitions.rb +90 -0
  179. data/test/functional/ft_23_load_defs.rb +79 -0
  180. data/test/functional/ft_24_block_participant.rb +235 -0
  181. data/test/functional/ft_25_receiver.rb +207 -0
  182. data/test/functional/ft_26_participant_rtimeout.rb +179 -0
  183. data/test/functional/ft_27_var_indirection.rb +128 -0
  184. data/test/functional/ft_28_null_noop_participants.rb +51 -0
  185. data/test/functional/ft_29_part_template.rb +60 -0
  186. data/test/functional/ft_2_errors.rb +380 -0
  187. data/test/functional/ft_30_smtp_participant.rb +122 -0
  188. data/test/functional/ft_31_part_blocking.rb +72 -0
  189. data/test/functional/ft_33_participant_subprocess_priority.rb +32 -0
  190. data/test/functional/ft_34_cursor_rewind.rb +101 -0
  191. data/test/functional/ft_35_add_service.rb +56 -0
  192. data/test/functional/ft_36_storage_history.rb +150 -0
  193. data/test/functional/ft_37_default_history.rb +109 -0
  194. data/test/functional/ft_38_participant_more.rb +193 -0
  195. data/test/functional/ft_39_wait_for.rb +136 -0
  196. data/test/functional/ft_3_participant_registration.rb +574 -0
  197. data/test/functional/ft_40_wait_logger.rb +62 -0
  198. data/test/functional/ft_41_participants.rb +91 -0
  199. data/test/functional/ft_42_storage_copy.rb +71 -0
  200. data/test/functional/ft_43_participant_on_reply.rb +87 -0
  201. data/test/functional/ft_44_var_participant.rb +35 -0
  202. data/test/functional/ft_45_participant_accept.rb +64 -0
  203. data/test/functional/ft_46_launch_single.rb +83 -0
  204. data/test/functional/ft_47_wfid_generator.rb +54 -0
  205. data/test/functional/ft_48_lose.rb +112 -0
  206. data/test/functional/ft_49_engine_on_error.rb +201 -0
  207. data/test/functional/ft_4_cancel.rb +132 -0
  208. data/test/functional/ft_50_engine_config.rb +22 -0
  209. data/test/functional/ft_51_misc.rb +67 -0
  210. data/test/functional/ft_52_case.rb +134 -0
  211. data/test/functional/ft_53_engine_on_terminate.rb +95 -0
  212. data/test/functional/ft_54_patterns.rb +104 -0
  213. data/test/functional/ft_55_engine_participant.rb +303 -0
  214. data/test/functional/ft_56_filter_attribute.rb +259 -0
  215. data/test/functional/ft_57_rev_participant.rb +252 -0
  216. data/test/functional/ft_58_workitem.rb +69 -0
  217. data/test/functional/ft_59_pause.rb +343 -0
  218. data/test/functional/ft_5_on_error.rb +384 -0
  219. data/test/functional/ft_60_code_participant.rb +45 -0
  220. data/test/functional/ft_61_trailing_fields.rb +34 -0
  221. data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
  222. data/test/functional/ft_6_on_cancel.rb +221 -0
  223. data/test/functional/ft_7_tags.rb +177 -0
  224. data/test/functional/ft_8_participant_consumption.rb +124 -0
  225. data/test/functional/ft_9_subprocesses.rb +146 -0
  226. data/test/functional/restart_base.rb +34 -0
  227. data/test/functional/rt_0_wait.rb +55 -0
  228. data/test/functional/rt_1_listen.rb +56 -0
  229. data/test/functional/rt_2_errors.rb +56 -0
  230. data/test/functional/rt_3_once.rb +70 -0
  231. data/test/functional/rt_4_cron.rb +64 -0
  232. data/test/functional/rt_5_timeout.rb +60 -0
  233. data/test/functional/rtest.rb +8 -0
  234. data/test/functional/storage_helper.rb +93 -0
  235. data/test/functional/test.rb +44 -0
  236. data/test/functional/vertical.rb +46 -0
  237. data/test/path_helper.rb +15 -0
  238. data/test/test.rb +13 -0
  239. data/test/test_helper.rb +28 -0
  240. data/test/unit/storage.rb +428 -0
  241. data/test/unit/storages.rb +37 -0
  242. data/test/unit/test.rb +28 -0
  243. data/test/unit/ut_0_ruby_reader.rb +223 -0
  244. data/test/unit/ut_11_lookup.rb +122 -0
  245. data/test/unit/ut_13_serializer.rb +65 -0
  246. data/test/unit/ut_14_is_uri.rb +28 -0
  247. data/test/unit/ut_15_util.rb +57 -0
  248. data/test/unit/ut_16_reader.rb +225 -0
  249. data/test/unit/ut_18_engine.rb +47 -0
  250. data/test/unit/ut_19_part_template.rb +86 -0
  251. data/test/unit/ut_1_fei.rb +165 -0
  252. data/test/unit/ut_20_composite_storage.rb +74 -0
  253. data/test/unit/ut_21_svc_participant_list.rb +46 -0
  254. data/test/unit/ut_22_filter.rb +1094 -0
  255. data/test/unit/ut_23_svc_tracker.rb +48 -0
  256. data/test/unit/ut_24_radial_reader.rb +332 -0
  257. data/test/unit/ut_25_merge.rb +113 -0
  258. data/test/unit/ut_3_wait_logger.rb +39 -0
  259. data/test/unit/ut_4_expmap.rb +20 -0
  260. data/test/unit/ut_5_tree.rb +54 -0
  261. data/test/unit/ut_6_condition.rb +303 -0
  262. data/test/unit/ut_7_workitem.rb +99 -0
  263. data/test/unit/ut_8_tree_to_dot.rb +72 -0
  264. data/test/unit/ut_9_xml_reader.rb +61 -0
  265. metadata +504 -0
@@ -0,0 +1,124 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Jun 10 11:03:26 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+
10
+
11
+ class FtParticipantConsumptionTest < Test::Unit::TestCase
12
+ include FunctionalBase
13
+
14
+ def test_workitems_dispatching_message
15
+
16
+ pdef = Ruote.process_definition do
17
+ sequence do
18
+ alpha
19
+ end
20
+ end
21
+
22
+ @engine.register_participant :alpha do |workitem|
23
+ @tracer << "#{workitem.participant_name}\n"
24
+ end
25
+
26
+ #noisy
27
+
28
+ assert_trace('alpha', pdef)
29
+
30
+ Thread.pass
31
+ # making sure the reply to the participant expression is intercepted
32
+ # as well
33
+
34
+ assert_equal(
35
+ 3, logger.log.select { |e| e['participant_name'] == 'alpha' }.size)
36
+ end
37
+
38
+ def test_missing_participant_name
39
+
40
+ pdef = Ruote.process_definition do
41
+ sequence do
42
+ participant
43
+ end
44
+ end
45
+
46
+ #noisy
47
+
48
+ wfid = @engine.launch(pdef)
49
+
50
+ wait_for(wfid)
51
+
52
+ ps = @engine.process(wfid)
53
+
54
+ assert_equal(
55
+ 1, ps.errors.size)
56
+ assert_equal(
57
+ '#<ArgumentError: no participant name specified>', ps.errors[0].message)
58
+ end
59
+
60
+ def test_dot_star
61
+
62
+ pdef = Ruote.process_definition do
63
+ sequence do
64
+ alpha
65
+ end
66
+ end
67
+
68
+ @engine.register_participant '.*' do |workitem|
69
+ @tracer << "#{workitem.participant_name} #{workitem.fei.expid}\n"
70
+ end
71
+
72
+ assert_trace('alpha 0_0_0', pdef)
73
+ end
74
+
75
+ def test_dispatch_time
76
+
77
+ @engine.context.stash[:wis] = []
78
+
79
+ pdef = Ruote.process_definition { alpha; alpha }
80
+
81
+ @engine.register_participant 'alpha' do |workitem|
82
+ stash[:wis] << workitem.to_h.dup
83
+ end
84
+
85
+ assert_trace('', pdef)
86
+
87
+ assert_equal(
88
+ String,
89
+ @engine.context.stash[:wis].first['fields']['dispatched_at'].class)
90
+
91
+ assert_not_equal(
92
+ @engine.context.stash[:wis].first['fields']['dispathed_at'],
93
+ @engine.context.stash[:wis].last['fields']['dispatched_at'])
94
+ end
95
+
96
+ class MyParticipant
97
+ include Ruote::LocalParticipant
98
+
99
+ def consume(workitem)
100
+ reply_to_engine(workitem)
101
+ end
102
+
103
+ def do_not_thread(workitem)
104
+ @context.tracer << workitem.fields['msg']
105
+ true
106
+ end
107
+ end
108
+
109
+ def test_do_not_thread_and_workitem
110
+
111
+ pdef = Ruote.define do
112
+ alpha
113
+ end
114
+
115
+ @engine.register_participant :alpha, MyParticipant
116
+
117
+ wfid = @engine.launch(pdef, 'msg' => 'kilroy')
118
+
119
+ @engine.wait_for(wfid)
120
+
121
+ assert_equal 'kilroy', @tracer.to_s
122
+ end
123
+ end
124
+
@@ -0,0 +1,146 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Jun 10 17:41:23 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+
10
+ require 'ruote/participant'
11
+
12
+
13
+ class FtSubprocessesTest < Test::Unit::TestCase
14
+ include FunctionalBase
15
+
16
+ def test_subprocess_tree_lookup
17
+
18
+ pdef = Ruote.process_definition do
19
+ define 'sub0' do
20
+ bravo
21
+ echo 'result : ${v:nada}'
22
+ end
23
+ sequence do
24
+ bravo
25
+ sub0
26
+ end
27
+ end
28
+
29
+ bravo = @engine.register_participant :bravo, Ruote::StorageParticipant
30
+
31
+ #noisy
32
+
33
+ wfid = @engine.launch(pdef)
34
+ wait_for(:bravo)
35
+
36
+ fexp = Ruote::Exp::FlowExpression.fetch(
37
+ @engine.context, bravo.first.fei.to_h)
38
+
39
+ assert_equal(
40
+ [ '0_0',
41
+ ['define', {'sub0'=>nil}, [['bravo', {}, []], ['echo', {'result : ${v:nada}'=>nil}, []]]] ],
42
+ fexp.lookup_variable('sub0'))
43
+
44
+ bravo.proceed(bravo.first)
45
+ wait_for(:bravo)
46
+
47
+ fexp = Ruote::Exp::FlowExpression.fetch(
48
+ @engine.context, bravo.first.fei.to_h)
49
+
50
+ assert_equal(
51
+ ['define', {'sub0'=>nil}, [['bravo', {}, []], ['echo', {'result : ${v:nada}'=>nil}, []]]],
52
+ fexp.parent.tree)
53
+
54
+ #logger.log.each { |e| puts e['action'] }
55
+ assert_equal 2, logger.log.select { |e| e['action'] == 'launch' }.size
56
+ end
57
+
58
+ def test_subid
59
+
60
+ pdef = Ruote.process_definition do
61
+ sequence do
62
+ sub0 :forget => true
63
+ sub0 :forget => true
64
+ end
65
+ define 'sub0' do
66
+ sub1 :forget => true
67
+ end
68
+ define 'sub1' do
69
+ alpha
70
+ end
71
+ end
72
+
73
+ @engine.context.stash[:wfids] = []
74
+
75
+ @engine.register_participant :alpha do |workitem|
76
+ stash[:wfids] << workitem.fei.subid
77
+ end
78
+
79
+ #noisy
80
+
81
+ wfid = @engine.launch(pdef)
82
+
83
+ wait_for(:alpha)
84
+ wait_for(:alpha)
85
+ wait_for(6)
86
+
87
+ assert_equal 2, @engine.context.stash[:wfids].size
88
+ assert_equal 2, @engine.context.stash[:wfids].sort.uniq.size
89
+ end
90
+
91
+ def test_cancel_and_subprocess
92
+
93
+ pdef = Ruote.process_definition do
94
+ sequence do
95
+ sub0
96
+ end
97
+ define 'sub0' do
98
+ alpha
99
+ end
100
+ end
101
+
102
+ alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
103
+
104
+ wfid = @engine.launch(pdef)
105
+
106
+ wait_for(:alpha)
107
+
108
+ assert_equal 1, alpha.size
109
+
110
+ @engine.cancel_process(wfid)
111
+
112
+ wait_for(wfid)
113
+
114
+ assert_equal 0, alpha.size
115
+ end
116
+
117
+ def test_cancel_and_engine_variable_subprocess
118
+
119
+ pdef = Ruote.process_definition do
120
+ sequence do
121
+ sub0
122
+ end
123
+ end
124
+
125
+ @engine.variables['sub0'] = Ruote.process_definition do
126
+ alpha
127
+ end
128
+
129
+ alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
130
+
131
+ #noisy
132
+
133
+ wfid = @engine.launch(pdef)
134
+
135
+ wait_for(:alpha)
136
+
137
+ assert_equal 1, alpha.size
138
+
139
+ @engine.cancel_process(wfid)
140
+
141
+ wait_for(wfid)
142
+
143
+ assert_equal 0, alpha.size
144
+ end
145
+ end
146
+
@@ -0,0 +1,34 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Jul 1 23:27:49 JST 2009
6
+ #
7
+
8
+ module RestartBase
9
+
10
+ def setup
11
+ @tracer = Tracer.new
12
+ end
13
+
14
+ def teardown
15
+ @engine.shutdown
16
+ @storage.purge!
17
+ end
18
+
19
+ protected
20
+
21
+ def start_new_engine
22
+
23
+ @storage = determine_storage(
24
+ 's_logger' => [ 'ruote/log/test_logger', 'Ruote::TestLogger' ],
25
+ :persistent => true)
26
+
27
+ @engine = Ruote::Engine.new(Ruote::Worker.new(@storage))
28
+
29
+ #@tracer.clear
30
+
31
+ @engine.add_service('tracer', @tracer)
32
+ end
33
+ end
34
+
@@ -0,0 +1,55 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Jul 1 23:22:26 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+ require File.join(File.dirname(__FILE__), 'restart_base')
10
+
11
+
12
+ class RtWaitTest < Test::Unit::TestCase
13
+ include FunctionalBase
14
+ include RestartBase
15
+
16
+ def test_wait_and_restart
17
+
18
+ start_new_engine
19
+
20
+ pdef = Ruote.process_definition :name => 'test' do
21
+ sequence do
22
+ echo 'in'
23
+ wait '3d'
24
+ echo 'out.'
25
+ end
26
+ end
27
+
28
+ #noisy
29
+
30
+ wfid = @engine.launch(pdef)
31
+
32
+ wait_for(5)
33
+
34
+ assert_equal 1, @engine.processes.size
35
+ assert_equal 1, @engine.storage.get_many('schedules').size
36
+
37
+ @engine.shutdown
38
+
39
+ # restart...
40
+
41
+ start_new_engine
42
+
43
+ #noisy
44
+
45
+ assert_equal 1, @engine.processes.size
46
+ assert_equal 1, @engine.storage.get_many('schedules').size
47
+
48
+ @engine.cancel_process(wfid)
49
+
50
+ wait_for(wfid)
51
+
52
+ assert_equal 0, @engine.processes.size
53
+ end
54
+ end
55
+
@@ -0,0 +1,56 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Thu Jul 2 12:51:54 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+ require File.join(File.dirname(__FILE__), 'restart_base')
10
+
11
+
12
+ require 'ruote/participant'
13
+
14
+
15
+ class RtListenTest < Test::Unit::TestCase
16
+ include FunctionalBase
17
+ include RestartBase
18
+
19
+ def test_listen_and_restart
20
+
21
+ start_new_engine
22
+
23
+ pdef = Ruote.process_definition do
24
+ concurrence do
25
+ sequence do
26
+ listen :to => '/^al.*/', :upon => 'reply'
27
+ echo 'done.'
28
+ end
29
+ alpha
30
+ end
31
+ end
32
+
33
+ #puts; noisy
34
+
35
+ alpha = @engine.register_participant :alpha, Ruote::StorageParticipant
36
+
37
+ wfid = @engine.launch(pdef)
38
+
39
+ wait_for(:alpha)
40
+
41
+ assert_equal '', @tracer.to_s
42
+
43
+ @engine.shutdown
44
+
45
+ start_new_engine
46
+
47
+ #puts; noisy
48
+
49
+ @engine.reply(alpha.first)
50
+
51
+ wait_for(wfid)
52
+
53
+ assert_equal 'done.', @tracer.to_s
54
+ end
55
+ end
56
+
@@ -0,0 +1,56 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Thu Jul 16 13:49:09 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+ require File.join(File.dirname(__FILE__), 'restart_base')
10
+
11
+
12
+ class RtErrorsTest < Test::Unit::TestCase
13
+ include FunctionalBase
14
+ include RestartBase
15
+
16
+ def test_err_and_restart
17
+
18
+ start_new_engine
19
+
20
+ pdef = Ruote.process_definition :name => 'test' do
21
+ sequence do
22
+ nada
23
+ end
24
+ end
25
+
26
+ #noisy
27
+
28
+ wfid = @engine.launch(pdef)
29
+
30
+ wait_for(3)
31
+
32
+ ps = @engine.process(wfid)
33
+
34
+ assert_equal 1, ps.errors.size
35
+
36
+ @engine.shutdown
37
+
38
+ # restart...
39
+
40
+ start_new_engine
41
+
42
+ #noisy
43
+
44
+ assert_equal 1, @engine.processes.size
45
+
46
+ ps = @engine.process(wfid)
47
+ assert_equal 1, ps.errors.size
48
+
49
+ @engine.cancel_process(wfid)
50
+
51
+ wait_for(wfid)
52
+
53
+ assert_nil @engine.process(wfid)
54
+ end
55
+ end
56
+