ruote 0.9.18

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 (291) hide show
  1. data/README.txt +24 -0
  2. data/bin/validate-workflow.rb +89 -0
  3. data/examples/about_state.rb +81 -0
  4. data/examples/bigflow.rb +19 -0
  5. data/examples/csv_weather.rb +23 -0
  6. data/examples/engine_template.rb +247 -0
  7. data/examples/flowtracing.rb +24 -0
  8. data/examples/homeworkreview.rb +68 -0
  9. data/examples/kotoba.rb +22 -0
  10. data/examples/mano_tracker.rb +172 -0
  11. data/examples/openwferu.rb +58 -0
  12. data/examples/quotereporter.rb +157 -0
  13. data/examples/scheduler_cron_usage.rb +48 -0
  14. data/examples/scheduler_usage.rb +56 -0
  15. data/lib/openwfe.rb +41 -0
  16. data/lib/openwfe/contextual.rb +111 -0
  17. data/lib/openwfe/def.rb +46 -0
  18. data/lib/openwfe/engine.rb +37 -0
  19. data/lib/openwfe/engine/engine.rb +756 -0
  20. data/lib/openwfe/engine/expool_methods.rb +172 -0
  21. data/lib/openwfe/engine/file_persisted_engine.rb +105 -0
  22. data/lib/openwfe/engine/participant_methods.rb +133 -0
  23. data/lib/openwfe/engine/status_methods.rb +353 -0
  24. data/lib/openwfe/engine/update_exp_methods.rb +112 -0
  25. data/lib/openwfe/exceptions.rb +51 -0
  26. data/lib/openwfe/expool/errorjournal.rb +476 -0
  27. data/lib/openwfe/expool/expressionpool.rb +1144 -0
  28. data/lib/openwfe/expool/expstorage.rb +403 -0
  29. data/lib/openwfe/expool/history.rb +174 -0
  30. data/lib/openwfe/expool/journal.rb +224 -0
  31. data/lib/openwfe/expool/journal_replay.rb +321 -0
  32. data/lib/openwfe/expool/parser.rb +242 -0
  33. data/lib/openwfe/expool/representation.rb +121 -0
  34. data/lib/openwfe/expool/threadedexpstorage.rb +188 -0
  35. data/lib/openwfe/expool/wfidgen.rb +388 -0
  36. data/lib/openwfe/expool/yamlexpstorage.rb +224 -0
  37. data/lib/openwfe/expressions/condition.rb +244 -0
  38. data/lib/openwfe/expressions/environment.rb +246 -0
  39. data/lib/openwfe/expressions/expressionmap.rb +258 -0
  40. data/lib/openwfe/expressions/fe_cancel.rb +109 -0
  41. data/lib/openwfe/expressions/fe_command.rb +241 -0
  42. data/lib/openwfe/expressions/fe_concurrence.rb +662 -0
  43. data/lib/openwfe/expressions/fe_cron.rb +259 -0
  44. data/lib/openwfe/expressions/fe_cursor.rb +259 -0
  45. data/lib/openwfe/expressions/fe_define.rb +192 -0
  46. data/lib/openwfe/expressions/fe_do.rb +168 -0
  47. data/lib/openwfe/expressions/fe_equals.rb +291 -0
  48. data/lib/openwfe/expressions/fe_filter.rb +129 -0
  49. data/lib/openwfe/expressions/fe_filter_definition.rb +168 -0
  50. data/lib/openwfe/expressions/fe_fqv.rb +250 -0
  51. data/lib/openwfe/expressions/fe_if.rb +303 -0
  52. data/lib/openwfe/expressions/fe_iterator.rb +145 -0
  53. data/lib/openwfe/expressions/fe_listen.rb +371 -0
  54. data/lib/openwfe/expressions/fe_losfor.rb +111 -0
  55. data/lib/openwfe/expressions/fe_misc.rb +421 -0
  56. data/lib/openwfe/expressions/fe_participant.rb +269 -0
  57. data/lib/openwfe/expressions/fe_reserve.rb +212 -0
  58. data/lib/openwfe/expressions/fe_save.rb +274 -0
  59. data/lib/openwfe/expressions/fe_sequence.rb +117 -0
  60. data/lib/openwfe/expressions/fe_set.rb +139 -0
  61. data/lib/openwfe/expressions/fe_sleep.rb +166 -0
  62. data/lib/openwfe/expressions/fe_step.rb +159 -0
  63. data/lib/openwfe/expressions/fe_subprocess.rb +168 -0
  64. data/lib/openwfe/expressions/fe_timeout.rb +127 -0
  65. data/lib/openwfe/expressions/fe_wait.rb +78 -0
  66. data/lib/openwfe/expressions/fe_when.rb +142 -0
  67. data/lib/openwfe/expressions/filter.rb +104 -0
  68. data/lib/openwfe/expressions/flowexpression.rb +847 -0
  69. data/lib/openwfe/expressions/iterator.rb +221 -0
  70. data/lib/openwfe/expressions/merge.rb +84 -0
  71. data/lib/openwfe/expressions/raw.rb +547 -0
  72. data/lib/openwfe/expressions/rprocdef.rb +375 -0
  73. data/lib/openwfe/expressions/time.rb +333 -0
  74. data/lib/openwfe/expressions/timeout.rb +178 -0
  75. data/lib/openwfe/expressions/value.rb +126 -0
  76. data/lib/openwfe/filterdef.rb +259 -0
  77. data/lib/openwfe/flowexpressionid.rb +357 -0
  78. data/lib/openwfe/listeners/listener.rb +97 -0
  79. data/lib/openwfe/listeners/listeners.rb +139 -0
  80. data/lib/openwfe/listeners/socketlisteners.rb +272 -0
  81. data/lib/openwfe/logging.rb +122 -0
  82. data/lib/openwfe/omixins.rb +95 -0
  83. data/lib/openwfe/orest/controlclient.rb +119 -0
  84. data/lib/openwfe/orest/definitions.rb +113 -0
  85. data/lib/openwfe/orest/exception.rb +60 -0
  86. data/lib/openwfe/orest/oldrestservlet.rb +279 -0
  87. data/lib/openwfe/orest/osocket.rb +148 -0
  88. data/lib/openwfe/orest/restclient.rb +176 -0
  89. data/lib/openwfe/orest/workitem.rb +206 -0
  90. data/lib/openwfe/orest/worklistclient.rb +272 -0
  91. data/lib/openwfe/orest/xmlcodec.rb +670 -0
  92. data/lib/openwfe/participants.rb +38 -0
  93. data/lib/openwfe/participants/enoparticipants.rb +230 -0
  94. data/lib/openwfe/participants/participant.rb +141 -0
  95. data/lib/openwfe/participants/participantmap.rb +249 -0
  96. data/lib/openwfe/participants/participants.rb +407 -0
  97. data/lib/openwfe/participants/soapparticipants.rb +135 -0
  98. data/lib/openwfe/participants/socketparticipants.rb +202 -0
  99. data/lib/openwfe/participants/storeparticipants.rb +254 -0
  100. data/lib/openwfe/rudefinitions.rb +130 -0
  101. data/lib/openwfe/service.rb +103 -0
  102. data/lib/openwfe/storage/yamlcustom.rb +106 -0
  103. data/lib/openwfe/storage/yamlfilestorage.rb +245 -0
  104. data/lib/openwfe/tools/flowtracer.rb +81 -0
  105. data/lib/openwfe/util/dollar.rb +217 -0
  106. data/lib/openwfe/util/irb.rb +86 -0
  107. data/lib/openwfe/util/observable.rb +144 -0
  108. data/lib/openwfe/util/ometa.rb +62 -0
  109. data/lib/openwfe/util/workqueue.rb +124 -0
  110. data/lib/openwfe/util/xml.rb +418 -0
  111. data/lib/openwfe/utils.rb +554 -0
  112. data/lib/openwfe/version.rb +37 -0
  113. data/lib/openwfe/workitem.rb +499 -0
  114. data/lib/openwfe/worklist/oldrest.rb +244 -0
  115. data/lib/openwfe/worklist/storelocks.rb +293 -0
  116. data/lib/openwfe/worklist/storeparticipant.rb +44 -0
  117. data/lib/openwfe/worklist/worklist.rb +297 -0
  118. data/test/README.txt +27 -0
  119. data/test/back_0916_test.rb +111 -0
  120. data/test/bm/bm_1_xml_vs_prog.rb +56 -0
  121. data/test/bm/bm_2_step.rb +109 -0
  122. data/test/bm/ft_0f_5ms.rb +35 -0
  123. data/test/bm/ft_26_load.rb +210 -0
  124. data/test/bm/ft_26b_load.rb +86 -0
  125. data/test/bm/ft_26c_load.rb +97 -0
  126. data/test/bm/ft_26d_load.rb +97 -0
  127. data/test/bm/ft_recu.rb +71 -0
  128. data/test/clone_test.rb +122 -0
  129. data/test/concurrence_test.rb +77 -0
  130. data/test/condition_test.rb +155 -0
  131. data/test/console_test.rb +12 -0
  132. data/test/cron_ltest.rb +15 -0
  133. data/test/description_test.rb +87 -0
  134. data/test/eno_test.rb +76 -0
  135. data/test/expmap_test.rb +54 -0
  136. data/test/expool_20031219_0916.tgz +0 -0
  137. data/test/fe_lookup_att_test.rb +62 -0
  138. data/test/fei_test.rb +181 -0
  139. data/test/file_persisted_engine_test.rb +64 -0
  140. data/test/file_persistence_test.rb +134 -0
  141. data/test/filep_cancel_test.rb +123 -0
  142. data/test/filter_test.rb +109 -0
  143. data/test/flowtestbase.rb +351 -0
  144. data/test/ft_0.rb +68 -0
  145. data/test/ft_0b_sequence.rb +36 -0
  146. data/test/ft_0c_testname.rb +33 -0
  147. data/test/ft_0d_participant.rb +30 -0
  148. data/test/ft_0e_multibody.rb +34 -0
  149. data/test/ft_10_loop.rb +134 -0
  150. data/test/ft_11_ppd.rb +415 -0
  151. data/test/ft_11b_ppd.rb +54 -0
  152. data/test/ft_12_blockparticipant.rb +97 -0
  153. data/test/ft_13_eno.rb +52 -0
  154. data/test/ft_14_subprocess.rb +88 -0
  155. data/test/ft_14b_subprocess.rb +192 -0
  156. data/test/ft_14c_subprocess.rb +68 -0
  157. data/test/ft_15_iterator.rb +216 -0
  158. data/test/ft_15b_iterator.rb +74 -0
  159. data/test/ft_16_fqv.rb +73 -0
  160. data/test/ft_17_condition.rb +84 -0
  161. data/test/ft_18_pname.rb +56 -0
  162. data/test/ft_1_unset.rb +175 -0
  163. data/test/ft_1b_unset.rb +39 -0
  164. data/test/ft_20_cron.rb +53 -0
  165. data/test/ft_21_cron.rb +87 -0
  166. data/test/ft_21b_cron_pause.rb +82 -0
  167. data/test/ft_22_history.rb +74 -0
  168. data/test/ft_23_when.rb +77 -0
  169. data/test/ft_23b_when.rb +70 -0
  170. data/test/ft_23c_wait.rb +80 -0
  171. data/test/ft_23d_cww.rb +58 -0
  172. data/test/ft_24_def.rb +44 -0
  173. data/test/ft_25_cancel.rb +89 -0
  174. data/test/ft_27_getflowpos.rb +147 -0
  175. data/test/ft_28_fileparticipant.rb +63 -0
  176. data/test/ft_29_httprb.rb +106 -0
  177. data/test/ft_2_concurrence.rb +135 -0
  178. data/test/ft_2b_concurrence.rb +188 -0
  179. data/test/ft_2c_concurrence.rb +64 -0
  180. data/test/ft_30_socketlistener.rb +203 -0
  181. data/test/ft_31_flowname.rb +40 -0
  182. data/test/ft_32_journal.rb +91 -0
  183. data/test/ft_32c_journal.rb +102 -0
  184. data/test/ft_32d_journal.rb +84 -0
  185. data/test/ft_33_description.rb +107 -0
  186. data/test/ft_34_cancelwfid.rb +80 -0
  187. data/test/ft_35_localdefs.rb +75 -0
  188. data/test/ft_36_subprocids.rb +97 -0
  189. data/test/ft_37_pnames.rb +70 -0
  190. data/test/ft_38_tag.rb +127 -0
  191. data/test/ft_38b_tag.rb +161 -0
  192. data/test/ft_38c_tag.rb +100 -0
  193. data/test/ft_39_reserve.rb +63 -0
  194. data/test/ft_39b_reserve.rb +84 -0
  195. data/test/ft_3_equals.rb +170 -0
  196. data/test/ft_3b_lookup_vf.rb +83 -0
  197. data/test/ft_40_defined.rb +61 -0
  198. data/test/ft_41_case.rb +110 -0
  199. data/test/ft_42_environments.rb +75 -0
  200. data/test/ft_43_pat10.rb +85 -0
  201. data/test/ft_44_save.rb +70 -0
  202. data/test/ft_44b_restore.rb +212 -0
  203. data/test/ft_45_citerator.rb +214 -0
  204. data/test/ft_46_pparams.rb +62 -0
  205. data/test/ft_47_filter.rb +160 -0
  206. data/test/ft_48_fe_filter.rb +88 -0
  207. data/test/ft_49_condition.rb +126 -0
  208. data/test/ft_4_misc.rb +237 -0
  209. data/test/ft_50_xml_attribute.rb +155 -0
  210. data/test/ft_51_stack.rb +55 -0
  211. data/test/ft_52_obs_participant.rb +123 -0
  212. data/test/ft_53_null_noop_participant.rb +62 -0
  213. data/test/ft_54_listen.rb +288 -0
  214. data/test/ft_54b_listen.rb +66 -0
  215. data/test/ft_54c_listen.rb +99 -0
  216. data/test/ft_55_ptimeout.rb +59 -0
  217. data/test/ft_56_timeout.rb +59 -0
  218. data/test/ft_57_a.rb +145 -0
  219. data/test/ft_58_ejournal.rb +151 -0
  220. data/test/ft_59_ps.rb +150 -0
  221. data/test/ft_59b_ps_for_pat.rb +58 -0
  222. data/test/ft_5_time.rb +118 -0
  223. data/test/ft_60_ecancel.rb +161 -0
  224. data/test/ft_61_elsub.rb +51 -0
  225. data/test/ft_62_procparticipant.rb +71 -0
  226. data/test/ft_63_pause.rb +124 -0
  227. data/test/ft_64_alias.rb +102 -0
  228. data/test/ft_64_clone.rb +69 -0
  229. data/test/ft_65_stringlaunch.rb +59 -0
  230. data/test/ft_66_subforget.rb +70 -0
  231. data/test/ft_67_schedlaunch.rb +116 -0
  232. data/test/ft_68_ifparticipant.rb +70 -0
  233. data/test/ft_69_cancelmissing.rb +51 -0
  234. data/test/ft_6_lambda.rb +64 -0
  235. data/test/ft_70_lookupvar.rb +55 -0
  236. data/test/ft_71_log.rb +60 -0
  237. data/test/ft_72_lookup_processes.rb +76 -0
  238. data/test/ft_73_cancel_sub.rb +139 -0
  239. data/test/ft_74_block_and_workitem_dup.rb +63 -0
  240. data/test/ft_75_ruby_attributes.rb +87 -0
  241. data/test/ft_76_merge_isolate.rb +88 -0
  242. data/test/ft_77_segments.rb +35 -0
  243. data/test/ft_78_eval.rb +150 -0
  244. data/test/ft_79_tticket.rb +187 -0
  245. data/test/ft_79b_tticket.rb +172 -0
  246. data/test/ft_79c_outcome.rb +56 -0
  247. data/test/ft_7_lose.rb +104 -0
  248. data/test/ft_7b_lose.rb +78 -0
  249. data/test/ft_80_spname.rb +91 -0
  250. data/test/ft_81_exp.rb +60 -0
  251. data/test/ft_82_trecu.rb +46 -0
  252. data/test/ft_83_badpause.rb +58 -0
  253. data/test/ft_84_updateexp.rb +198 -0
  254. data/test/ft_85_dolhash.rb +43 -0
  255. data/test/ft_86_dollar_fv.rb +68 -0
  256. data/test/ft_87_define.rb +74 -0
  257. data/test/ft_8_forget.rb +44 -0
  258. data/test/ft_9_cursor.rb +145 -0
  259. data/test/ft_9b_cursor.rb +105 -0
  260. data/test/ft_tests.rb +124 -0
  261. data/test/hash_test.rb +75 -0
  262. data/test/hparticipant_test.rb +164 -0
  263. data/test/lookup_att_test.rb +90 -0
  264. data/test/lookup_vf_test.rb +94 -0
  265. data/test/misc_test.rb +90 -0
  266. data/test/nut_0_irb.rb +20 -0
  267. data/test/obs_test.rb +142 -0
  268. data/test/orest_test.rb +251 -0
  269. data/test/param_test.rb +290 -0
  270. data/test/participant_test.rb +101 -0
  271. data/test/pending.rb +23 -0
  272. data/test/ps_representation.rb +133 -0
  273. data/test/rake_ltest.rb +38 -0
  274. data/test/rake_qtest.rb +68 -0
  275. data/test/raw_prog_test.rb +412 -0
  276. data/test/restart_cron_test.rb +136 -0
  277. data/test/restart_paused_test.rb +98 -0
  278. data/test/restart_sleep_test.rb +140 -0
  279. data/test/restart_tests.rb +18 -0
  280. data/test/restart_when_test.rb +112 -0
  281. data/test/ruby_procdef_test.rb +132 -0
  282. data/test/rutest_utils.rb +63 -0
  283. data/test/sec_test.rb +205 -0
  284. data/test/slock_test.rb +80 -0
  285. data/test/storage_test.rb +44 -0
  286. data/test/test.rb +3 -0
  287. data/test/timeout_test.rb +105 -0
  288. data/test/util_xml_test.rb +112 -0
  289. data/test/wfid_test.rb +175 -0
  290. data/test/wi_test.rb +75 -0
  291. metadata +433 -0
