ruote-maestrodev 2.2.1

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 (265) hide show
  1. data/CHANGELOG.txt +290 -0
  2. data/CREDITS.txt +99 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.rdoc +88 -0
  5. data/Rakefile +108 -0
  6. data/TODO.txt +488 -0
  7. data/lib/ruote.rb +7 -0
  8. data/lib/ruote/context.rb +194 -0
  9. data/lib/ruote/engine.rb +1062 -0
  10. data/lib/ruote/engine/process_error.rb +122 -0
  11. data/lib/ruote/engine/process_status.rb +448 -0
  12. data/lib/ruote/exp/command.rb +87 -0
  13. data/lib/ruote/exp/commanded.rb +69 -0
  14. data/lib/ruote/exp/condition.rb +227 -0
  15. data/lib/ruote/exp/fe_add_branches.rb +138 -0
  16. data/lib/ruote/exp/fe_apply.rb +154 -0
  17. data/lib/ruote/exp/fe_cancel_process.rb +78 -0
  18. data/lib/ruote/exp/fe_command.rb +156 -0
  19. data/lib/ruote/exp/fe_concurrence.rb +321 -0
  20. data/lib/ruote/exp/fe_concurrent_iterator.rb +219 -0
  21. data/lib/ruote/exp/fe_cron.rb +141 -0
  22. data/lib/ruote/exp/fe_cursor.rb +324 -0
  23. data/lib/ruote/exp/fe_define.rb +112 -0
  24. data/lib/ruote/exp/fe_echo.rb +60 -0
  25. data/lib/ruote/exp/fe_equals.rb +115 -0
  26. data/lib/ruote/exp/fe_error.rb +82 -0
  27. data/lib/ruote/exp/fe_filter.rb +648 -0
  28. data/lib/ruote/exp/fe_forget.rb +88 -0
  29. data/lib/ruote/exp/fe_given.rb +154 -0
  30. data/lib/ruote/exp/fe_if.rb +127 -0
  31. data/lib/ruote/exp/fe_inc.rb +205 -0
  32. data/lib/ruote/exp/fe_iterator.rb +234 -0
  33. data/lib/ruote/exp/fe_let.rb +75 -0
  34. data/lib/ruote/exp/fe_listen.rb +304 -0
  35. data/lib/ruote/exp/fe_lose.rb +110 -0
  36. data/lib/ruote/exp/fe_noop.rb +45 -0
  37. data/lib/ruote/exp/fe_once.rb +215 -0
  38. data/lib/ruote/exp/fe_participant.rb +287 -0
  39. data/lib/ruote/exp/fe_read.rb +69 -0
  40. data/lib/ruote/exp/fe_redo.rb +82 -0
  41. data/lib/ruote/exp/fe_ref.rb +152 -0
  42. data/lib/ruote/exp/fe_registerp.rb +110 -0
  43. data/lib/ruote/exp/fe_reserve.rb +126 -0
  44. data/lib/ruote/exp/fe_restore.rb +102 -0
  45. data/lib/ruote/exp/fe_save.rb +72 -0
  46. data/lib/ruote/exp/fe_sequence.rb +59 -0
  47. data/lib/ruote/exp/fe_set.rb +154 -0
  48. data/lib/ruote/exp/fe_subprocess.rb +211 -0
  49. data/lib/ruote/exp/fe_that.rb +92 -0
  50. data/lib/ruote/exp/fe_undo.rb +67 -0
  51. data/lib/ruote/exp/fe_unregisterp.rb +69 -0
  52. data/lib/ruote/exp/fe_wait.rb +95 -0
  53. data/lib/ruote/exp/flowexpression.rb +886 -0
  54. data/lib/ruote/exp/iterator.rb +81 -0
  55. data/lib/ruote/exp/merge.rb +118 -0
  56. data/lib/ruote/exp/ro_attributes.rb +212 -0
  57. data/lib/ruote/exp/ro_filters.rb +136 -0
  58. data/lib/ruote/exp/ro_persist.rb +154 -0
  59. data/lib/ruote/exp/ro_variables.rb +189 -0
  60. data/lib/ruote/exp/ro_vf.rb +68 -0
  61. data/lib/ruote/fei.rb +260 -0
  62. data/lib/ruote/id/mnemo_wfid_generator.rb +43 -0
  63. data/lib/ruote/id/wfid_generator.rb +81 -0
  64. data/lib/ruote/log/default_history.rb +122 -0
  65. data/lib/ruote/log/pretty.rb +176 -0
  66. data/lib/ruote/log/storage_history.rb +159 -0
  67. data/lib/ruote/log/test_logger.rb +208 -0
  68. data/lib/ruote/log/wait_logger.rb +64 -0
  69. data/lib/ruote/part/block_participant.rb +137 -0
  70. data/lib/ruote/part/code_participant.rb +81 -0
  71. data/lib/ruote/part/engine_participant.rb +189 -0
  72. data/lib/ruote/part/local_participant.rb +138 -0
  73. data/lib/ruote/part/no_op_participant.rb +60 -0
  74. data/lib/ruote/part/null_participant.rb +54 -0
  75. data/lib/ruote/part/rev_participant.rb +169 -0
  76. data/lib/ruote/part/smtp_participant.rb +116 -0
  77. data/lib/ruote/part/storage_participant.rb +392 -0
  78. data/lib/ruote/part/template.rb +84 -0
  79. data/lib/ruote/participant.rb +7 -0
  80. data/lib/ruote/reader.rb +278 -0
  81. data/lib/ruote/reader/json.rb +49 -0
  82. data/lib/ruote/reader/radial.rb +290 -0
  83. data/lib/ruote/reader/ruby_dsl.rb +186 -0
  84. data/lib/ruote/reader/xml.rb +99 -0
  85. data/lib/ruote/receiver/base.rb +212 -0
  86. data/lib/ruote/storage/base.rb +364 -0
  87. data/lib/ruote/storage/composite_storage.rb +121 -0
  88. data/lib/ruote/storage/fs_storage.rb +139 -0
  89. data/lib/ruote/storage/hash_storage.rb +211 -0
  90. data/lib/ruote/svc/dispatch_pool.rb +158 -0
  91. data/lib/ruote/svc/dollar_sub.rb +298 -0
  92. data/lib/ruote/svc/error_handler.rb +138 -0
  93. data/lib/ruote/svc/expression_map.rb +97 -0
  94. data/lib/ruote/svc/participant_list.rb +397 -0
  95. data/lib/ruote/svc/tracker.rb +172 -0
  96. data/lib/ruote/svc/treechecker.rb +141 -0
  97. data/lib/ruote/tree_dot.rb +85 -0
  98. data/lib/ruote/util/filter.rb +525 -0
  99. data/lib/ruote/util/hashdot.rb +79 -0
  100. data/lib/ruote/util/look.rb +128 -0
  101. data/lib/ruote/util/lookup.rb +127 -0
  102. data/lib/ruote/util/misc.rb +167 -0
  103. data/lib/ruote/util/ometa.rb +71 -0
  104. data/lib/ruote/util/serializer.rb +103 -0
  105. data/lib/ruote/util/subprocess.rb +88 -0
  106. data/lib/ruote/util/time.rb +100 -0
  107. data/lib/ruote/util/tree.rb +58 -0
  108. data/lib/ruote/version.rb +29 -0
  109. data/lib/ruote/worker.rb +386 -0
  110. data/lib/ruote/workitem.rb +394 -0
  111. data/phil.txt +14 -0
  112. data/ruote.gemspec +44 -0
  113. data/test/bm/ci.rb +55 -0
  114. data/test/bm/ici.rb +71 -0
  115. data/test/bm/juuman.rb +54 -0
  116. data/test/bm/launch_bench.rb +37 -0
  117. data/test/bm/load_26c.rb +97 -0
  118. data/test/bm/mega.rb +64 -0
  119. data/test/bm/seq_thousand.rb +31 -0
  120. data/test/bm/t.rb +35 -0
  121. data/test/functional/base.rb +247 -0
  122. data/test/functional/concurrent_base.rb +98 -0
  123. data/test/functional/crunner.rb +31 -0
  124. data/test/functional/ct_0_concurrence.rb +65 -0
  125. data/test/functional/ct_1_iterator.rb +67 -0
  126. data/test/functional/ct_2_cancel.rb +81 -0
  127. data/test/functional/eft_0_process_definition.rb +65 -0
  128. data/test/functional/eft_10_cancel_process.rb +46 -0
  129. data/test/functional/eft_11_wait.rb +109 -0
  130. data/test/functional/eft_12_listen.rb +500 -0
  131. data/test/functional/eft_13_iterator.rb +342 -0
  132. data/test/functional/eft_14_cursor.rb +456 -0
  133. data/test/functional/eft_15_loop.rb +69 -0
  134. data/test/functional/eft_16_if.rb +183 -0
  135. data/test/functional/eft_17_equals.rb +55 -0
  136. data/test/functional/eft_18_concurrent_iterator.rb +410 -0
  137. data/test/functional/eft_19_reserve.rb +136 -0
  138. data/test/functional/eft_1_echo.rb +68 -0
  139. data/test/functional/eft_20_save.rb +116 -0
  140. data/test/functional/eft_21_restore.rb +61 -0
  141. data/test/functional/eft_22_noop.rb +28 -0
  142. data/test/functional/eft_23_apply.rb +168 -0
  143. data/test/functional/eft_24_add_branches.rb +98 -0
  144. data/test/functional/eft_25_command.rb +28 -0
  145. data/test/functional/eft_26_error.rb +77 -0
  146. data/test/functional/eft_27_inc.rb +280 -0
  147. data/test/functional/eft_28_once.rb +135 -0
  148. data/test/functional/eft_29_cron.rb +64 -0
  149. data/test/functional/eft_2_sequence.rb +58 -0
  150. data/test/functional/eft_30_ref.rb +155 -0
  151. data/test/functional/eft_31_registerp.rb +130 -0
  152. data/test/functional/eft_32_lose.rb +93 -0
  153. data/test/functional/eft_33_let.rb +31 -0
  154. data/test/functional/eft_34_given.rb +123 -0
  155. data/test/functional/eft_35_filter.rb +375 -0
  156. data/test/functional/eft_36_read.rb +95 -0
  157. data/test/functional/eft_3_participant.rb +149 -0
  158. data/test/functional/eft_4_set.rb +296 -0
  159. data/test/functional/eft_5_subprocess.rb +163 -0
  160. data/test/functional/eft_6_concurrence.rb +304 -0
  161. data/test/functional/eft_7_forget.rb +61 -0
  162. data/test/functional/eft_8_undo.rb +114 -0
  163. data/test/functional/eft_9_redo.rb +138 -0
  164. data/test/functional/ft_0_worker.rb +65 -0
  165. data/test/functional/ft_10_dollar.rb +304 -0
  166. data/test/functional/ft_11_recursion.rb +109 -0
  167. data/test/functional/ft_12_launchitem.rb +43 -0
  168. data/test/functional/ft_13_variables.rb +151 -0
  169. data/test/functional/ft_14_re_apply.rb +324 -0
  170. data/test/functional/ft_15_timeout.rb +226 -0
  171. data/test/functional/ft_16_participant_params.rb +98 -0
  172. data/test/functional/ft_17_conditional.rb +102 -0
  173. data/test/functional/ft_18_kill.rb +138 -0
  174. data/test/functional/ft_19_participant_code.rb +67 -0
  175. data/test/functional/ft_1_process_status.rb +796 -0
  176. data/test/functional/ft_20_storage_participant.rb +543 -0
  177. data/test/functional/ft_21_forget.rb +153 -0
  178. data/test/functional/ft_22_process_definitions.rb +90 -0
  179. data/test/functional/ft_23_load_defs.rb +79 -0
  180. data/test/functional/ft_24_block_participant.rb +235 -0
  181. data/test/functional/ft_25_receiver.rb +207 -0
  182. data/test/functional/ft_26_participant_rtimeout.rb +179 -0
  183. data/test/functional/ft_27_var_indirection.rb +128 -0
  184. data/test/functional/ft_28_null_noop_participants.rb +51 -0
  185. data/test/functional/ft_29_part_template.rb +60 -0
  186. data/test/functional/ft_2_errors.rb +380 -0
  187. data/test/functional/ft_30_smtp_participant.rb +122 -0
  188. data/test/functional/ft_31_part_blocking.rb +72 -0
  189. data/test/functional/ft_33_participant_subprocess_priority.rb +32 -0
  190. data/test/functional/ft_34_cursor_rewind.rb +101 -0
  191. data/test/functional/ft_35_add_service.rb +56 -0
  192. data/test/functional/ft_36_storage_history.rb +150 -0
  193. data/test/functional/ft_37_default_history.rb +109 -0
  194. data/test/functional/ft_38_participant_more.rb +193 -0
  195. data/test/functional/ft_39_wait_for.rb +136 -0
  196. data/test/functional/ft_3_participant_registration.rb +574 -0
  197. data/test/functional/ft_40_wait_logger.rb +62 -0
  198. data/test/functional/ft_41_participants.rb +91 -0
  199. data/test/functional/ft_42_storage_copy.rb +71 -0
  200. data/test/functional/ft_43_participant_on_reply.rb +87 -0
  201. data/test/functional/ft_44_var_participant.rb +35 -0
  202. data/test/functional/ft_45_participant_accept.rb +64 -0
  203. data/test/functional/ft_46_launch_single.rb +83 -0
  204. data/test/functional/ft_47_wfid_generator.rb +54 -0
  205. data/test/functional/ft_48_lose.rb +112 -0
  206. data/test/functional/ft_49_engine_on_error.rb +201 -0
  207. data/test/functional/ft_4_cancel.rb +132 -0
  208. data/test/functional/ft_50_engine_config.rb +22 -0
  209. data/test/functional/ft_51_misc.rb +67 -0
  210. data/test/functional/ft_52_case.rb +134 -0
  211. data/test/functional/ft_53_engine_on_terminate.rb +95 -0
  212. data/test/functional/ft_54_patterns.rb +104 -0
  213. data/test/functional/ft_55_engine_participant.rb +303 -0
  214. data/test/functional/ft_56_filter_attribute.rb +259 -0
  215. data/test/functional/ft_57_rev_participant.rb +252 -0
  216. data/test/functional/ft_58_workitem.rb +69 -0
  217. data/test/functional/ft_59_pause.rb +343 -0
  218. data/test/functional/ft_5_on_error.rb +384 -0
  219. data/test/functional/ft_60_code_participant.rb +45 -0
  220. data/test/functional/ft_61_trailing_fields.rb +34 -0
  221. data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
  222. data/test/functional/ft_6_on_cancel.rb +221 -0
  223. data/test/functional/ft_7_tags.rb +177 -0
  224. data/test/functional/ft_8_participant_consumption.rb +124 -0
  225. data/test/functional/ft_9_subprocesses.rb +146 -0
  226. data/test/functional/restart_base.rb +34 -0
  227. data/test/functional/rt_0_wait.rb +55 -0
  228. data/test/functional/rt_1_listen.rb +56 -0
  229. data/test/functional/rt_2_errors.rb +56 -0
  230. data/test/functional/rt_3_once.rb +70 -0
  231. data/test/functional/rt_4_cron.rb +64 -0
  232. data/test/functional/rt_5_timeout.rb +60 -0
  233. data/test/functional/rtest.rb +8 -0
  234. data/test/functional/storage_helper.rb +93 -0
  235. data/test/functional/test.rb +44 -0
  236. data/test/functional/vertical.rb +46 -0
  237. data/test/path_helper.rb +15 -0
  238. data/test/test.rb +13 -0
  239. data/test/test_helper.rb +28 -0
  240. data/test/unit/storage.rb +428 -0
  241. data/test/unit/storages.rb +37 -0
  242. data/test/unit/test.rb +28 -0
  243. data/test/unit/ut_0_ruby_reader.rb +223 -0
  244. data/test/unit/ut_11_lookup.rb +122 -0
  245. data/test/unit/ut_13_serializer.rb +65 -0
  246. data/test/unit/ut_14_is_uri.rb +28 -0
  247. data/test/unit/ut_15_util.rb +57 -0
  248. data/test/unit/ut_16_reader.rb +225 -0
  249. data/test/unit/ut_18_engine.rb +47 -0
  250. data/test/unit/ut_19_part_template.rb +86 -0
  251. data/test/unit/ut_1_fei.rb +165 -0
  252. data/test/unit/ut_20_composite_storage.rb +74 -0
  253. data/test/unit/ut_21_svc_participant_list.rb +46 -0
  254. data/test/unit/ut_22_filter.rb +1094 -0
  255. data/test/unit/ut_23_svc_tracker.rb +48 -0
  256. data/test/unit/ut_24_radial_reader.rb +332 -0
  257. data/test/unit/ut_25_merge.rb +113 -0
  258. data/test/unit/ut_3_wait_logger.rb +39 -0
  259. data/test/unit/ut_4_expmap.rb +20 -0
  260. data/test/unit/ut_5_tree.rb +54 -0
  261. data/test/unit/ut_6_condition.rb +303 -0
  262. data/test/unit/ut_7_workitem.rb +99 -0
  263. data/test/unit/ut_8_tree_to_dot.rb +72 -0
  264. data/test/unit/ut_9_xml_reader.rb +61 -0
  265. metadata +504 -0
