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,136 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Sun Oct 29 15:41:44 JST 2006
7
+ #
8
+
9
+ require 'rubygems'
10
+
11
+ require 'test/unit'
12
+
13
+ require 'fileutils'
14
+
15
+ require 'openwfe/workitem'
16
+ require 'openwfe/engine/file_persisted_engine'
17
+ require 'openwfe/def'
18
+
19
+ require 'rutest_utils'
20
+
21
+
22
+ class RestartCronTest < Test::Unit::TestCase
23
+
24
+ #def setup
25
+ # @engine = $WORKFLOW_ENGINE_CLASS.new()
26
+ #end
27
+
28
+ def teardown
29
+ FileUtils.rm_rf 'work'
30
+ end
31
+
32
+ # test 0
33
+
34
+ class RestartDefinition0 < OpenWFE::ProcessDefinition
35
+ cron :tab => "* * * * *", :name => "//mycron" do
36
+ cron_event_restart
37
+ end
38
+ end
39
+
40
+ def test_0
41
+
42
+ dotest RestartDefinition0
43
+
44
+ assert_equal(
45
+ 4, @engine.get_expression_storage.size,
46
+ "\n\n" + @engine.get_expression_storage.to_s)
47
+ end
48
+
49
+ # test 1
50
+
51
+ class RestartDefinition1 < OpenWFE::ProcessDefinition
52
+ concurrence do
53
+ cron :tab => "* * * * *", :name => "mycron" do
54
+ cron_event_restart
55
+ end
56
+ participant :ref => "nada"
57
+ end
58
+ end
59
+
60
+ def test_1
61
+
62
+ dotest RestartDefinition1
63
+
64
+ assert_equal(
65
+ 6, @engine.get_expression_storage.size,
66
+ "\n\n" + @engine.get_expression_storage.to_s)
67
+ end
68
+
69
+ protected
70
+
71
+ def dotest (definition)
72
+
73
+ @engine = new_engine
74
+
75
+ feis = []
76
+
77
+ participant = lambda do |wi|
78
+ feis << wi.fei.dup
79
+ end
80
+ @engine.register_participant :cron_event_restart, &participant
81
+ @engine.register_participant :nada, OpenWFE::NullParticipant
82
+
83
+ fei = @engine.launch definition
84
+
85
+ sleep 60
86
+
87
+ @engine.stop
88
+
89
+ assert_equal 1, @engine.get_scheduler.cron_job_count
90
+ assert_equal 1, feis.size
91
+
92
+ assert_equal(
93
+ ".0",
94
+ feis[0].expid[-2, 2],
95
+ "not ending with .0 : >#{feis[0].expid}<")
96
+ assert_equal(
97
+ fei.wfid,
98
+ feis[0].wfid)
99
+
100
+ #puts "___restarting to new engine"
101
+
102
+ #old_engine = @engine
103
+ new_engine
104
+
105
+ @engine.register_participant :cron_event_restart, &participant
106
+ @engine.register_participant :nada, OpenWFE::NullParticipant
107
+
108
+ @engine.reload
109
+ #
110
+ # very important
111
+
112
+ sleep 60
113
+
114
+ assert_equal(
115
+ 1, @engine.get_scheduler.cron_job_count, "wrong cron job count")
116
+
117
+ @engine.stop
118
+
119
+ assert_equal 2, feis.size
120
+ assert_equal feis[0].wfid, feis[1].wfid
121
+
122
+ assert feis[0].expid[-1, 1].to_i < feis[1].expid[-1, 1].to_i
123
+ end
124
+
125
+ def new_engine
126
+
127
+ @engine = OpenWFE::FilePersistedEngine.new(
128
+ :definition_in_launchitem_allowed => true)
129
+
130
+ #engine = OpenWFE::CachedFilePersistedEngine.new
131
+
132
+ #$OWFE_LOG.level = Logger::DEBUG
133
+ end
134
+
135
+ end
136
+
@@ -0,0 +1,98 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Thu Feb 7 15:26:57 JST 2008
7
+ #
8
+
9
+ require 'test/unit'
10
+
11
+ require 'openwfe/workitem'
12
+ require 'openwfe/engine/file_persisted_engine'
13
+ require 'openwfe/def'
14
+
15
+ require 'rutest_utils'
16
+
17
+
18
+ class RestartPauseTest < Test::Unit::TestCase
19
+
20
+ #def setup
21
+ #end
22
+
23
+ #def teardown
24
+ #end
25
+
26
+ #
27
+ # sleep tests
28
+
29
+ class SleepDef < OpenWFE::ProcessDefinition
30
+ _sleep :for => "1M"
31
+ end
32
+
33
+ def test_restart_0
34
+ dotest OpenWFE::FilePersistedEngine, SleepDef
35
+ end
36
+ def test_restart_1
37
+ dotest OpenWFE::CachedFilePersistedEngine, SleepDef
38
+ end
39
+
40
+ protected
41
+
42
+ def dotest (engine_class, def_class)
43
+
44
+ #require 'fileutils'
45
+ #FileUtils.remove_dir "work" if File.exist? "work"
46
+
47
+ engine = new_engine engine_class
48
+
49
+ #$OWFE_LOG.level = Logger::DEBUG
50
+
51
+ li = OpenWFE::LaunchItem.new def_class
52
+
53
+ fei = engine.launch li
54
+
55
+ sleep 0.350
56
+
57
+ engine.pause_process fei.wfid
58
+
59
+ sleep 0.350
60
+
61
+ engine.stop
62
+
63
+ $OWFE_LOG.warn "stopped the engine"
64
+
65
+ old_engine = engine
66
+ engine = new_engine engine_class
67
+
68
+ #$OWFE_LOG.level = Logger::DEBUG
69
+
70
+ $OWFE_LOG.warn "started the new engine"
71
+
72
+ sleep 0.350
73
+
74
+ assert_equal(
75
+ true, engine.get_expression_pool.paused_instances[fei.wfid])
76
+
77
+ engine.stop
78
+
79
+ sleep 0.350
80
+ end
81
+
82
+ def new_engine (engine_class)
83
+
84
+ engine = engine_class.new :definition_in_launchitem_allowed => true
85
+
86
+ tracer = Tracer.new
87
+ engine.application_context["__tracer"] = tracer
88
+
89
+ #engine.register_participant :nemo, NullParticipant
90
+
91
+ #engine.reschedule
92
+ engine.reload
93
+
94
+ engine
95
+ end
96
+
97
+ end
98
+
@@ -0,0 +1,140 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Sun Oct 29 15:41:44 JST 2006
7
+ #
8
+ # somewhere between Philippina and the Japan
9
+ #
10
+
11
+ require 'test/unit'
12
+
13
+ require 'openwfe/workitem'
14
+ require 'openwfe/engine/file_persisted_engine'
15
+ require 'openwfe/def'
16
+
17
+ require 'rutest_utils'
18
+
19
+
20
+ class RestartSleepTest < Test::Unit::TestCase
21
+
22
+ #def setup
23
+ # @engine = $WORKFLOW_ENGINE_CLASS.new()
24
+ #end
25
+
26
+ #def teardown
27
+ #end
28
+
29
+ #
30
+ # sleep tests
31
+
32
+ class SleepDef < OpenWFE::ProcessDefinition
33
+ def make
34
+ process_definition :name => "rs0", :revision => "0" do
35
+ sequence do
36
+ _sleep :for => "10s"
37
+ _print "after"
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ def test_0
44
+ dotest OpenWFE::FilePersistedEngine, SleepDef
45
+ end
46
+ def test_1
47
+ dotest OpenWFE::CachedFilePersistedEngine, SleepDef
48
+ end
49
+
50
+ #
51
+ # participant timeout tests
52
+
53
+ class TimeoutDef < OpenWFE::ProcessDefinition
54
+ sequence do
55
+ nemo :timeout => "10s"
56
+ _print "after"
57
+ end
58
+ end
59
+
60
+ def test_timeout_0
61
+ dotest OpenWFE::FilePersistedEngine, TimeoutDef
62
+ end
63
+ def test_timeout_1
64
+ dotest OpenWFE::CachedFilePersistedEngine, TimeoutDef
65
+ end
66
+
67
+ TDEF = '''
68
+ <process-definition name="timeouttest" revision="1">
69
+ <sequence>
70
+ <participant ref="nemo" timeout="10s" />
71
+ <print>after</print>
72
+ </sequence>
73
+ </process-definition>
74
+ '''.strip
75
+
76
+ def test_timeout_0b
77
+ dotest OpenWFE::FilePersistedEngine, TDEF
78
+ end
79
+
80
+ protected
81
+
82
+ def dotest (engine_class, def_class)
83
+
84
+ #require 'fileutils'
85
+ #FileUtils.remove_dir "work" if File.exist? "work"
86
+
87
+ engine = new_engine engine_class
88
+
89
+ #$OWFE_LOG.level = Logger::DEBUG
90
+
91
+ li = OpenWFE::LaunchItem.new def_class
92
+
93
+ engine.launch li
94
+
95
+ sleep 1
96
+
97
+ engine.stop
98
+
99
+ $OWFE_LOG.warn "stopped the engine"
100
+
101
+ old_engine = engine
102
+ engine = new_engine engine_class
103
+
104
+ #$OWFE_LOG.level = Logger::DEBUG
105
+
106
+ $OWFE_LOG.warn "started the new engine"
107
+
108
+ sleep 11
109
+ #sleep 21
110
+
111
+ s_old = old_engine.application_context["__tracer"].to_s
112
+ s_now = engine.application_context["__tracer"].to_s
113
+
114
+ #puts "__ s_old >>>#{s_old}<<<"
115
+ #puts "__ s_now >>>#{s_now}<<<"
116
+
117
+ $OWFE_LOG.level = Logger::INFO
118
+
119
+ assert \
120
+ (s_old == "" and s_now == "after"),
121
+ "old : '#{s_old}' / new : '#{s_now}' BAD for #{engine_class}"
122
+ end
123
+
124
+ def new_engine (engine_class)
125
+
126
+ engine = engine_class.new :definition_in_launchitem_allowed => true
127
+
128
+ tracer = Tracer.new
129
+ engine.application_context["__tracer"] = tracer
130
+
131
+ engine.register_participant :nemo, OpenWFE::NullParticipant
132
+
133
+ #engine.reschedule
134
+ engine.reload
135
+
136
+ engine
137
+ end
138
+
139
+ end
140
+
@@ -0,0 +1,18 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Wed Mar 14 15:40:33 JST 2007
7
+ # a clear view on the Fuji this morning
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ # just the restart tests
13
+
14
+ require 'restart_sleep_test'
15
+ require 'restart_cron_test'
16
+ require 'restart_when_test'
17
+ require 'restart_paused_test'
18
+
@@ -0,0 +1,112 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Sun Oct 29 15:41:44 JST 2006
7
+ #
8
+ # somewhere between Philippina and the Japan
9
+ #
10
+
11
+ require 'test/unit'
12
+
13
+ require 'openwfe/workitem'
14
+ require 'openwfe/engine/file_persisted_engine'
15
+ require 'openwfe/def'
16
+
17
+ require 'rutest_utils'
18
+
19
+
20
+ class RestartWhenTest < Test::Unit::TestCase
21
+
22
+ #def setup
23
+ # @engine = $WORKFLOW_ENGINE_CLASS.new()
24
+ #end
25
+
26
+ #def teardown
27
+ #end
28
+
29
+ class RestartWhenDefinition0 < OpenWFE::ProcessDefinition
30
+ concurrence do
31
+ _when :test => "${v:done} == true", :frequency => "1s" do
32
+ #_when :test => "${v:done} == true" do
33
+ _print "when triggered"
34
+ end
35
+ sequence do
36
+ _sleep "2s"
37
+ _set :variable => "done", :value => "true"
38
+ _print "done"
39
+ end
40
+ end
41
+ end
42
+
43
+ def test_0
44
+ dotest OpenWFE::FilePersistedEngine
45
+ end
46
+ def test_1
47
+ dotest OpenWFE::CachedFilePersistedEngine
48
+ end
49
+
50
+ protected
51
+
52
+ def dotest (engine_class)
53
+
54
+ engine = new_engine engine_class
55
+
56
+ li = OpenWFE::LaunchItem.new RestartWhenDefinition0
57
+
58
+ engine.launch li
59
+
60
+ sleep 1
61
+
62
+ engine.stop
63
+
64
+ $OWFE_LOG.warn " === stopped the engine"
65
+ #display_pool :one
66
+
67
+ old_engine = engine
68
+ engine = new_engine engine_class
69
+
70
+ $OWFE_LOG.warn " === started the new engine"
71
+ #display_pool :two
72
+
73
+ sleep 3
74
+ #display_pool :three
75
+
76
+ s_old = old_engine.application_context["__tracer"].to_s
77
+ s_now = engine.application_context["__tracer"].to_s
78
+
79
+ #uts "__ s_old >>>#{s_old}<<<"
80
+ #uts "__ s_now >>>#{s_now}<<<"
81
+
82
+ assert \
83
+ (s_old == "" and s_now == "done\nwhen triggered"),
84
+ "old : '#{s_old}' / new : '#{s_now}' BAD for #{engine_class}"
85
+
86
+ engine.stop
87
+ end
88
+
89
+ #def display_pool (msg)
90
+ # puts
91
+ # puts ".... #{msg}"
92
+ # puts `ls -R work`
93
+ # puts
94
+ #end
95
+
96
+ def new_engine (engine_class)
97
+
98
+ engine = engine_class.new :definition_in_launchitem_allowed => true
99
+
100
+ #$OWFE_LOG.level = Logger::DEBUG
101
+
102
+ tracer = Tracer.new
103
+ engine.application_context["__tracer"] = tracer
104
+
105
+ #engine.reschedule
106
+ engine.reload
107
+
108
+ engine
109
+ end
110
+
111
+ end
112
+