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,290 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Jan 2 13:14:37 JST 2007
8
+ #
9
+
10
+ require 'flowtestbase'
11
+ require 'openwfe/def'
12
+ require 'openwfe/workitem'
13
+ require 'openwfe/exceptions'
14
+
15
+
16
+ class ParameterTest < 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
+ def test_param_0
29
+
30
+ definition = '''
31
+ <process-definition name="reqtest" revision="0">
32
+ <parameter field="address"/>
33
+ <print>${f:address}</print>
34
+ </process-definition>'''.strip
35
+
36
+ li = OpenWFE::LaunchItem.new(definition)
37
+
38
+ e = nil
39
+
40
+ begin
41
+ @engine.launch li
42
+ rescue Exception => e
43
+ #puts e
44
+ #puts OpenWFE::exception_to_s(e)
45
+ end
46
+
47
+ assert_equal "field 'address' is missing", e.to_s
48
+
49
+ # second round
50
+
51
+ li = OpenWFE::LaunchItem.new(definition)
52
+ li.address = "rose garden 4"
53
+
54
+ #require 'pp' ; pp li
55
+
56
+ fei = nil
57
+ e = nil
58
+
59
+ begin
60
+ fei = @engine.launch(li)
61
+ rescue Exception => e
62
+ #puts e
63
+ #puts OpenWFE::exception_to_s(e)
64
+ end
65
+
66
+ assert_nil e
67
+
68
+ sleep 0.350
69
+ # let the flow terminate on its own
70
+ end
71
+
72
+
73
+ #
74
+ # test 1
75
+
76
+ class TestParam1 < OpenWFE::ProcessDefinition
77
+
78
+ param :field => "customer"
79
+ param :field => "address"
80
+
81
+ _print "#{f:customer}, #{f:address}"
82
+ end
83
+
84
+ def test_param_1
85
+
86
+ li = OpenWFE::LaunchItem.new(TestParam1)
87
+
88
+ e = nil
89
+
90
+ begin
91
+ @engine.launch(li)
92
+ rescue Exception => e
93
+ #puts e
94
+ #puts OpenWFE::exception_to_s(e)
95
+ end
96
+
97
+ assert_equal "field 'customer' is missing", e.to_s
98
+
99
+ li = OpenWFE::LaunchItem.new(TestParam1)
100
+ li.customer = "bauhaus"
101
+ li.address = "rose garden 4"
102
+
103
+ e = nil
104
+
105
+ begin
106
+ @engine.launch(li)
107
+ rescue Exception => e
108
+ #puts e
109
+ #puts OpenWFE::exception_to_s(e)
110
+ end
111
+
112
+ assert_nil e
113
+ end
114
+
115
+
116
+ #
117
+ # test 2
118
+
119
+ class TestParam2 < OpenWFE::ProcessDefinition
120
+
121
+ param :field => "address", :default => "(unknown address)"
122
+
123
+ sequence do
124
+ #pp_workitem
125
+ _print "${f:address}"
126
+ end
127
+ end
128
+
129
+ def test_param_2
130
+
131
+ li = OpenWFE::LaunchItem.new(TestParam2)
132
+
133
+ e = nil
134
+
135
+ begin
136
+ @engine.launch(li)
137
+ rescue Exception => e
138
+ #puts e
139
+ #puts OpenWFE::exception_to_s(e)
140
+ end
141
+
142
+ sleep 0.350
143
+
144
+ assert_nil e
145
+ assert_equal "(unknown address)", @tracer.to_s
146
+ end
147
+
148
+
149
+ #
150
+ # test 3
151
+
152
+ class TestParam3 < OpenWFE::ProcessDefinition
153
+
154
+ param :field => :address, :type => :string
155
+
156
+ sequence do
157
+ #pp_workitem
158
+ _print "${f:address}"
159
+ end
160
+ end
161
+
162
+ def test_param_3
163
+
164
+ li = OpenWFE::LaunchItem.new(TestParam3)
165
+ li.address = 3
166
+
167
+ e = nil
168
+
169
+ begin
170
+ @engine.launch(li)
171
+ rescue Exception => e
172
+ #puts e
173
+ #puts OpenWFE::exception_to_s(e)
174
+ end
175
+
176
+ sleep 0.350
177
+
178
+ # well, I should maybe refactor the test into a method
179
+
180
+ assert_nil e
181
+ assert_equal "3", @tracer.to_s
182
+ end
183
+
184
+
185
+ #
186
+ # test 4
187
+
188
+ class TestParam4 < OpenWFE::ProcessDefinition
189
+
190
+ param :field => :zip, :type => :integer
191
+
192
+ _print "${f:zip}"
193
+ end
194
+
195
+ def test_param_4
196
+
197
+ li = OpenWFE::LaunchItem.new(TestParam4)
198
+ li.zip = "Colorado"
199
+
200
+ e = nil
201
+
202
+ begin
203
+ @engine.launch(li)
204
+ rescue Exception => e
205
+ #puts e
206
+ #puts OpenWFE::exception_to_s(e)
207
+ end
208
+
209
+ assert_not_nil e
210
+ assert_equal 'invalid value for Integer: "Colorado"', e.to_s
211
+ end
212
+
213
+
214
+ #
215
+ # test 5
216
+
217
+ def test_param_5
218
+
219
+ definition = '''
220
+ <process-definition name="paramtest" revision="5">
221
+ <parameter field="phone" match="^[0-9]{3}-[0-9]{3}-[0-9]{4}$" />
222
+ <print>${field:phone}</print>
223
+ </process-definition>'''.strip
224
+
225
+ li = OpenWFE::LaunchItem.new(definition)
226
+
227
+ e = nil
228
+
229
+ begin
230
+ @engine.launch(li)
231
+ rescue Exception => e
232
+ #puts e
233
+ #puts OpenWFE::exception_to_s(e)
234
+ end
235
+
236
+ assert_equal "field 'phone' is missing", e.to_s
237
+ assert_equal OpenWFE::ParameterException, e.class
238
+
239
+ # second round
240
+
241
+ li = OpenWFE::LaunchItem.new(definition)
242
+ li.phone = "4444-333-4444"
243
+
244
+ #require 'pp' ; pp li
245
+
246
+ e = nil
247
+
248
+ begin
249
+ @engine.launch(li)
250
+ rescue Exception => e
251
+ #puts e
252
+ #puts OpenWFE::exception_to_s(e)
253
+ end
254
+
255
+ assert_not_nil e
256
+ assert_equal "value of field 'phone' doesn't match", e.to_s
257
+ end
258
+
259
+
260
+ #
261
+ # test 6
262
+
263
+ class TestParam6 < OpenWFE::ProcessDefinition
264
+
265
+ param :field => "customer_type", :default => "2", :type => "int"
266
+
267
+ _print "#{f:customer}, #{f:address}"
268
+ end
269
+
270
+ def test_param_1
271
+
272
+ li = OpenWFE::LaunchItem.new(TestParam6)
273
+
274
+ e = nil
275
+ begin
276
+ @engine.pre_launch_check(li)
277
+ rescue Exception => e
278
+ #puts e
279
+ #puts OpenWFE::exception_to_s(e)
280
+ end
281
+
282
+ #require 'pp'; pp li
283
+
284
+ assert_nil e
285
+ assert li.customer_type
286
+ assert li.customer_type == 2
287
+ end
288
+
289
+ end
290
+
@@ -0,0 +1,101 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Sun Oct 29 16:18:25 JST 2006
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'test/unit'
13
+
14
+ require 'openwfe/engine/engine'
15
+ require 'openwfe/participants/participants'
16
+
17
+ #
18
+ # testing misc things
19
+ #
20
+
21
+ class ParticipantTest < Test::Unit::TestCase
22
+
23
+ def setup
24
+ @engine = OpenWFE::Engine.new
25
+ end
26
+
27
+ def teardown
28
+ @engine.stop
29
+ end
30
+
31
+ def test_lookup_participant
32
+
33
+ @engine.register_participant :toto, OpenWFE::NullParticipant
34
+
35
+ p = @engine.get_participant "toto"
36
+ assert_kind_of OpenWFE::NullParticipant, p
37
+
38
+ p = @engine.get_participant :toto
39
+ assert_kind_of OpenWFE::NullParticipant, p
40
+
41
+ assert_equal 1, @engine.get_participant_map.size
42
+ end
43
+
44
+ def test_unregister_participant
45
+
46
+ assert ( ! @engine.unregister_participant(:nada))
47
+
48
+ @engine.register_participant :toto, OpenWFE::NullParticipant
49
+
50
+ assert_equal 1, @engine.get_participant_map.size
51
+
52
+ assert @engine.unregister_participant(:toto)
53
+
54
+ assert_equal 0, @engine.get_participant_map.size
55
+
56
+ @engine.register_participant "user_.*", OpenWFE::NullParticipant
57
+
58
+ assert_equal 1, @engine.get_participant_map.size
59
+
60
+ assert @engine.unregister_participant("user_.*")
61
+
62
+ assert_equal 0, @engine.get_participant_map.size
63
+ end
64
+
65
+ def test_order
66
+
67
+ s = ""
68
+
69
+ @engine.register_participant "a.*", :astar
70
+ @engine.register_participant "alpha", :alpha
71
+
72
+ assert_equal :astar, @engine.get_participant("alpha")
73
+
74
+ clean_participants
75
+
76
+ @engine.register_participant "alpha", :alpha
77
+ @engine.register_participant "a.*", :astar
78
+
79
+ assert_equal :alpha, @engine.get_participant("alpha")
80
+
81
+ clean_participants
82
+
83
+ @engine.register_participant "a.*", :astar
84
+
85
+ assert_equal :astar, @engine.get_participant("alpha")
86
+
87
+ @engine.register_participant "alpha", { :participant => :alpha, :position => :first }
88
+
89
+ assert_equal :alpha, @engine.get_participant("alpha")
90
+ assert_equal :astar, @engine.get_participant("abricot")
91
+ end
92
+
93
+ protected
94
+
95
+ def clean_participants
96
+
97
+ @engine.get_participant_map.instance_variable_set(
98
+ :@participants, [])
99
+ end
100
+
101
+ end
data/test/pending.rb ADDED
@@ -0,0 +1,23 @@
1
+
2
+ #
3
+ # a method for checking the number of pending jobs left in the engine
4
+ #
5
+
6
+ module PendingJobsMixin
7
+
8
+ def assert_no_jobs_left
9
+
10
+ #cname = @engine.class.name
11
+ #min_jobs = if cname == 'OpenWFE::CachedFilePersistedEngine'
12
+ # 1
13
+ #elsif cname == 'OpenWFE::Extras::CachedDbPersistedEngine'
14
+ # 1
15
+ #else
16
+ # 0
17
+ #end
18
+ #assert_equal min_jobs, @engine.get_scheduler.pending_job_count
19
+
20
+ assert_equal 0, @engine.get_scheduler.at_job_count
21
+ end
22
+ end
23
+
@@ -0,0 +1,133 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Apr 8 18:33:11 JST 2008
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'test/unit'
13
+
14
+ require 'openwfe/engine'
15
+
16
+
17
+ class PsRepresentationTest < Test::Unit::TestCase
18
+
19
+ def setup
20
+
21
+ @engine = OpenWFE::Engine.new :definition_in_launchitem_allowed => true
22
+ end
23
+
24
+ def teardown
25
+
26
+ @engine.stop if @engine
27
+ end
28
+
29
+ #
30
+ # TEST 0
31
+
32
+ class Test0 < OpenWFE::ProcessDefinition
33
+ sequence do
34
+ alpha
35
+ bravo
36
+ end
37
+ end
38
+
39
+ def test_0
40
+
41
+ @engine.register_participant "alpha", OpenWFE::NullParticipant
42
+
43
+ fei = @engine.launch Test0
44
+
45
+ sleep 0.350
46
+
47
+ ps = @engine.process_stack fei, true
48
+
49
+ #p ps.representation
50
+
51
+ assert_equal(
52
+ ["process-definition", {"name"=>"Test", "revision"=>"0"}, [["sequence", {}, [["alpha", {"ref"=>"alpha"}, []], ["bravo", {}, []]]]]],
53
+ ps.representation)
54
+
55
+ #
56
+ # change process instance (charly instead of bravo)
57
+
58
+ #puts ps.collect { |fexp| fexp.fei.to_s }.join("\n")
59
+
60
+ bravo_fei = ps.find { |fexp| fexp.fei.expid == "0.0.1" }.fei
61
+
62
+ @engine.update_raw_expression bravo_fei, ["charly", {}, []]
63
+
64
+ ps = @engine.process_stack fei, true
65
+
66
+ assert_equal(
67
+ ["process-definition", {"name"=>"Test", "revision"=>"0"}, [["sequence", {}, [["alpha", {"ref"=>"alpha"}, []], ["charly", {}, []]]]]],
68
+ ps.representation)
69
+ end
70
+
71
+ #
72
+ # TEST 1
73
+
74
+ class Test1 < OpenWFE::ProcessDefinition
75
+
76
+ description "interference of the description"
77
+
78
+ sequence do
79
+ alpha
80
+ bravo
81
+ end
82
+ end
83
+
84
+ def test_1
85
+
86
+ @engine.register_participant "alpha", OpenWFE::NullParticipant
87
+
88
+ fei = @engine.launch Test1
89
+
90
+ sleep 0.350
91
+
92
+ ps = @engine.process_stack fei, true
93
+
94
+ assert_equal(
95
+ ["process-definition", {"name"=>"Test", "revision"=>"1"}, [["description", {}, ["interference of the description"]], ["sequence", {}, [["alpha", {"ref"=>"alpha"}, []], ["bravo", {}, []]]]]],
96
+ ps.representation)
97
+
98
+ #
99
+ # change process instance (charly instead of bravo)
100
+
101
+ bravo_fei = ps.find { |fexp| fexp.fei.expid == "0.1.1" }.fei
102
+
103
+ @engine.update_raw_expression bravo_fei, ["charly", {}, []]
104
+
105
+ ps = @engine.process_stack fei, true
106
+
107
+ assert_equal(
108
+ ["process-definition", {"name"=>"Test", "revision"=>"1"}, [["description", {}, ["interference of the description"]], ["sequence", {}, [["alpha", {"ref"=>"alpha"}, []], ["charly", {}, []]]]]],
109
+ ps.representation)
110
+
111
+ #
112
+ # nuke participant charly
113
+
114
+ @engine.cancel_expression bravo_fei
115
+
116
+ sleep 0.350
117
+
118
+ ps = @engine.process_stack fei, true
119
+
120
+ #p ps.representation
121
+
122
+ assert_equal(
123
+ ["process-definition", {"name"=>"Test", "revision"=>"1"}, [["description", {}, ["interference of the description"]], ["sequence", {}, [["alpha", {"ref"=>"alpha"}, []]]]]],
124
+ ps.representation)
125
+
126
+ assert_equal(
127
+ ["process-definition", {"name"=>"Test", "revision"=>"1"}, [["description", {}, ["interference of the description"]], ["sequence", {}, [["alpha", {"ref"=>"alpha"}, []]]]]],
128
+ @engine.process_representation(fei.wfid))
129
+ end
130
+
131
+ # see also test/ft_84_updateexp.rb
132
+
133
+ end