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,56 @@
1
+
2
+ #
3
+ # a bit of benchmark
4
+ #
5
+ # Thu Nov 8 21:48:20 JST 2007
6
+ #
7
+
8
+ require 'benchmark'
9
+
10
+ require 'openwfe/def'
11
+ #require 'openwfe/engine/engine'
12
+ require 'openwfe/engine/file_persisted_engine'
13
+
14
+
15
+ class ProgDef < OpenWFE::ProcessDefinition
16
+ sequence do
17
+ toto
18
+ toto
19
+ toto
20
+ toto
21
+ toto
22
+ end
23
+ end
24
+
25
+ xml = <<END
26
+ <process-definition name="x" revision="y">
27
+ <sequence>
28
+ <toto/>
29
+ <toto/>
30
+ <toto/>
31
+ <toto/>
32
+ <toto/>
33
+ </sequence>
34
+ </process-definition>
35
+ END
36
+
37
+ #$engine = OpenWFE::Engine.new
38
+ $engine = OpenWFE::FilePersistedEngine.new
39
+
40
+ $engine.register_participant "toto" do |workitem|
41
+ # do nothing
42
+ end
43
+
44
+ N = 500
45
+
46
+ def test (proc_def)
47
+ N.times do
48
+ fei = $engine.launch proc_def
49
+ $engine.wait_for fei
50
+ end
51
+ end
52
+
53
+ Benchmark.bm do |x|
54
+ x.report("prog :") { test ProgDef }
55
+ x.report("xml :") { test xml.strip }
56
+ end
@@ -0,0 +1,109 @@
1
+
2
+ #
3
+ # Benchmarking / testing Ruote
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue May 13 15:03:41 JST 2008
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+
14
+ require 'flowtestbase'
15
+
16
+
17
+ class FlowTestRecursion < Test::Unit::TestCase
18
+ include FlowTestBase
19
+
20
+ #def teardown
21
+ #end
22
+
23
+ #def setup
24
+ #end
25
+
26
+ #
27
+ # test 0
28
+ #
29
+
30
+ #N = 500
31
+ N = 100
32
+
33
+ #
34
+ # Test0, N=100
35
+ #
36
+ # Tue May 13 17:24:53 JST 2008
37
+ #
38
+ # without substitution :
39
+ # q : 2.72s
40
+ # p : 752s
41
+ #
42
+ # with substitution :
43
+ # q : 2.67s
44
+ # p : 715s
45
+ # (c : 10s)
46
+ #
47
+ # => :(
48
+ #
49
+ # with substitution : stack grows to 515 exps
50
+ # without : stack grows to 615 exps
51
+ #
52
+
53
+ #
54
+ # chaining N steps
55
+ #
56
+ # (took 39 seconds the first time for N = 500)
57
+ #
58
+ class Test0 < OpenWFE::ProcessDefinition
59
+
60
+ step0
61
+
62
+ (0..N).each do |i|
63
+ define "stage#{i}" do
64
+ sequence do
65
+ _print "stage#{i}"
66
+ set :f => 'outcome', :val => "step#{i+1}"
67
+ #_print "${r:fexp.get_expression_storage.size}" if i == N
68
+ end
69
+ end
70
+ define "step#{i}" do
71
+ step "stage#{i}"
72
+ end
73
+ end
74
+
75
+ define "step#{N+1}" do
76
+ _print "over."
77
+ end
78
+ end
79
+
80
+ #
81
+ # testing against a sequence of N subprocess calls
82
+ #
83
+ # (took 6 seconds the first time for N = 500)
84
+ # (just chaining N 'print "stage#{i}"' takes 0.7 second)
85
+ #
86
+ class Test0b < OpenWFE::ProcessDefinition
87
+ sequence do
88
+ (0..N).each do |i|
89
+ subprocess :ref => "stage#{i}"
90
+ end
91
+ _print "over."
92
+ end
93
+ (0..N).each do |i|
94
+ define "stage#{i}" do
95
+ sequence do
96
+ _print "stage#{i}"
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ def test_0
103
+
104
+ dotest Test0, (0..N).collect { |i| "stage#{i}" }.join("\n") + "\nover."
105
+ #dotest Test0b, (0..N).collect { |i| "stage#{i}" }.join("\n") + "\nover."
106
+ end
107
+
108
+ end
109
+
@@ -0,0 +1,35 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Wed Apr 16 15:33:59 JST 2008
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+
13
+ class FlowTest0b < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ class Test5ms < OpenWFE::ProcessDefinition
23
+ concurrence do
24
+ _print "a"
25
+ _print "b"
26
+ end
27
+ end
28
+
29
+ def test_0
30
+
31
+ dotest Test5ms, "a\nb"
32
+ end
33
+
34
+ end
35
+
@@ -0,0 +1,210 @@
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
+
13
+ include OpenWFE
14
+
15
+
16
+ class FlowTest26c < 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
+
29
+ class TestDefinition0 < ProcessDefinition
30
+ process_definition :name => "test0", :revision => "0" do
31
+ sequence do
32
+ count
33
+ count
34
+ end
35
+ end
36
+ end
37
+ #class TestDefinition0 < ProcessDefinition
38
+ # count
39
+ #end
40
+
41
+ #def xxxx_load_0
42
+ def test_load_0
43
+
44
+ map = {}
45
+
46
+ @engine.register_participant("count") do |workitem|
47
+ count = map[workitem.flow_id]
48
+ count = unless count
49
+ 1
50
+ else
51
+ count + 1
52
+ end
53
+ map[workitem.flow_id] = count
54
+ end
55
+
56
+ n = 1000
57
+
58
+ n.times do |i|
59
+ li = LaunchItem.new(TestDefinition0)
60
+ li.flow_id = i
61
+ @engine.launch(li)
62
+ end
63
+
64
+ #while @engine.get_expression_storage.size > 1
65
+ # sleep 0.001
66
+ #end
67
+ @engine.join_until_idle
68
+
69
+ good = true
70
+
71
+ n.times do |i|
72
+ c = map[i]
73
+ if c == 2
74
+ #if c == 1
75
+ print "."
76
+ else
77
+ print c
78
+ good = false
79
+ end
80
+ end
81
+
82
+ #puts "\n__good ? #{good}"
83
+ assert good, "missing count"
84
+
85
+ # 100 in 1s (in memory engine)
86
+ # 1'000 in 14s (in memory engine)
87
+ # 10'000 in 143s (in memory engine)
88
+ # 1'000 in 31s (cache engine)
89
+ # 10'000 in 321s (cache engine)
90
+ # 1'000 in 113s (persistence only engine)
91
+ # 10'000 in 1173s (persistence only engine)
92
+ #
93
+ #
94
+ # ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.3]
95
+ #
96
+ # Machine Name: Mac
97
+ # Machine Model: MacBook2,1
98
+ # Processor Name: Intel Core 2 Duo
99
+ # Processor Speed: 2 GHz
100
+ # Number Of Processors: 1
101
+ # Total Number Of Cores: 2
102
+ # L2 Cache (per processor): 4 MB
103
+ # Memory: 2 GB
104
+ # Bus Speed: 667 MHz
105
+
106
+ # Thu Sep 13 15:38:46 JST 2007
107
+ #
108
+ # 100 in 3s (in memory engine)
109
+ # 1'000 in 85s (in memory engine)
110
+ # 10'000 in s (in memory engine)
111
+ end
112
+
113
+
114
+ #
115
+ # TEST 1
116
+ #
117
+
118
+ def xxxx_load_1
119
+ #def test_load_1
120
+
121
+ map = {}
122
+
123
+ @engine.register_participant("count") do |workitem|
124
+ count = map[workitem.flow_id]
125
+ count = unless count
126
+ 1
127
+ else
128
+ count + 1
129
+ end
130
+ map[workitem.flow_id] = count
131
+ #puts "(#{workitem.flow_id} => #{map[workitem.flow_id]})"
132
+ end
133
+
134
+ n = 10000
135
+
136
+ n.times do |i|
137
+
138
+ #t = Thread.new do
139
+ # begin
140
+ # li = LaunchItem.new(TestDefinition0)
141
+ # li.flow_id = i
142
+ # @engine.launch(li)
143
+ # #print "."
144
+ # rescue Exception => e
145
+ # print "e"
146
+ # @engine.lwarn do
147
+ # "ft_26_test_1 exception...\n" +
148
+ # OpenWFE::exception_to_s(e)
149
+ # end
150
+ # end
151
+ #end
152
+
153
+ li = LaunchItem.new(TestDefinition0)
154
+ li.flow_id = i
155
+
156
+ fei, t = @engine.launch(li, true)
157
+ #
158
+ # async : true
159
+
160
+ t.join if i == n-1
161
+ end
162
+
163
+ sleep(1)
164
+ puts
165
+
166
+ good = true
167
+
168
+ n.times do |i|
169
+
170
+ c = map[i]
171
+
172
+ if c == 2
173
+ print "."
174
+ elsif c == nil
175
+ print "x"
176
+ good = false
177
+ else
178
+ print c
179
+ good = false
180
+ end
181
+ end
182
+
183
+ #puts "\n__good ? #{good}"
184
+
185
+ assert good, "missing count"
186
+
187
+ # 100 in 3s (in memory engine)
188
+ # 1'000 in 85s (in memory engine)
189
+ # 10'000 in s (in memory engine)
190
+ # 1'000 in 551s (cache engine)
191
+ # 10'000 in s (cache engine)
192
+ # 1'000 in s (persistence only engine)
193
+ # 10'000 in s (persistence only engine)
194
+ #
195
+ #
196
+ # ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.3]
197
+ #
198
+ # Machine Name: Mac
199
+ # Machine Model: MacBook2,1
200
+ # Processor Name: Intel Core 2 Duo
201
+ # Processor Speed: 2 GHz
202
+ # Number Of Processors: 1
203
+ # Total Number Of Cores: 2
204
+ # L2 Cache (per processor): 4 MB
205
+ # Memory: 2 GB
206
+ # Bus Speed: 667 MHz
207
+ end
208
+
209
+ end
210
+
@@ -0,0 +1,86 @@
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 'profile'
11
+
12
+ require 'flowtestbase'
13
+ require 'openwfe/def'
14
+
15
+ include OpenWFE
16
+
17
+
18
+ class FlowTest26b < Test::Unit::TestCase
19
+ include FlowTestBase
20
+
21
+ #def setup
22
+ #end
23
+
24
+ #def teardown
25
+ #end
26
+
27
+ #
28
+ # Test 0
29
+ #
30
+
31
+ class TestDefinition0 < ProcessDefinition
32
+ count
33
+ end
34
+
35
+ #def xxxx_load_0
36
+ def test_load_0
37
+
38
+ #require 'openwfe/expool/journal'
39
+ #@engine.application_context[:keep_journals] = true
40
+ #@engine.init_service("journal", Journal)
41
+
42
+ $count = 0
43
+
44
+ @engine.register_participant("count") do |workitem|
45
+ $count += 1
46
+ #puts "count is #{$count}"
47
+ end
48
+
49
+
50
+ n = 1000
51
+ n.times do |i|
52
+ @engine.launch(LaunchItem.new(TestDefinition0))
53
+ end
54
+
55
+ puts "launched #{n} items"
56
+
57
+ #n.times do |i|
58
+ # Thread.new do
59
+ # @engine.launch(LaunchItem.new(TestDefinition0))
60
+ # end
61
+ #end
62
+
63
+ #5.times do
64
+ # Thread.new do
65
+ # (n / 5).times do
66
+ # @engine.launch(LaunchItem.new(TestDefinition0))
67
+ # end
68
+ # end
69
+ #end
70
+ #sleep 1
71
+
72
+ join_until_idle
73
+
74
+ assert_equal $count, n
75
+ end
76
+
77
+ def join_until_idle ()
78
+ storage = @engine.get_expression_storage
79
+ while storage.size > 1
80
+ sleep 1
81
+ puts "storage.size:#{storage.size}"
82
+ end
83
+ end
84
+
85
+ end
86
+