@@ -0,0 +1,14 @@
1
+
2
+ persist then dispatch
3
+
4
+ ==
5
+
6
+ concurrence (and concurrent-iterator) :
7
+
8
+ persist, then fire all children
9
+ prepare all children then fire them !!!
10
+
11
+ ==
12
+
13
+ it can't be perfect, but there can be tools for fixing the consequences of those flaws.
14
+
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), 'lib/ruote/version')
4
+ # bundler wants absolute path
5
+
6
+
7
+ Gem::Specification.new do |s|
8
+
9
+ s.name = 'ruote-maestrodev'
10
+ s.version = Ruote::VERSION
11
+ s.platform = Gem::Platform::RUBY
12
+ s.authors = [ 'John Mettraux', 'Kenneth Kalmer', 'Torsten Schoenebaum' ]
13
+ s.email = [ 'jmettraux@gmail.com' ]
14
+ s.homepage = 'http://ruote.rubyforge.org'
15
+ s.rubyforge_project = 'ruote'
16
+ s.summary = 'an open source Ruby workflow engine'
17
+ s.description = %{
18
+ ruote is an open source Ruby workflow engine
19
+ }
20
+
21
+ #s.files = `git ls-files`.split("\n")
22
+ s.files = Dir[
23
+ 'Rakefile',
24
+ 'lib/**/*.rb', 'spec/**/*.rb', 'test/**/*.rb',
25
+ '*.gemspec', '*.txt', '*.rdoc', '*.md'
26
+ ]
27
+
28
+ s.add_runtime_dependency 'parslet', '1.2.1'
29
+ s.add_runtime_dependency 'sourcify', '0.5.0'
30
+ s.add_runtime_dependency 'rufus-json', '>= 1.0.1'
31
+ s.add_runtime_dependency 'rufus-cloche', '>= 1.0.1'
32
+ s.add_runtime_dependency 'rufus-dollar', '>= 1.0.4'
33
+ s.add_runtime_dependency 'rufus-mnemo', '>= 1.1.0'
34
+ s.add_runtime_dependency 'rufus-scheduler', '>= 2.0.9'
35
+ s.add_runtime_dependency 'rufus-treechecker', '>= 1.0.6'
36
+
37
+ s.add_development_dependency 'rake'
38
+ s.add_development_dependency 'json'
39
+ s.add_development_dependency 'builder'
40
+ s.add_development_dependency 'mailtrap'
41
+
42
+ s.require_path = 'lib'
43
+ end
44
+
@@ -0,0 +1,55 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Sep 16 16:28:36 JST 2009
6
+ #
7
+
8
+ #require 'profile'
9
+
10
+ require 'benchmark'
11
+ require 'rubygems'
12
+
13
+ require File.dirname(__FILE__) + '/../path_helper'
14
+ require File.dirname(__FILE__) + '/../functional/engine_helper'
15
+ require 'ruote/log/test_logger'
16
+
17
+ ac = {
18
+ #:definition_in_launchitem_allowed => true
19
+ }
20
+
21
+ engine = determine_engine_class(ac).new(ac)
22
+
23
+ #puts
24
+ #p engine.class
25
+ #puts
26
+
27
+ #N = 10_000
28
+ #N = 1_000
29
+ N = 300
30
+
31
+ engine.add_service(:s_logger, Ruote::TestLogger)
32
+ #engine.context[:noisy] = true
33
+
34
+ Benchmark.benchmark(' ' * 20 + Benchmark::Tms::CAPTION, 20) do |bench|
35
+
36
+ bench.report('run') do
37
+
38
+ wfid = engine.launch(
39
+ Ruote.process_definition(:name => 'ci') {
40
+ concurrent_iterator(:branches => N.to_s) {
41
+ noop
42
+ }
43
+ }
44
+ )
45
+
46
+ engine.logger.wait_for([ [ :processes, :terminated, { :wfid => wfid } ] ])
47
+
48
+ end
49
+
50
+ end
51
+
52
+ puts
53
+
54
+ engine.stop
55
+
@@ -0,0 +1,71 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed Sep 16 16:28:36 JST 2009
6
+ #
7
+
8
+ #require 'profile'
9
+
10
+ require 'rubygems'
11
+
12
+ require File.dirname(__FILE__) + '/../path_helper'
13
+ require File.dirname(__FILE__) + '/../functional/engine_helper'
14
+ require 'ruote/log/test_logger'
15
+
16
+ ac = {
17
+ #:definition_in_launchitem_allowed => true
18
+ }
19
+
20
+ engine = determine_engine_class(ac).new(ac)
21
+
22
+ #puts
23
+ #p engine.class
24
+ #puts
25
+
26
+ #N = 10_000
27
+ N = 1_000
28
+ #N = 300
29
+
30
+ engine.add_service(:s_logger, Ruote::TestLogger)
31
+ #engine.context[:noisy] = true
32
+
33
+ launched = nil
34
+ reached = nil
35
+ count = 0
36
+
37
+ engine.register_participant :alpha do |workitem|
38
+ reached ||= Time.now
39
+ count += 1
40
+ end
41
+
42
+ launched = Time.now
43
+
44
+ #wfid = engine.launch(
45
+ # Ruote.process_definition :name => 'ci' do
46
+ # concurrent_iterator :branches => N.to_s do
47
+ # alpha
48
+ # end
49
+ # end
50
+ #)
51
+ wfid = engine.launch(
52
+ Ruote.process_definition(:name => 'ci') do
53
+ concurrent_iterator :branches => 10 do
54
+ concurrent_iterator :branches => 10 do
55
+ concurrent_iterator :branches => 10 do
56
+ alpha
57
+ end
58
+ end
59
+ end
60
+ end
61
+ )
62
+
63
+ engine.logger.wait_for([ [ :processes, :terminated, { :wfid => wfid } ] ])
64
+
65
+ puts "whole process took #{Time.now - launched} s"
66
+ puts "workitem reached first participant after #{reached - launched} s"
67
+ puts "seen #{count} workitems"
68
+ puts "#{N} branches"
69
+
70
+ engine.stop
71
+
@@ -0,0 +1,54 @@
1
+
2
+ #
3
+ # Testing Ruote (OpenWFEru)
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Aug 3 17:17:13 JST 2009
8
+ #
9
+
10
+ require 'benchmark'
11
+ require 'rubygems'
12
+
13
+ require File.dirname(__FILE__) + '/../path_helper'
14
+ require File.dirname(__FILE__) + '/../functional/engine_helper'
15
+
16
+ require 'ruote/log/test_logger'
17
+ require 'ruote/part/hash_participant'
18
+
19
+ N = 1000
20
+ #N = 100
21
+
22
+ ac = {
23
+ #:definition_in_launchitem_allowed => true
24
+ }
25
+
26
+ engine = determine_engine_class(ac).new(ac)
27
+
28
+ pdef = Ruote.process_definition :name => 'test' do
29
+ alpha
30
+ end
31
+
32
+ engine.register_participant :alpha, Ruote::HashParticipant
33
+
34
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
35
+
36
+ wfid = nil
37
+
38
+ b.report("launch #{N} processes") do
39
+ N.times { wfid = engine.launch(pdef) }
40
+ end
41
+
42
+ sleep 3
43
+
44
+ b.report("listing 1 process") do
45
+ engine.process(wfid)
46
+ end
47
+ b.report("listing #{N} processes") do
48
+ ps = engine.processes
49
+ p [ :wrong, ps.size ] if ps.size != N
50
+ end
51
+ end
52
+
53
+ #engine.shutdown
54
+
@@ -0,0 +1,37 @@
1
+
2
+ # a ruote launch benchmark, as discussed with @hassox
3
+ # http://ruote.rubyforge.org/irclogs/ruote_2010-10-20.txt
4
+
5
+ puts
6
+ puts RUBY_VERSION
7
+ puts
8
+
9
+ require 'rubygems'
10
+ require 'benchmark'
11
+ require 'fileutils'
12
+ require 'ruote' # gem install ruote
13
+ require 'ruote/storage/fs_storage'
14
+
15
+ FileUtils.rm_rf('bench')
16
+
17
+ engine = Ruote::Engine.new(Ruote::FsStorage.new('bench'))
18
+
19
+ pdef = Ruote.process_definition do
20
+ alpha :task => 'walk the dog'
21
+ alpha :task => 'walk the dog'
22
+ alpha :task => 'walk the dog'
23
+ alpha :task => 'walk the dog'
24
+ alpha :task => 'walk the dog'
25
+ alpha :task => 'walk the dog'
26
+ alpha :task => 'walk the dog'
27
+ alpha :task => 'walk the dog'
28
+ alpha :task => 'walk the dog'
29
+ alpha :task => 'walk the dog'
30
+ end
31
+
32
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
33
+ b.report('1000 launches') do
34
+ 1000.times { engine.launch(pdef) }
35
+ end
36
+ end
37
+
@@ -0,0 +1,97 @@
1
+
2
+ #
3
+ # Testing Ruote (OpenWFEru)
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 'benchmark'
13
+ require 'rubygems'
14
+
15
+ require File.dirname(__FILE__) + '/../path_helper'
16
+ require File.dirname(__FILE__) + '/../functional/engine_helper'
17
+ require 'ruote/log/test_logger'
18
+
19
+ ac = {
20
+ #:definition_in_launchitem_allowed => true
21
+ }
22
+
23
+ engine = determine_engine_class(ac).new(ac)
24
+
25
+ #puts
26
+ #p engine.class
27
+ #puts
28
+
29
+ #N = 10_000
30
+ N = 1_000
31
+ #N = 100
32
+
33
+ $count = 0
34
+
35
+ engine.register_participant("count") do |workitem|
36
+ $count += 1
37
+ #print '.'
38
+ end
39
+
40
+ engine.add_service(:s_logger, Ruote::TestLogger)
41
+
42
+ Benchmark.benchmark(' ' * 20 + Benchmark::Tms::CAPTION, 20) do |bench|
43
+
44
+ bench.report('run') do
45
+ wfid = engine.launch(
46
+ Ruote.process_definition(:name => 'bm26c') {
47
+ sequence do
48
+ N.times do
49
+ #count
50
+ participant :ref => 'count'
51
+ end
52
+ end
53
+ }#, :wait_for => true)
54
+ )
55
+ engine.logger.wait_for([ [ :processes, :terminated, { :wfid => wfid } ] ])
56
+ end
57
+
58
+ end
59
+
60
+ puts
61
+
62
+ engine.stop
63
+
64
+ # N = 100
65
+
66
+ # Sat Jan 24 23:57:09 JST 2009
67
+ # ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
68
+ #
69
+ # OpenWFE::Engine
70
+ # user system total real
71
+ # 0.130000 0.010000 0.140000 ( 0.161848)
72
+ # jmettraux:ruote[test_redux]/$ ruby test/bm/load_26c.rb --fp
73
+ #
74
+ # OpenWFE::FilePersistedEngine
75
+ # user system total real
76
+ # 3.950000 0.220000 4.170000 ( 4.810950)
77
+ # jmettraux:ruote[test_redux]/$ ruby test/bm/load_26c.rb --cfp
78
+ #
79
+ # OpenWFE::CachedFilePersistedEngine
80
+ # user system total real
81
+ # 0.390000 0.030000 0.420000 ( 0.481701)
82
+ # jmettraux:ruote[test_redux]/$ ruby test/bm/load_26c.rb --tp
83
+ #
84
+ # OpenWFE::TokyoPersistedEngine (Tokyo Cabinet version 1.3.9 (503:1.0))
85
+ # user system total real
86
+ # 3.160000 0.060000 3.220000 ( 3.749696)
87
+
88
+ # Mon May 18 13:50:49 JST 2009
89
+ # ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9.6.0]
90
+ #
91
+ # using engine of class Ruote::Engine
92
+ #
93
+ # user system total real
94
+ # 0.010000 0.000000 0.010000 ( 0.010206)
95
+ #
96
+ # No participant/subprocess lookup...
97
+
@@ -0,0 +1,64 @@
1
+
2
+ $:.unshift('lib')
3
+
4
+ require 'rubygems'
5
+ require 'ruote/engine'
6
+ require 'ruote/worker'
7
+ require 'ruote/part/storage_participant'
8
+ require 'ruote/storage/hash_storage'
9
+ require 'ruote/storage/fs_storage'
10
+ require 'ruote/log/test_logger'
11
+
12
+ #opts = { 's_logger' => [ 'ruote/log/test_logger', 'Ruote::TestLogger' ] }
13
+ opts = {}
14
+
15
+ storage = if ARGV.include?('--fs')
16
+ #FileUtils.rm_rf('work_mega') if ARGV.include?('-e')
17
+ Ruote::FsStorage.new('work_mega', opts)
18
+ else
19
+ Ruote::HashStorage.new(opts)
20
+ end
21
+
22
+ p storage.class
23
+
24
+ if ARGV.include?('-e')
25
+ #
26
+ # engine and worker
27
+ #
28
+
29
+ puts "... engine + worker ..."
30
+
31
+ engine = Ruote::Engine.new(Ruote::Worker.new(storage))
32
+
33
+ engine.register_participant 'alpha', Ruote::StorageParticipant
34
+
35
+ start = Time.now
36
+
37
+ pdef = Ruote.process_definition :name => 'mega' do
38
+ #echo '/${f:index}/'
39
+ alpha :unless => '${f:index} == 2000'
40
+ end
41
+
42
+ wfid = nil
43
+
44
+ (1..2000).to_a.each_with_index do |i|
45
+ wfid = engine.launch(pdef, 'index' => i)
46
+ end
47
+
48
+ puts "took #{Time.now - start} seconds to launch"
49
+
50
+ #engine.context.worker.run_thread.join
51
+ engine.wait_for(wfid)
52
+
53
+ else
54
+ #
55
+ # pure worker
56
+ #
57
+
58
+ puts "... standalone worker ..."
59
+
60
+ worker = Ruote::Worker.new(storage)
61
+ worker.run
62
+
63
+ end
64
+
@@ -0,0 +1,31 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Fri Dec 18 19:19:07 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'functional', 'base')
9
+
10
+
11
+ class BmSeqThousandTest < Test::Unit::TestCase
12
+ include FunctionalBase
13
+
14
+ def test_empty_sequence
15
+
16
+ n = 100
17
+
18
+ pdef = Ruote.process_definition :name => 'test' do
19
+ sequence do
20
+ iterator :on => (1..n).to_a do
21
+ echo 'a'
22
+ end
23
+ end
24
+ end
25
+
26
+ noisy
27
+
28
+ assert_trace [ 'a' ] * n, pdef
29
+ end
30
+ end
31
+