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,90 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'test/unit'
9
+ require 'openwfe/utils'
10
+
11
+
12
+ class LookupAttTest < Test::Unit::TestCase
13
+
14
+ #def setup
15
+ #end
16
+
17
+ #def teardown
18
+ #end
19
+
20
+ def test_0
21
+
22
+ l0 = [
23
+ {"name"=>"companyA","DunsNr" => "JGE4753"},
24
+ {"name"=>"companyB","DunsNr" => "ZUTE8555"},
25
+ {"name"=>"companyC","DunsNr" => "GTI6775"},
26
+ {"name"=>"companyD","DunsNr" => "XUE6755"}
27
+ ]
28
+ h0 = { "supplierList" => l0 }
29
+
30
+ do_lookup_test(
31
+ h0, "supplierList", l0)
32
+ do_lookup_test(
33
+ h0, "supplierList.1", {"name"=>"companyB","DunsNr" => "ZUTE8555"})
34
+ do_lookup_test(
35
+ h0, "supplierList.1.DunsNr", "ZUTE8555")
36
+
37
+ do_has_attribute_test(
38
+ h0, "supplierList.1.DunsNr", true)
39
+ do_has_attribute_test(
40
+ h0, "supplierList.1.Whatever", false)
41
+ do_has_attribute_test(
42
+ h0, "supplierList.whatever", false)
43
+ do_has_attribute_test(
44
+ h0, "whatever", false)
45
+
46
+ h1 = { "supplierList" => l0.to_s }
47
+ do_lookup_test(
48
+ h1, "supplierList.1.DunsNr", nil)
49
+
50
+ do_has_attribute_test(
51
+ nil, "whatever", false)
52
+ do_has_attribute_test(
53
+ {}, "whatever", false)
54
+ do_has_attribute_test(
55
+ [], "whatever", false)
56
+ do_has_attribute_test(
57
+ "string", "whatever", false)
58
+
59
+ do_has_attribute_test(
60
+ [ nil, nil ], "1.name", false)
61
+ end
62
+
63
+ def test_1
64
+
65
+ h = { "0" => [ "a", "A" ], "1" => { "b" => "B"} }
66
+
67
+ do_lookup_test(h, "0", [ "a", "A" ])
68
+ do_lookup_test(h, "1.b", "B")
69
+ do_has_attribute_test(h, "0", true)
70
+ do_has_attribute_test(h, "1.b", true)
71
+ end
72
+
73
+ protected
74
+
75
+ def do_lookup_test (container, expression, expected_value)
76
+
77
+ assert_equal(
78
+ expected_value,
79
+ OpenWFE::lookup_attribute(container, expression))
80
+ end
81
+
82
+ def do_has_attribute_test (container, expression, expected_boolean)
83
+
84
+ assert_equal(
85
+ expected_boolean,
86
+ OpenWFE::has_attribute?(container, expression))
87
+ end
88
+
89
+ end
90
+
@@ -0,0 +1,94 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Mar 11 13:44:11 JST 2008
8
+ #
9
+
10
+ require 'test/unit'
11
+
12
+ require 'rubygems'
13
+ require 'openwfe/workitem'
14
+ require 'openwfe/expressions/expressionmap'
15
+
16
+
17
+ class LookupVfTest < Test::Unit::TestCase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ #end
24
+
25
+
26
+ def test_0
27
+
28
+ fexp = new_exp({
29
+ "on-value" => "toto"
30
+ })
31
+ wi = new_wi({
32
+ "toto" => "whatever"
33
+ })
34
+
35
+ assert_equal(
36
+ "toto",
37
+ fexp.lookup_vf_attribute(wi, "value", :prefix => "on"))
38
+
39
+ fexp = new_exp({ "on-variable-value" => "toto" }, { "toto" => "surf" })
40
+
41
+ assert_equal(
42
+ "surf",
43
+ fexp.lookup_vf_attribute(wi, "value", :prefix => "on"))
44
+
45
+ fexp = new_exp({ "on-field-value" => "toto" })
46
+
47
+ assert_equal(
48
+ "whatever",
49
+ fexp.lookup_vf_attribute(wi, "value", :prefix => "on"))
50
+ end
51
+
52
+ def test_1
53
+
54
+ fexp = new_exp({
55
+ "on" => "surf"
56
+ })
57
+ wi = new_wi
58
+
59
+ assert_equal(
60
+ "surf",
61
+ fexp.lookup_vf_attribute(wi, "", :prefix => "on"))
62
+
63
+ assert_equal(
64
+ "surf",
65
+ fexp.lookup_vf_attribute(wi, "", :prefix => :on))
66
+ end
67
+
68
+ protected
69
+
70
+ def new_exp (atts, vars={})
71
+
72
+ fexp = OpenWFE::ParticipantExpression.new
73
+ fexp.attributes = atts
74
+
75
+ fexp.instance_variable_set :@vars, vars
76
+
77
+ class << fexp
78
+ def lookup_variable (var_name)
79
+ @vars[var_name]
80
+ end
81
+ end
82
+
83
+ fexp
84
+ end
85
+
86
+ def new_wi (atts={})
87
+
88
+ wi = OpenWFE::InFlowWorkItem.new
89
+ wi.attributes = atts
90
+ wi
91
+ end
92
+
93
+ end
94
+
data/test/misc_test.rb ADDED
@@ -0,0 +1,90 @@
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 'test/unit'
11
+
12
+ require 'openwfe/utils'
13
+ require 'openwfe/expressions/raw'
14
+ #require 'openwfe/def'
15
+ require 'openwfe/expressions/fe_define'
16
+ require 'openwfe/expressions/expressionmap'
17
+
18
+ #
19
+ # testing misc things
20
+ #
21
+
22
+ class MiscTest < Test::Unit::TestCase
23
+
24
+ #def setup
25
+ #end
26
+
27
+ #def teardown
28
+ #end
29
+
30
+ def test_starts_with
31
+
32
+ assert OpenWFE::starts_with("//a", "//")
33
+ assert (not OpenWFE::starts_with("/a", "//"))
34
+ end
35
+
36
+ def test_ends_with
37
+
38
+ assert OpenWFE::ends_with("c'est la fin", "fin")
39
+ end
40
+
41
+ def test_ensure_for_filename
42
+
43
+ assert_equal OpenWFE::ensure_for_filename("abc"), "abc"
44
+ assert_equal OpenWFE::ensure_for_filename("a/c"), "a_c"
45
+ assert_equal OpenWFE::ensure_for_filename("a\\c"), "a_c"
46
+ assert_equal OpenWFE::ensure_for_filename("a*c"), "a_c"
47
+ assert_equal OpenWFE::ensure_for_filename("a+?"), "a__"
48
+ assert_equal OpenWFE::ensure_for_filename("a b"), "a_b"
49
+ end
50
+
51
+ def test_clean_path
52
+
53
+ assert_equal OpenWFE::clean_path("my//file/path"), "my/file/path"
54
+ assert_equal OpenWFE::clean_path("my//file//path"), "my/file/path"
55
+ end
56
+
57
+ def test_stu
58
+
59
+ assert_equal "a_b_c", OpenWFE::stu("a b c")
60
+ end
61
+
62
+ def test_grep_0
63
+
64
+ assert OpenWFE::grep("sputnik", "Rakefile").empty?
65
+ assert_equal 2, OpenWFE::grep("Mettraux", "Rakefile").size
66
+
67
+ OpenWFE::grep "Mettraux", "Rakefile" do |line|
68
+ assert_match "Mettraux", line
69
+ end
70
+ end
71
+
72
+ def test_expmap_get_classes
73
+
74
+ em = OpenWFE::ExpressionMap.new
75
+
76
+ assert_equal \
77
+ em.get_expression_classes(Rufus::Schedulable),
78
+ [
79
+ OpenWFE::ParticipantExpression,
80
+ OpenWFE::SleepExpression,
81
+ OpenWFE::CronExpression,
82
+ OpenWFE::WhenExpression,
83
+ OpenWFE::WaitExpression,
84
+ #OpenWFE::ReserveExpression,
85
+ OpenWFE::ListenExpression,
86
+ OpenWFE::TimeoutExpression,
87
+ OpenWFE::Environment
88
+ ]
89
+ end
90
+ end
data/test/nut_0_irb.rb ADDED
@@ -0,0 +1,20 @@
1
+
2
+ #
3
+ # NUT = not a unit test
4
+ # some kind of a manual test
5
+ #
6
+ # John Mettraux at openwfe.org
7
+ #
8
+ # Mon Oct 9 22:19:44 JST 2006
9
+ #
10
+
11
+ require 'openwfe/util/irb'
12
+ require 'openwfe/engine/engine'
13
+
14
+
15
+ engine = OpenWFE::Engine.new
16
+
17
+ OpenWFE::trap_int_irb(binding())
18
+
19
+ sleep(20)
20
+
data/test/obs_test.rb ADDED
@@ -0,0 +1,142 @@
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 'test/unit'
11
+
12
+ require 'openwfe/util/observable'
13
+
14
+
15
+ #
16
+ # testing the observer module (mixin)
17
+ #
18
+
19
+ class ObsTest < Test::Unit::TestCase
20
+
21
+ #def setup
22
+ #end
23
+
24
+ #def teardown
25
+ #end
26
+
27
+ class Observed
28
+ include OpenWFE::OwfeObservable
29
+
30
+ attr_reader :observers
31
+
32
+ def initialize
33
+ super
34
+ @observers = {}
35
+ end
36
+
37
+ public :onotify
38
+ end
39
+
40
+ def test_0
41
+
42
+ $s = nil
43
+
44
+ observed = Observed.new
45
+
46
+ observed.add_observer :channel0 do
47
+ $s = 0
48
+ end
49
+
50
+ observer1 = Object.new
51
+ class << observer1
52
+ def call channel, *args
53
+ $s = 1
54
+ end
55
+ end
56
+ observed.add_observer :channel1, observer1
57
+
58
+ observer2 = lambda do |channel, args|
59
+ $s = 2
60
+ end
61
+ observed.add_observer :channel2, observer2
62
+
63
+ observed.onotify :channel0, :nothing
64
+ assert_equal $s, 0
65
+
66
+ observed.onotify :channel1, :nothing
67
+ assert_equal $s, 1
68
+
69
+ observed.onotify :channel2, :nothing
70
+ assert_equal $s, 2
71
+
72
+ $s = nil
73
+
74
+ observed.remove_observer observer2, :channel99
75
+
76
+ observed.onotify :channel2, :nothing
77
+ assert_equal $s, 2
78
+
79
+ $s = nil
80
+
81
+ observed.remove_observer observer2
82
+
83
+ observed.onotify :channel2, :nothing
84
+ assert_nil $s
85
+
86
+ $s = nil
87
+
88
+ observed.remove_observer observer1, :channel1
89
+
90
+ observed.onotify :channel1, :nothing
91
+ assert_nil $s
92
+ end
93
+
94
+
95
+ def test_1
96
+
97
+ $s = nil
98
+
99
+ observed = Observed.new
100
+
101
+ observed.add_observer :channel0 do
102
+ $s = 0
103
+ end
104
+ observed.add_observer "channel[0-9]+" do
105
+ $s = 9
106
+ end
107
+
108
+ $s = nil
109
+ observed.onotify "channel2", :nothing
110
+ assert_equal $s, 9
111
+
112
+ $s = nil
113
+ observed.onotify "channelZ", :nothing
114
+ assert_nil $s
115
+ end
116
+
117
+ def test_2
118
+
119
+ observed = Observed.new
120
+
121
+ o1 = observed.add_observer :channel0 do
122
+ puts "whatever"
123
+ end
124
+ o2 = observed.add_observer :channel0 do
125
+ puts "whatever"
126
+ end
127
+
128
+ assert_equal observed.observers.size, 1
129
+ assert_equal observed.observers[:channel0].size, 2
130
+
131
+ observed.remove_observer o1
132
+
133
+ assert_equal observed.observers.size, 1
134
+ assert_equal observed.observers[:channel0].size, 1
135
+
136
+ observed.remove_observer o2
137
+
138
+ assert_equal observed.observers.size, 1
139
+ assert_equal observed.observers[:channel0].size, 0
140
+ end
141
+
142
+ end
@@ -0,0 +1,251 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'rubygems'
9
+
10
+ require 'test/unit'
11
+ require 'fileutils'
12
+ require 'webrick'
13
+
14
+ require 'rutest_utils'
15
+ require 'openwfe/orest/worklistclient'
16
+ require 'openwfe/engine/engine'
17
+ require 'openwfe/worklist/oldrest'
18
+ require 'openwfe/worklist/storelocks'
19
+ require 'openwfe/participants/storeparticipants'
20
+ require 'openwfe/worklist/worklist'
21
+
22
+
23
+ class OldRestTest < Test::Unit::TestCase
24
+
25
+ def setup
26
+
27
+ #$DEBUG = true
28
+
29
+ @engine = OpenWFE::Engine.new(
30
+ { :definition_in_launchitem_allowed => true })
31
+
32
+ FileUtils.mkdir "logs" unless File.exist?("logs")
33
+
34
+ logger = WEBrick::Log.new "logs/orest_test.webrick.log"
35
+ logger.level = WEBrick::Log::DEBUG
36
+
37
+ #
38
+ # preparing a worklist
39
+
40
+ @worklist = OpenWFE::Worklist.new(
41
+ @engine.application_context,
42
+ :auth_system => { "foo" => "bar" })
43
+ #:launchables => {})
44
+
45
+ @worklist.add_store(
46
+ "alpha",
47
+ "alpha",
48
+ OpenWFE::StoreWithLocks.new(OpenWFE::HashParticipant))
49
+ @worklist.add_store(
50
+ "bravo",
51
+ "bravo",
52
+ OpenWFE::StoreWithLocks.new(OpenWFE::HashParticipant))
53
+
54
+ #
55
+ # registering the worklist (behind two participants)
56
+
57
+ @engine.register_participant :alpha, @worklist
58
+ @engine.register_participant :bravo, @worklist
59
+
60
+ #
61
+ # preparing and starting the webserver
62
+ # (it's a REST interface after all)
63
+
64
+ @server = WEBrick::HTTPServer.new(
65
+ :Port => 5080,
66
+ :BindAddress => "0.0.0.0",
67
+ :Logger => logger,
68
+ :AccessLog => [[
69
+ File.open("logs/orest_test.access.log", "w"),
70
+ WEBrick::AccessLog::COMMON_LOG_FORMAT ]])
71
+
72
+ @server.mount(
73
+ "/worklist",
74
+ OpenWFE::OldRestWorklistServlet,
75
+ :AuthSystem => @worklist,
76
+ :Worklist => @worklist)
77
+
78
+ Thread.new do
79
+ @server.start
80
+ end
81
+ end
82
+
83
+ def get_servlet
84
+ servlet_class = @server.search_servlet("/worklist")[0]
85
+ servlet_class.get_instance(@server, {})
86
+ end
87
+
88
+ def teardown
89
+ @server.shutdown
90
+ @engine.stop
91
+ end
92
+
93
+
94
+ def test_0
95
+
96
+ #sleep 0.1
97
+
98
+ #
99
+ # just checking that we get bounced in case of wrong credentials
100
+
101
+ assert_raise RuntimeError do
102
+ client = OpenWFE::WorklistClient.new(
103
+ "http://localhost:5080/worklist", "foo", "foo")
104
+ end
105
+
106
+ client = OpenWFE::WorklistClient.new(
107
+ "http://localhost:5080/worklist", "foo", "bar")
108
+
109
+ assert client.session_id > 0
110
+
111
+ assert_equal get_servlet.instance_variable_get(:@sessions).size, 1
112
+
113
+ #
114
+ # are there two stores in this worklist ?
115
+
116
+ l = client.list_stores
117
+
118
+ assert_equal l.size, 2
119
+
120
+ store = l[0]
121
+
122
+ assert_equal store.name, "alpha"
123
+
124
+ #
125
+ # playing with a mock workitem
126
+
127
+ assert_raise RuntimeError do
128
+ client.get_headers "nada"
129
+ end
130
+
131
+ actual_store = @worklist.get_store "alpha"
132
+ actual_store.consume(new_workitem())
133
+
134
+ headers = client.get_headers "alpha"
135
+ #headers = client.get_headers "Store.alpha"
136
+
137
+ assert_equal 1, headers.length
138
+ assert_equal "surf", headers[0].attributes["nada"]
139
+ assert_equal "surf", headers[0].nada
140
+
141
+ #
142
+ # launching a new process...
143
+
144
+ li = OpenWFE::LaunchItem.new('''
145
+ <process-definition name="orest" revision="1">
146
+ <sequence>
147
+ <participant ref="alpha" />
148
+ <participant ref="bravo" />
149
+ </sequence>
150
+ </process-definition>
151
+ '''.strip)
152
+ li.myfield = "myvalue"
153
+
154
+ fei = client.launch_flow "any", li
155
+
156
+ assert_kind_of OpenWFE::FlowExpressionId, fei
157
+
158
+ sleep 0.7
159
+
160
+ headers = client.get_headers "alpha"
161
+
162
+ #require 'pp'; pp headers
163
+
164
+ assert_equal headers.size, 2
165
+
166
+ # yes, the workitem of our newly launched process has arrived...
167
+
168
+ fei.expression_id = "0.0.0"
169
+ fei.expression_name = "participant"
170
+
171
+ wi = client.get_workitem "alpha", fei
172
+
173
+ assert_equal wi.myfield, "myvalue"
174
+
175
+ wi = client.get_and_lock_workitem "alpha", fei
176
+
177
+ # got the workitem and made sure others can't modify / forward it
178
+
179
+ assert_equal wi.myfield, "myvalue"
180
+
181
+ headers = client.get_headers "alpha"
182
+
183
+ h = nil
184
+ headers.each do |hh|
185
+ if hh.locked
186
+ h = hh
187
+ break
188
+ end
189
+ end
190
+
191
+ assert_equal h.fei, fei
192
+
193
+ feis = client.find_flow_instance "alpha", fei.wfid
194
+
195
+ assert_equal feis.size, 1
196
+
197
+ # releasing the fish...
198
+
199
+ client.release_workitem wi
200
+
201
+ headers = client.get_headers "alpha"
202
+
203
+ assert (not (headers[0].locked or headers[1].locked))
204
+
205
+ assert_raise RuntimeError do
206
+ client.save_workitem wi
207
+ end
208
+
209
+ # catching it again
210
+
211
+ wi = client.get_and_lock_workitem "alpha", fei
212
+
213
+ wi.got_forwarded = true
214
+
215
+ client.forward_workitem wi
216
+
217
+ headers = client.get_headers "alpha"
218
+
219
+ assert_equal headers.size, 1
220
+
221
+ assert_nil headers[0].attributes['got_forwarded']
222
+ #
223
+ # still our old initial workitem, inserted manually
224
+
225
+ sleep 0.500
226
+
227
+ headers = client.get_headers "bravo"
228
+
229
+ assert_equal headers.size, 1
230
+
231
+ assert_equal headers[0].got_forwarded, true
232
+
233
+ #
234
+ # done
235
+
236
+ client.close
237
+
238
+ assert_equal get_servlet.instance_variable_get(:@sessions).size, 0
239
+ end
240
+
241
+ protected
242
+
243
+ def new_workitem ()
244
+ wi = OpenWFE::InFlowWorkItem.new
245
+ wi.fei = new_fei()
246
+ wi.attributes = { "nada" => "surf" }
247
+ wi
248
+ end
249
+
250
+ end
251
+