@@ -0,0 +1,66 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+ require 'openwfe/participants/participants'
11
+
12
+
13
+ class FlowTest54b < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+
23
+ #
24
+ # Test 0
25
+ #
26
+
27
+ class Test0 < OpenWFE::ProcessDefinition
28
+ sequence do
29
+ listen :to => "^channel_.$", :upon => :reply
30
+ _print "ok"
31
+ end
32
+ end
33
+
34
+ def test_0
35
+
36
+ #log_level_to_debug
37
+
38
+ launch Test0
39
+
40
+ sleep 0.350
41
+
42
+ assert_equal @tracer.to_s, ""
43
+
44
+ wi = OpenWFE::InFlowWorkItem.new
45
+ wi.participant_name = "channel_z"
46
+
47
+ r = @engine.reply wi
48
+ assert r
49
+
50
+ sleep 0.350
51
+
52
+ #
53
+ # "post test", checking that engine replies 'false' when
54
+ # nobody consumed the message
55
+
56
+ assert_equal @tracer.to_s, "ok"
57
+
58
+ wi = OpenWFE::InFlowWorkItem.new
59
+ wi.participant_name = "channel_unknown"
60
+
61
+ r = @engine.reply wi
62
+ assert (not r)
63
+ end
64
+
65
+ end
66
+
@@ -0,0 +1,99 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+ require 'openwfe/participants/participants'
11
+
12
+
13
+ class FlowTest54c < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+
23
+ #
24
+ # Test 0
25
+ #
26
+
27
+ class Test0 < OpenWFE::ProcessDefinition
28
+ concurrence do
29
+
30
+ listen :to => "^channel_.$", :once => false do
31
+ _print "apply"
32
+ end
33
+
34
+ sequence do
35
+ _sleep "300"
36
+ participant :ref => "channel_z"
37
+ channel_z
38
+ end
39
+ end
40
+ end
41
+
42
+ def test_0
43
+
44
+ @engine.register_participant :channel_z do
45
+ @tracer << "z\n"
46
+ end
47
+
48
+ #log_level_to_debug
49
+
50
+ outputs = [
51
+ %w{ z apply z apply }.join("\n"),
52
+ %w{ z z apply apply }.join("\n")
53
+ ]
54
+
55
+ dotest Test0, outputs, 0.850, true
56
+ end
57
+
58
+ #
59
+ # Test 1
60
+ #
61
+
62
+ class Test1 < OpenWFE::ProcessDefinition
63
+ concurrence do
64
+ listen :to => "channel9", :once => false do
65
+ listen9
66
+ end
67
+ sequence do
68
+ _sleep "300"
69
+ channel9
70
+ end
71
+ end
72
+ end
73
+
74
+ def test_1
75
+
76
+ #log_level_to_debug
77
+
78
+ @engine.register_participant "channel9", OpenWFE::NullParticipant
79
+ @engine.register_participant "listen9", OpenWFE::NullParticipant
80
+
81
+ fei = launch Test1
82
+
83
+ sleep 0.700
84
+
85
+ #puts @engine.get_expression_storage
86
+ assert_equal 8, @engine.get_expression_storage.size
87
+
88
+ #puts @engine.get_expression_storage
89
+
90
+ @engine.cancel_process fei
91
+
92
+ sleep 0.700
93
+
94
+ #puts @engine.get_expression_storage
95
+ assert_equal 1, @engine.get_expression_storage.size
96
+ end
97
+
98
+ end
99
+
@@ -0,0 +1,59 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'pending'
10
+ require 'openwfe/def'
11
+
12
+
13
+ class FlowTest55 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+ include PendingJobsMixin
16
+
17
+ #def setup
18
+ #end
19
+
20
+ #def teardown
21
+ #end
22
+
23
+
24
+ #
25
+ # Test 0
26
+ #
27
+
28
+ class Test0 < OpenWFE::ProcessDefinition
29
+ concurrence :count => 1 do
30
+ sequence do
31
+ participant :ref => "channel_z", :timeout => "1s"
32
+ _print "cancelled?"
33
+ end
34
+ _print "concurrence done"
35
+ end
36
+ end
37
+
38
+ def test_0
39
+
40
+ #scheduler = @engine.get_scheduler
41
+ #class << scheduler
42
+ # attr_reader :pending_jobs
43
+ #end
44
+
45
+ #log_level_to_debug
46
+
47
+ @engine.register_participant :channel_z, OpenWFE::NullParticipant
48
+
49
+ #require 'pp'; pp(scheduler.pending_jobs)
50
+ assert_no_jobs_left
51
+
52
+ dotest Test0, "concurrence done"
53
+
54
+ #require 'pp'; pp(scheduler.pending_jobs)
55
+ assert_no_jobs_left
56
+ end
57
+
58
+ end
59
+
@@ -0,0 +1,59 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'pending'
10
+ require 'openwfe/def'
11
+
12
+
13
+ class FlowTest56 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+ include PendingJobsMixin
16
+
17
+ #def setup
18
+ #end
19
+
20
+ #def teardown
21
+ #end
22
+
23
+
24
+ #
25
+ # Test 0
26
+ #
27
+
28
+ class Test0 < OpenWFE::ProcessDefinition
29
+ sequence do
30
+ _timeout :after => "1s" do
31
+ sequence do
32
+ _print "ok"
33
+ _sleep "2s"
34
+ _print "not ok"
35
+ end
36
+ end
37
+ _print "done"
38
+ end
39
+ end
40
+
41
+ def test_0
42
+
43
+ assert_no_jobs_left
44
+
45
+ dotest Test0, "ok\ndone"
46
+
47
+ sleep 0.350 # skip one scheduler beat
48
+
49
+ #s = @engine.get_scheduler
50
+ #class << s
51
+ # attr_reader :pending_jobs
52
+ #end
53
+ #p s.pending_jobs.collect { |j| [ j.job_id, j.class.name ] }
54
+
55
+ assert_no_jobs_left
56
+ end
57
+
58
+ end
59
+
data/test/ft_57_a.rb ADDED
@@ -0,0 +1,145 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'pending'
10
+ require 'openwfe/def'
11
+
12
+
13
+ class FlowTest57 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+
23
+ #
24
+ # Test 0
25
+ #
26
+
27
+ class Test0 < OpenWFE::ProcessDefinition
28
+ sequence do
29
+ _set :field => "list" do
30
+ _a """
31
+ <array>
32
+ <string>a</string>
33
+ <string>b</string>
34
+ <string>c</string>
35
+ <null/>
36
+ <true/>
37
+ </array>
38
+ """
39
+ end
40
+ _print "${r:wi.list.join('|')}"
41
+ _print "-"
42
+ _set :field => "list" do
43
+ _attribute """
44
+ ---
45
+ - a
46
+ - b
47
+ - 3
48
+ """
49
+ end
50
+ _print "${r:wi.list.join('|')}"
51
+ end
52
+ end
53
+
54
+ def test_0
55
+
56
+ dotest(
57
+ Test0,
58
+ """
59
+ a|b|c||true
60
+ -
61
+ a|b|3
62
+ """.strip)
63
+ end
64
+
65
+ def test_1
66
+
67
+ dotest(
68
+ """
69
+ <process-definition name='57_b' revision='1'>
70
+ <sequence>
71
+ <set field='list'>
72
+ <a>
73
+ ---
74
+ - c
75
+ - d
76
+ - e
77
+ </a>
78
+ </set>
79
+ <print>${r:wi.list.join('|')}</print>
80
+ </sequence>
81
+ </process-definition>
82
+ """,
83
+ "c|d|e")
84
+ end
85
+
86
+ def test_2
87
+
88
+ dotest(
89
+ """
90
+ <process-definition name='57_c' revision='2'>
91
+ <sequence>
92
+ <set field='list'>
93
+ <a>
94
+ <array>
95
+ <string>a</string>
96
+ <number>2</number>
97
+ <string>c</string>
98
+ <false/>
99
+ </array>
100
+ </a>
101
+ </set>
102
+ <print>${r:wi.list.join('|').strip}</print>
103
+ </sequence>
104
+ </process-definition>
105
+ """,
106
+ "a|2|c|false")
107
+ end
108
+
109
+ #
110
+ # Test 3
111
+ #
112
+
113
+ class Test3 < OpenWFE::ProcessDefinition
114
+ sequence do
115
+ _set :field => "other" do
116
+ reval { "77" }
117
+ end
118
+ _print "${f:other}"
119
+ end
120
+ end
121
+
122
+ def test_3
123
+
124
+ dotest Test3, "77"
125
+ end
126
+
127
+ #
128
+ # Test 4
129
+ #
130
+
131
+ class Test4 < OpenWFE::ProcessDefinition
132
+ sequence do
133
+ set :field => "other" do
134
+ a '[1,2,3,false,"toto"]'
135
+ end
136
+ _print "${f:other}"
137
+ end
138
+ end
139
+
140
+ def test_4
141
+
142
+ dotest Test4, "123falsetoto"
143
+ end
144
+ end
145
+
@@ -0,0 +1,151 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Fri Jun 29 23:12:53 JST 2007
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+
14
+ require 'flowtestbase'
15
+
16
+ require 'openwfe/engine/file_persisted_engine'
17
+ require 'openwfe/expool/errorjournal'
18
+
19
+
20
+
21
+ class FlowTest58 < Test::Unit::TestCase
22
+ include FlowTestBase
23
+
24
+ #def teardown
25
+ #end
26
+
27
+ #def setup
28
+ #end
29
+
30
+
31
+ #
32
+ # TEST 0
33
+
34
+ class Test0 < OpenWFE::ProcessDefinition
35
+ sequence do
36
+ participant :alpha
37
+ participant :nada
38
+ participant :bravo
39
+ end
40
+ end
41
+
42
+ def test_0
43
+
44
+ ejournal = @engine.get_error_journal
45
+
46
+ @engine.register_participant(:alpha) do |wi|
47
+ @tracer << "alpha\n"
48
+ end
49
+
50
+ li = OpenWFE::LaunchItem.new Test0
51
+ fei = launch li
52
+
53
+ sleep 0.300
54
+
55
+ assert File.exist?("work/ejournal/#{fei.parent_wfid}.ejournal") \
56
+ if @engine.is_a?(OpenWFE::FilePersistedEngine)
57
+
58
+ errors = ejournal.get_error_log fei
59
+
60
+ #require 'pp'; pp ejournal
61
+ #puts "/// error journal of class #{ejournal.class.name}"
62
+
63
+ assert_equal 1, errors.length
64
+
65
+ assert ejournal.has_errors?(fei)
66
+ assert ejournal.has_errors?(fei.wfid)
67
+
68
+ # OK, let's fix the root and replay
69
+
70
+ @engine.register_participant(:nada) do |wi|
71
+ @tracer << "nada\n"
72
+ end
73
+ @engine.register_participant(:bravo) do |wi|
74
+ @tracer << "bravo\n"
75
+ end
76
+
77
+ # fix done
78
+
79
+ assert_equal "alpha", @tracer.to_s
80
+
81
+ @engine.replay_at_error errors.first
82
+
83
+ sleep 0.300
84
+
85
+ assert_equal "alpha\nnada\nbravo", @tracer.to_s
86
+
87
+ errors = ejournal.get_error_log fei
88
+
89
+ assert_equal 0, errors.length
90
+
91
+ assert ( ! ejournal.has_errors?(fei))
92
+ end
93
+
94
+ #
95
+ # TEST 1
96
+
97
+ # Testing that the changes to the workitem are taken into account
98
+
99
+ class Test1 < OpenWFE::ProcessDefinition
100
+ sequence do
101
+ participant :nada
102
+ _print "it's ${f:weather}"
103
+ end
104
+ end
105
+
106
+ def test_1
107
+
108
+ ejournal = @engine.get_error_journal
109
+
110
+ li = OpenWFE::LaunchItem.new Test1
111
+ li.weather = "sunny"
112
+
113
+ fei = launch li
114
+
115
+ sleep 0.300
116
+
117
+ errors = ejournal.get_error_log fei
118
+
119
+ #require 'pp'; pp ejournal
120
+ #puts "/// error journal of class #{ejournal.class.name}"
121
+
122
+ assert_equal 1, errors.length
123
+
124
+ assert ejournal.has_errors?(fei)
125
+ assert ejournal.has_errors?(fei.wfid)
126
+
127
+ #
128
+ # fix
129
+
130
+ @engine.register_participant :nada do
131
+ # do nothing
132
+ end
133
+
134
+ #
135
+ # replay
136
+
137
+ error = errors.first
138
+
139
+ assert_equal "sunny", error.workitem.weather
140
+
141
+ error.workitem.weather = "rainy"
142
+
143
+ @engine.replay_at_error error
144
+
145
+ sleep 0.300
146
+
147
+ assert_trace "it's rainy"
148
+ end
149
+
150
+ end
151
+