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
data/test/ft_59_ps.rb ADDED
@@ -0,0 +1,150 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Sat Jul 7 22:44:00 JST 2007 (tanabata)
8
+ #
9
+
10
+ require 'openwfe/def'
11
+ require 'openwfe/participants/storeparticipants'
12
+
13
+ require 'flowtestbase'
14
+
15
+
16
+ class FlowTest59 < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ #end
24
+
25
+ #
26
+ # TEST 0
27
+
28
+ class Def59 < ProcessDefinition
29
+ concurrence do
30
+ store_a
31
+ store_b
32
+ end
33
+ end
34
+
35
+ def test_0
36
+
37
+ sa = @engine.register_participant("store_a", OpenWFE::HashParticipant)
38
+ sb = @engine.register_participant("store_b", OpenWFE::HashParticipant)
39
+
40
+ fei = launch Def59
41
+
42
+ sleep 0.350
43
+
44
+ ps = @engine.process_statuses
45
+ #puts ps
46
+
47
+ assert_equal 2, ps[fei.wfid].expressions.size
48
+ assert_equal 0, ps[fei.wfid].errors.size
49
+
50
+ @engine.cancel_process fei
51
+ end
52
+
53
+ #
54
+ # TEST 0b
55
+
56
+ class Def59b < ProcessDefinition
57
+ sequence do
58
+ alpha
59
+ bravo
60
+ end
61
+ end
62
+
63
+ def test_0b
64
+
65
+ a = @engine.register_participant :alpha, OpenWFE::HashParticipant
66
+ b = @engine.register_participant :bravo, OpenWFE::HashParticipant
67
+
68
+ fei = launch Def59b
69
+
70
+ sleep 0.350
71
+
72
+ ps = @engine.process_statuses
73
+ #puts ps
74
+
75
+ assert_equal 1, ps[fei.wfid].expressions.size
76
+ assert_equal 0, ps[fei.wfid].errors.size
77
+
78
+ @engine.cancel_process fei
79
+ end
80
+
81
+ #
82
+ # TEST 1
83
+
84
+ class Def59_1 < ProcessDefinition
85
+ sequence do
86
+ nada59_1
87
+ alpha
88
+ end
89
+ end
90
+
91
+ def test_1
92
+
93
+ alpha = @engine.register_participant :alpha do
94
+ # nothing
95
+ end
96
+
97
+ fei = launch Def59_1
98
+
99
+ sleep 0.350
100
+
101
+ ps = @engine.process_statuses
102
+ #puts ps
103
+ #puts ps[fei.wfid].errors
104
+
105
+ assert_equal 1, ps[fei.wfid].expressions.size
106
+ assert_equal 1, ps[fei.wfid].branches
107
+ assert_equal 1, ps[fei.wfid].errors.size
108
+
109
+ #puts
110
+ #puts ps.to_s
111
+
112
+ @engine.cancel_process fei.wfid
113
+ end
114
+
115
+ #
116
+ # TEST 2
117
+
118
+ class Def59c < ProcessDefinition
119
+ sequence do
120
+ bravo
121
+ alpha
122
+ end
123
+ end
124
+
125
+ def test_2
126
+
127
+ a = @engine.register_participant :alpha, OpenWFE::HashParticipant
128
+ b = @engine.register_participant :bravo, OpenWFE::HashParticipant
129
+
130
+ feis = []
131
+ feis << launch(Def59b)
132
+ feis << launch(Def59b)
133
+ feis << launch(Def59c)
134
+
135
+ sleep 0.350
136
+
137
+ assert_equal 3, @engine.list_processes(:wfname => "Def").size
138
+ assert_equal 2, @engine.list_processes(:wfrevision => "59b").size
139
+ assert_equal 1, @engine.list_processes(:wfrevision => "59c").size
140
+ assert_equal 2, @engine.list_processes(:wfname => "Def", :wfrevision => "59b").size
141
+
142
+ feis.each do |fei|
143
+ @engine.cancel_process fei
144
+ end
145
+
146
+ sleep 0.350
147
+ end
148
+
149
+ end
150
+
@@ -0,0 +1,58 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 29 12:46:32 JST 2007
8
+ #
9
+
10
+ require 'openwfe/def'
11
+
12
+ require 'flowtestbase'
13
+
14
+
15
+ class FlowTest59b < Test::Unit::TestCase
16
+ include FlowTestBase
17
+
18
+ #def setup
19
+ #end
20
+
21
+ #def teardown
22
+ #end
23
+
24
+ #
25
+ # TEST 0
26
+
27
+ class Test0 < ProcessDefinition
28
+ #_sleep :for => "10s"
29
+ cron :tab => "* * * * *", :name => "//mario" do
30
+ _print "nada"
31
+ end
32
+ end
33
+
34
+ def test_0
35
+
36
+ fei = launch Test0
37
+
38
+ sleep 0.250
39
+
40
+ #puts @engine.list_process_status fei
41
+ #puts
42
+ #puts @engine.get_process_stack fei
43
+ #puts @engine.get_process_stack(fei)[0].class.name
44
+
45
+ #puts
46
+ #puts @engine.process_status(fei).expressions[0].instance_variables
47
+ #puts
48
+ #puts @engine.process_status(fei).expressions[0].awakening_time
49
+ #puts
50
+ #puts @engine.process_status(fei).expressions[0].scheduler_job_id
51
+
52
+ puts @engine.get_scheduler.inspect
53
+
54
+ @engine.cancel_process fei
55
+ end
56
+
57
+ end
58
+
data/test/ft_5_time.rb ADDED
@@ -0,0 +1,118 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+
13
+ class FlowTest5 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ def test_sleep_0
23
+ dotest(
24
+ '''<process-definition name="sleep_0" revision="0">
25
+ <sequence>
26
+ <sleep for="2s" />
27
+ <print>alpha</print>
28
+ </sequence>
29
+ </process-definition>''',
30
+ "alpha",
31
+ true)
32
+ end
33
+
34
+ def test_sleep_1
35
+ dotest(
36
+ '''<process-definition name="sleep_1" revision="0">
37
+ <concurrence>
38
+ <sequence>
39
+ <sleep for="2s" />
40
+ <print>alpha</print>
41
+ </sequence>
42
+ <print>bravo</print>
43
+ </concurrence>
44
+ </process-definition>''',
45
+ """bravo
46
+ alpha""",
47
+ true)
48
+ end
49
+
50
+ def test_sleep_2
51
+ dotest(
52
+ '''<process-definition name="sleep_2" revision="0">
53
+ <sequence>
54
+ <sleep until="${ruby:Time.new() + 4}" />
55
+ <print>alpha</print>
56
+ </sequence>
57
+ </process-definition>''',
58
+ "alpha",
59
+ true)
60
+ end
61
+
62
+ def test_sleep_3
63
+ dotest(
64
+ '''<process-definition name="sleep_3" revision="0">
65
+ <sequence>
66
+ <sleep for="900" />
67
+ <print>alpha</print>
68
+ </sequence>
69
+ </process-definition>''', "alpha", true)
70
+ end
71
+
72
+ #
73
+ # Test 4
74
+ #
75
+
76
+ class Test4 < OpenWFE::ProcessDefinition
77
+ _sleep "10s"
78
+ end
79
+
80
+ def test_sleep_4
81
+
82
+ fei = launch Test4
83
+
84
+ sleep 0.250
85
+
86
+ jobs = @engine.get_scheduler.find_jobs OpenWFE::SleepExpression.name
87
+
88
+ assert_equal 1, jobs.size
89
+
90
+ @engine.cancel_process fei
91
+
92
+ sleep 0.300
93
+ end
94
+
95
+ #
96
+ # Test 5
97
+ #
98
+
99
+ class Test5 < OpenWFE::ProcessDefinition
100
+ _sleep "10s", :scheduler_tags => "a, b"
101
+ end
102
+
103
+ def test_sleep_5
104
+
105
+ fei = launch Test5
106
+
107
+ sleep 0.250
108
+
109
+ assert_equal 1, @engine.get_scheduler.find_jobs("a").size
110
+ assert_equal 1, @engine.get_scheduler.find_jobs("b").size
111
+
112
+ @engine.cancel_process fei
113
+
114
+ sleep 0.300
115
+ end
116
+
117
+ end
118
+
@@ -0,0 +1,161 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Jul 9 10:25:18 JST 2007
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+ require 'flowtestbase'
14
+
15
+
16
+ class FlowTest60 < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ # $OWFE_LOG.level = Logger::INFO # done in FlowTestBase !
24
+ #end
25
+
26
+ #
27
+ # TEST 0
28
+
29
+ class TestDefinition0 < OpenWFE::ProcessDefinition
30
+ sequence do
31
+ _print "a"
32
+ sequence do
33
+ _print "b.0"
34
+ _sleep "1s"
35
+ _print "b.1"
36
+ end
37
+ _print "c"
38
+ end
39
+ end
40
+
41
+ def test_0
42
+
43
+ #$OWFE_LOG.level = Logger::DEBUG
44
+
45
+ fei = launch TestDefinition0
46
+
47
+ sleep 0.350
48
+
49
+ #puts
50
+ #puts @engine.get_process_stack fei.wfid
51
+ #puts
52
+
53
+ fei.expression_id = "0.0.1"
54
+ fei.expression_name = "sequence"
55
+ @engine.cancel_expression fei
56
+
57
+ sleep 0.350
58
+
59
+ assert_equal "a\nb.0\nc", @tracer.to_s
60
+
61
+ assert_equal 0, @engine.process_stack(fei.wfid).size
62
+ assert_equal 1, @engine.get_expression_storage.size
63
+ end
64
+
65
+ def test_1
66
+
67
+ #$OWFE_LOG.level = Logger::DEBUG
68
+
69
+ fei = launch TestDefinition0
70
+
71
+ sleep 0.350
72
+
73
+ fei.expression_id = "0.0.1.2"
74
+ fei.expression_name = "print"
75
+ @engine.cancel_expression fei
76
+
77
+ #@engine.wait_for(fei.wfid)
78
+ wait_for fei
79
+
80
+ assert_equal "a\nb.0\nc", @tracer.to_s
81
+
82
+ assert_equal 0, @engine.process_stack(fei.wfid).size
83
+ assert_equal 1, @engine.get_expression_storage.size
84
+ end
85
+
86
+ def test_2
87
+
88
+ #$OWFE_LOG.level = Logger::DEBUG
89
+
90
+ fei = launch TestDefinition0
91
+
92
+ sleep 0.350
93
+
94
+ fei.expression_id = "0"
95
+ fei.expression_name = "process-definition"
96
+ @engine.cancel_expression fei
97
+
98
+ sleep 0.350
99
+ #puts @engine.get_error_journal.get_error_log(fei.wfid).to_s
100
+
101
+ assert_equal "a\nb.0", @tracer.to_s
102
+
103
+ assert_equal 0, @engine.process_stack(fei.wfid).size
104
+ assert_equal 1, @engine.get_expression_storage.size
105
+ end
106
+
107
+ def test_2b
108
+
109
+ #$OWFE_LOG.level = Logger::DEBUG
110
+
111
+ fei = launch <<-EOS
112
+ class Test2b < OpenWFE::ProcessDefinition
113
+ nada
114
+ end
115
+ EOS
116
+
117
+ # will result in an error
118
+ # testing against bug
119
+ # http://rubyforge.org/tracker/index.php?func=detail&aid=19607&group_id=2609&atid=10023
120
+
121
+ sleep 0.350
122
+
123
+ fei.expression_id = "0"
124
+ fei.expression_name = "process-definition"
125
+ @engine.cancel_expression fei
126
+
127
+ sleep 0.350
128
+ #puts @engine.get_error_journal.get_error_log(fei.wfid).to_s
129
+
130
+ assert_equal "", @tracer.to_s
131
+
132
+ assert_equal 0, @engine.process_stack(fei.wfid).size
133
+ assert_equal 1, @engine.get_expression_storage.size
134
+ end
135
+
136
+ def test_3
137
+
138
+ #$OWFE_LOG.level = Logger::DEBUG
139
+
140
+ fei = launch TestDefinition0
141
+
142
+ sleep 0.350
143
+
144
+ fei.expression_id = "0.0"
145
+ fei.expression_name = "sequence"
146
+ @engine.cancel_expression fei
147
+
148
+ #@engine.wait_for(fei.wfid)
149
+ wait_for fei
150
+
151
+ #sleep 0.350
152
+ #puts @engine.get_error_journal.get_error_log(fei.wfid).to_s
153
+
154
+ assert_equal "a\nb.0", @tracer.to_s
155
+
156
+ assert_equal 0, @engine.process_stack(fei.wfid).size
157
+ assert_equal 1, @engine.get_expression_storage.size
158
+ end
159
+
160
+ end
161
+