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,188 @@
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 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+ require 'flowtestbase'
14
+
15
+
16
+ class FlowTest2b < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ #def setup
23
+ #end
24
+
25
+ def prepare
26
+ [ "alpha", "bravo", "charly" ].each do |name|
27
+
28
+ @engine.register_participant(name) do |workitem|
29
+
30
+ workitem.attributes[name] = true
31
+ workitem.attributes["key"] = name
32
+ end
33
+ end
34
+
35
+ #@engine.register_participant("display_workitem") do |workitem|
36
+ # puts
37
+ # puts
38
+ #end
39
+ end
40
+
41
+ #
42
+ # TEST 0
43
+
44
+ def test_con_0
45
+
46
+ prepare()
47
+
48
+ dotest(
49
+ '''
50
+ <process-definition name="2b_con" revision="0">
51
+ <sequence>
52
+ <concurrence
53
+ merge="lowest"
54
+ merge-type="mix"
55
+ >
56
+ <participant ref="alpha" />
57
+ <participant ref="bravo" />
58
+ <participant ref="charly" />
59
+ </concurrence>
60
+ <!--
61
+ <print>${r:workitem.to_s}</print>
62
+ <reval>puts "---r:" + workitem.key.to_s</reval>
63
+ -->
64
+ <print>${f:key}</print>
65
+ </sequence>
66
+ </process-definition>''',
67
+ "charly")
68
+ end
69
+
70
+ #
71
+ # TEST 1
72
+
73
+ class TestDefinition1 < OpenWFE::ProcessDefinition
74
+
75
+ def initialize (merge, merge_type)
76
+ super()
77
+ @merge = merge
78
+ @merge_type = merge_type
79
+ end
80
+
81
+ def make
82
+ _process_definition :name => "2b_con", :revision => "1" do
83
+ _sequence do
84
+ _concurrence :merge => @merge, :merge_type => @merge_type do
85
+ [ "alpha", "bravo", "charly" ].each do |pname|
86
+ _participant pname
87
+ end
88
+ end
89
+ #_reval "puts workitem.to_s"
90
+ #_reval "puts '${f:key}|${f:alpha}|${f:bravo}|${f:charly}'"
91
+ _print "${f:key}\n${f:alpha}\n${f:bravo}\n${f:charly}"
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ def test_con_1
98
+
99
+ #log_level_to_debug
100
+
101
+ prepare
102
+
103
+ dotest(
104
+ TestDefinition1.new("lowest", "mix"),
105
+ %w{ charly true true true }.join("\n"))
106
+ end
107
+
108
+ def test_con_1b
109
+
110
+ prepare
111
+
112
+ dotest(
113
+ TestDefinition1.new("highest", "mix"),
114
+ %w{ alpha true true true }.join("\n"))
115
+ end
116
+
117
+ def test_con_1c
118
+
119
+ prepare
120
+
121
+ dotest(
122
+ TestDefinition1.new("lowest", "override"),
123
+ [ 'charly', '', '', 'true' ].join("\n"))
124
+ end
125
+
126
+ def test_con_1d
127
+
128
+ prepare
129
+
130
+ dotest(
131
+ TestDefinition1.new("highest", "override"),
132
+ %w{ alpha true }.join("\n"))
133
+ end
134
+
135
+ def test_rawprog
136
+
137
+ #puts TestDefinition1.new("lowest", "mix").make.to_s
138
+
139
+ assert_equal(
140
+ "<process-definition name='2b_con' revision='1'>"+
141
+ "<sequence>"+
142
+ "<concurrence merge='lowest' merge-type='mix'>"+
143
+ "<participant>"+
144
+ "alpha"+
145
+ "</participant>"+
146
+ "<participant>"+
147
+ "bravo"+
148
+ "</participant>"+
149
+ "<participant>"+
150
+ "charly"+
151
+ "</participant>"+
152
+ "</concurrence>"+
153
+ "<print>"+
154
+ "${f:key}\n${f:alpha}\n${f:bravo}\n${f:charly}"+
155
+ "</print>"+
156
+ "</sequence>"+
157
+ "</process-definition>",
158
+ OpenWFE::ExpressionTree.to_s(
159
+ TestDefinition1.new("lowest", "mix").make))
160
+ end
161
+
162
+
163
+ #
164
+ # TEST 2
165
+
166
+ class Isolate01 < OpenWFE::ProcessDefinition
167
+ N = 3
168
+ sequence do
169
+ #concurrence :merge_type => :isolate do
170
+ concurrence :merge_type => "isolate" do
171
+ N.times do |x|
172
+ set :field => "f", :value => "#{x}"
173
+ end
174
+ end
175
+ #pp_workitem
176
+ N.times do |x|
177
+ _print "${r:wi.attributes['#{x}']['f']}"
178
+ end
179
+ end
180
+ end
181
+
182
+ def test_2
183
+
184
+ dotest Isolate01, "0\n1\n2"
185
+ end
186
+
187
+ end
188
+
@@ -0,0 +1,64 @@
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 'openwfe/def'
11
+ require 'flowtestbase'
12
+
13
+
14
+ class FlowTest2c < Test::Unit::TestCase
15
+ include FlowTestBase
16
+
17
+ #def setup
18
+ #end
19
+
20
+ #def teardown
21
+ #end
22
+
23
+ #def xxxx_con_0
24
+ def test_con_0
25
+ dotest(
26
+ '''<process-definition name="con" revision="0">
27
+ <concurrence>
28
+ <print>a</print>
29
+ <print>b</print>
30
+ </concurrence>
31
+ </process-definition>''',
32
+ [ '''a
33
+ b''',
34
+ '''b
35
+ a'''
36
+ ])
37
+ end
38
+
39
+
40
+ #
41
+ # TEST 1
42
+
43
+ class TestCon2c1 < OpenWFE::ProcessDefinition
44
+ sequence do
45
+ concurrence :count => "1", :remaining => "forget" do
46
+ _print "a"
47
+ sequence do
48
+ _sleep "500"
49
+ _print "b"
50
+ end
51
+ end
52
+ _print "c"
53
+ end
54
+ end
55
+
56
+ def test_con_1
57
+ dotest(
58
+ TestCon2c1,
59
+ "a\nc\nb",
60
+ 2)
61
+ end
62
+
63
+ end
64
+
@@ -0,0 +1,203 @@
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 'yaml'
11
+ require 'socket'
12
+
13
+ require 'openwfe/def'
14
+ require 'openwfe/listeners/socketlisteners'
15
+ require 'openwfe/participants/socketparticipants'
16
+
17
+ require 'flowtestbase'
18
+
19
+
20
+ class FlowTest30 < Test::Unit::TestCase
21
+ include FlowTestBase
22
+
23
+ #def teardown
24
+ #end
25
+
26
+ #def setup
27
+ #end
28
+
29
+
30
+ #
31
+ # TEST 0
32
+
33
+ class TestDefinition0 < ProcessDefinition
34
+ _print "${f:message}"
35
+ end
36
+
37
+ def test_0
38
+
39
+ log_level_to_debug
40
+
41
+ sl = OpenWFE::SocketListener.new(
42
+ "socket_listener", @engine.application_context, 7008)
43
+
44
+ @engine.add_workitem_listener(sl)
45
+
46
+ li = LaunchItem.new(TestDefinition0.do_make)
47
+ li.message = "ok"
48
+ s = YAML.dump(li)
49
+
50
+ socket = TCPSocket.new("localhost", 7008)
51
+ socket.puts(s)
52
+ socket.close_write
53
+
54
+ reply = socket.gets
55
+ socket.close
56
+
57
+ #puts ">>>#{reply}<<<"
58
+ assert (reply.match "^.fei .*0.$")
59
+
60
+ sleep 0.200
61
+
62
+ trace = @tracer.to_s
63
+
64
+ assert_equal trace, "ok"
65
+ end
66
+
67
+
68
+ #
69
+ # TEST 1
70
+
71
+ def test_sl_1
72
+
73
+ @engine.add_workitem_listener(OpenWFE::SocketListener)
74
+
75
+ li = LaunchItem.new(TestDefinition0.do_make)
76
+ li.message = "ok1"
77
+ s = YAML.dump(li)
78
+
79
+ socket = TCPSocket.new("localhost", 7007)
80
+ socket.puts(s)
81
+ socket.puts
82
+ socket.close_write
83
+
84
+ reply = socket.gets
85
+ socket.close
86
+
87
+ #puts ">>>#{reply}<<<"
88
+ assert (reply.match "^.fei .*0.$")
89
+
90
+ sleep 0.100
91
+
92
+ trace = @tracer.to_s
93
+
94
+ assert_equal trace, "ok1"
95
+ end
96
+
97
+
98
+ #
99
+ # TEST 2
100
+
101
+ def test_sl_2
102
+
103
+ @engine.add_workitem_listener(OpenWFE::SocketListener)
104
+
105
+ li = LaunchItem.new(TestDefinition0.do_make)
106
+ li.message = "ok2"
107
+ s = YAML.dump(li)
108
+
109
+ socket = TCPSocket.new("localhost", 7007)
110
+ socket.puts("XmlEncoder 777")
111
+ socket.puts
112
+ socket.puts(s)
113
+ socket.puts
114
+ socket.close_write
115
+
116
+ assert (not socket.closed?)
117
+
118
+ sleep 0.100
119
+
120
+ reply = socket.gets
121
+ socket.close
122
+
123
+ #puts ">>>#{reply}<<<"
124
+ assert_not_nil reply.match("^.fei .*0.$")
125
+
126
+ sleep 0.100
127
+
128
+ trace = @tracer.to_s
129
+
130
+ assert_equal trace, "ok2"
131
+ end
132
+
133
+
134
+ #
135
+ # TEST 3
136
+
137
+ def test_sl_3
138
+
139
+ @engine.add_workitem_listener(OpenWFE::SocketListener)
140
+
141
+ li = LaunchItem.new(TestDefinition0.do_make)
142
+
143
+ trace = ""
144
+
145
+ 1.upto(4) do |i|
146
+ trace << "#{i}\n"
147
+ li.message = i
148
+ send_li(li)
149
+ end
150
+ 1.upto(3) do |i|
151
+ trace << "#{i}\n"
152
+ li.message = i
153
+ send_li_sp(li)
154
+ end
155
+ 1.upto(3) do |i|
156
+ trace << "#{i}\n"
157
+ li.message = i
158
+ send_li_xsp(li)
159
+ end
160
+ 1.upto(3) do |i|
161
+ trace << "#{i}\n"
162
+ li.message = i
163
+ send_li_ssp(li)
164
+ end
165
+ 1.upto(3) do |i|
166
+ trace << "#{i}\n"
167
+ li.message = i
168
+ send_li_sxsp(li)
169
+ end
170
+
171
+ trace = trace.strip
172
+
173
+ sleep 0.300
174
+
175
+ assert_equal @tracer.to_s, trace
176
+ end
177
+
178
+ def send_li (li)
179
+ socket = TCPSocket.new("localhost", 7007)
180
+ socket.puts(YAML.dump(li))
181
+ socket.puts
182
+ socket.close_write
183
+ reply = socket.gets
184
+ socket.close
185
+ end
186
+ def send_li_sp (li)
187
+ sp = OpenWFE::SocketParticipant.new("localhost", 7007)
188
+ sp.consume(li)
189
+ end
190
+ def send_li_xsp (li)
191
+ sp = OpenWFE::XmlSocketParticipant.new("localhost", 7007)
192
+ sp.consume(li)
193
+ end
194
+
195
+ def send_li_ssp (li)
196
+ OpenWFE::SocketParticipant.dispatch("localhost", 7007, li)
197
+ end
198
+
199
+ def send_li_sxsp (li)
200
+ OpenWFE::XmlSocketParticipant.dispatch("localhost", 7007, li)
201
+ end
202
+ end
203
+