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.
- data/README.txt +24 -0
- data/bin/validate-workflow.rb +89 -0
- data/examples/about_state.rb +81 -0
- data/examples/bigflow.rb +19 -0
- data/examples/csv_weather.rb +23 -0
- data/examples/engine_template.rb +247 -0
- data/examples/flowtracing.rb +24 -0
- data/examples/homeworkreview.rb +68 -0
- data/examples/kotoba.rb +22 -0
- data/examples/mano_tracker.rb +172 -0
- data/examples/openwferu.rb +58 -0
- data/examples/quotereporter.rb +157 -0
- data/examples/scheduler_cron_usage.rb +48 -0
- data/examples/scheduler_usage.rb +56 -0
- data/lib/openwfe.rb +41 -0
- data/lib/openwfe/contextual.rb +111 -0
- data/lib/openwfe/def.rb +46 -0
- data/lib/openwfe/engine.rb +37 -0
- data/lib/openwfe/engine/engine.rb +756 -0
- data/lib/openwfe/engine/expool_methods.rb +172 -0
- data/lib/openwfe/engine/file_persisted_engine.rb +105 -0
- data/lib/openwfe/engine/participant_methods.rb +133 -0
- data/lib/openwfe/engine/status_methods.rb +353 -0
- data/lib/openwfe/engine/update_exp_methods.rb +112 -0
- data/lib/openwfe/exceptions.rb +51 -0
- data/lib/openwfe/expool/errorjournal.rb +476 -0
- data/lib/openwfe/expool/expressionpool.rb +1144 -0
- data/lib/openwfe/expool/expstorage.rb +403 -0
- data/lib/openwfe/expool/history.rb +174 -0
- data/lib/openwfe/expool/journal.rb +224 -0
- data/lib/openwfe/expool/journal_replay.rb +321 -0
- data/lib/openwfe/expool/parser.rb +242 -0
- data/lib/openwfe/expool/representation.rb +121 -0
- data/lib/openwfe/expool/threadedexpstorage.rb +188 -0
- data/lib/openwfe/expool/wfidgen.rb +388 -0
- data/lib/openwfe/expool/yamlexpstorage.rb +224 -0
- data/lib/openwfe/expressions/condition.rb +244 -0
- data/lib/openwfe/expressions/environment.rb +246 -0
- data/lib/openwfe/expressions/expressionmap.rb +258 -0
- data/lib/openwfe/expressions/fe_cancel.rb +109 -0
- data/lib/openwfe/expressions/fe_command.rb +241 -0
- data/lib/openwfe/expressions/fe_concurrence.rb +662 -0
- data/lib/openwfe/expressions/fe_cron.rb +259 -0
- data/lib/openwfe/expressions/fe_cursor.rb +259 -0
- data/lib/openwfe/expressions/fe_define.rb +192 -0
- data/lib/openwfe/expressions/fe_do.rb +168 -0
- data/lib/openwfe/expressions/fe_equals.rb +291 -0
- data/lib/openwfe/expressions/fe_filter.rb +129 -0
- data/lib/openwfe/expressions/fe_filter_definition.rb +168 -0
- data/lib/openwfe/expressions/fe_fqv.rb +250 -0
- data/lib/openwfe/expressions/fe_if.rb +303 -0
- data/lib/openwfe/expressions/fe_iterator.rb +145 -0
- data/lib/openwfe/expressions/fe_listen.rb +371 -0
- data/lib/openwfe/expressions/fe_losfor.rb +111 -0
- data/lib/openwfe/expressions/fe_misc.rb +421 -0
- data/lib/openwfe/expressions/fe_participant.rb +269 -0
- data/lib/openwfe/expressions/fe_reserve.rb +212 -0
- data/lib/openwfe/expressions/fe_save.rb +274 -0
- data/lib/openwfe/expressions/fe_sequence.rb +117 -0
- data/lib/openwfe/expressions/fe_set.rb +139 -0
- data/lib/openwfe/expressions/fe_sleep.rb +166 -0
- data/lib/openwfe/expressions/fe_step.rb +159 -0
- data/lib/openwfe/expressions/fe_subprocess.rb +168 -0
- data/lib/openwfe/expressions/fe_timeout.rb +127 -0
- data/lib/openwfe/expressions/fe_wait.rb +78 -0
- data/lib/openwfe/expressions/fe_when.rb +142 -0
- data/lib/openwfe/expressions/filter.rb +104 -0
- data/lib/openwfe/expressions/flowexpression.rb +847 -0
- data/lib/openwfe/expressions/iterator.rb +221 -0
- data/lib/openwfe/expressions/merge.rb +84 -0
- data/lib/openwfe/expressions/raw.rb +547 -0
- data/lib/openwfe/expressions/rprocdef.rb +375 -0
- data/lib/openwfe/expressions/time.rb +333 -0
- data/lib/openwfe/expressions/timeout.rb +178 -0
- data/lib/openwfe/expressions/value.rb +126 -0
- data/lib/openwfe/filterdef.rb +259 -0
- data/lib/openwfe/flowexpressionid.rb +357 -0
- data/lib/openwfe/listeners/listener.rb +97 -0
- data/lib/openwfe/listeners/listeners.rb +139 -0
- data/lib/openwfe/listeners/socketlisteners.rb +272 -0
- data/lib/openwfe/logging.rb +122 -0
- data/lib/openwfe/omixins.rb +95 -0
- data/lib/openwfe/orest/controlclient.rb +119 -0
- data/lib/openwfe/orest/definitions.rb +113 -0
- data/lib/openwfe/orest/exception.rb +60 -0
- data/lib/openwfe/orest/oldrestservlet.rb +279 -0
- data/lib/openwfe/orest/osocket.rb +148 -0
- data/lib/openwfe/orest/restclient.rb +176 -0
- data/lib/openwfe/orest/workitem.rb +206 -0
- data/lib/openwfe/orest/worklistclient.rb +272 -0
- data/lib/openwfe/orest/xmlcodec.rb +670 -0
- data/lib/openwfe/participants.rb +38 -0
- data/lib/openwfe/participants/enoparticipants.rb +230 -0
- data/lib/openwfe/participants/participant.rb +141 -0
- data/lib/openwfe/participants/participantmap.rb +249 -0
- data/lib/openwfe/participants/participants.rb +407 -0
- data/lib/openwfe/participants/soapparticipants.rb +135 -0
- data/lib/openwfe/participants/socketparticipants.rb +202 -0
- data/lib/openwfe/participants/storeparticipants.rb +254 -0
- data/lib/openwfe/rudefinitions.rb +130 -0
- data/lib/openwfe/service.rb +103 -0
- data/lib/openwfe/storage/yamlcustom.rb +106 -0
- data/lib/openwfe/storage/yamlfilestorage.rb +245 -0
- data/lib/openwfe/tools/flowtracer.rb +81 -0
- data/lib/openwfe/util/dollar.rb +217 -0
- data/lib/openwfe/util/irb.rb +86 -0
- data/lib/openwfe/util/observable.rb +144 -0
- data/lib/openwfe/util/ometa.rb +62 -0
- data/lib/openwfe/util/workqueue.rb +124 -0
- data/lib/openwfe/util/xml.rb +418 -0
- data/lib/openwfe/utils.rb +554 -0
- data/lib/openwfe/version.rb +37 -0
- data/lib/openwfe/workitem.rb +499 -0
- data/lib/openwfe/worklist/oldrest.rb +244 -0
- data/lib/openwfe/worklist/storelocks.rb +293 -0
- data/lib/openwfe/worklist/storeparticipant.rb +44 -0
- data/lib/openwfe/worklist/worklist.rb +297 -0
- data/test/README.txt +27 -0
- data/test/back_0916_test.rb +111 -0
- data/test/bm/bm_1_xml_vs_prog.rb +56 -0
- data/test/bm/bm_2_step.rb +109 -0
- data/test/bm/ft_0f_5ms.rb +35 -0
- data/test/bm/ft_26_load.rb +210 -0
- data/test/bm/ft_26b_load.rb +86 -0
- data/test/bm/ft_26c_load.rb +97 -0
- data/test/bm/ft_26d_load.rb +97 -0
- data/test/bm/ft_recu.rb +71 -0
- data/test/clone_test.rb +122 -0
- data/test/concurrence_test.rb +77 -0
- data/test/condition_test.rb +155 -0
- data/test/console_test.rb +12 -0
- data/test/cron_ltest.rb +15 -0
- data/test/description_test.rb +87 -0
- data/test/eno_test.rb +76 -0
- data/test/expmap_test.rb +54 -0
- data/test/expool_20031219_0916.tgz +0 -0
- data/test/fe_lookup_att_test.rb +62 -0
- data/test/fei_test.rb +181 -0
- data/test/file_persisted_engine_test.rb +64 -0
- data/test/file_persistence_test.rb +134 -0
- data/test/filep_cancel_test.rb +123 -0
- data/test/filter_test.rb +109 -0
- data/test/flowtestbase.rb +351 -0
- data/test/ft_0.rb +68 -0
- data/test/ft_0b_sequence.rb +36 -0
- data/test/ft_0c_testname.rb +33 -0
- data/test/ft_0d_participant.rb +30 -0
- data/test/ft_0e_multibody.rb +34 -0
- data/test/ft_10_loop.rb +134 -0
- data/test/ft_11_ppd.rb +415 -0
- data/test/ft_11b_ppd.rb +54 -0
- data/test/ft_12_blockparticipant.rb +97 -0
- data/test/ft_13_eno.rb +52 -0
- data/test/ft_14_subprocess.rb +88 -0
- data/test/ft_14b_subprocess.rb +192 -0
- data/test/ft_14c_subprocess.rb +68 -0
- data/test/ft_15_iterator.rb +216 -0
- data/test/ft_15b_iterator.rb +74 -0
- data/test/ft_16_fqv.rb +73 -0
- data/test/ft_17_condition.rb +84 -0
- data/test/ft_18_pname.rb +56 -0
- data/test/ft_1_unset.rb +175 -0
- data/test/ft_1b_unset.rb +39 -0
- data/test/ft_20_cron.rb +53 -0
- data/test/ft_21_cron.rb +87 -0
- data/test/ft_21b_cron_pause.rb +82 -0
- data/test/ft_22_history.rb +74 -0
- data/test/ft_23_when.rb +77 -0
- data/test/ft_23b_when.rb +70 -0
- data/test/ft_23c_wait.rb +80 -0
- data/test/ft_23d_cww.rb +58 -0
- data/test/ft_24_def.rb +44 -0
- data/test/ft_25_cancel.rb +89 -0
- data/test/ft_27_getflowpos.rb +147 -0
- data/test/ft_28_fileparticipant.rb +63 -0
- data/test/ft_29_httprb.rb +106 -0
- data/test/ft_2_concurrence.rb +135 -0
- data/test/ft_2b_concurrence.rb +188 -0
- data/test/ft_2c_concurrence.rb +64 -0
- data/test/ft_30_socketlistener.rb +203 -0
- data/test/ft_31_flowname.rb +40 -0
- data/test/ft_32_journal.rb +91 -0
- data/test/ft_32c_journal.rb +102 -0
- data/test/ft_32d_journal.rb +84 -0
- data/test/ft_33_description.rb +107 -0
- data/test/ft_34_cancelwfid.rb +80 -0
- data/test/ft_35_localdefs.rb +75 -0
- data/test/ft_36_subprocids.rb +97 -0
- data/test/ft_37_pnames.rb +70 -0
- data/test/ft_38_tag.rb +127 -0
- data/test/ft_38b_tag.rb +161 -0
- data/test/ft_38c_tag.rb +100 -0
- data/test/ft_39_reserve.rb +63 -0
- data/test/ft_39b_reserve.rb +84 -0
- data/test/ft_3_equals.rb +170 -0
- data/test/ft_3b_lookup_vf.rb +83 -0
- data/test/ft_40_defined.rb +61 -0
- data/test/ft_41_case.rb +110 -0
- data/test/ft_42_environments.rb +75 -0
- data/test/ft_43_pat10.rb +85 -0
- data/test/ft_44_save.rb +70 -0
- data/test/ft_44b_restore.rb +212 -0
- data/test/ft_45_citerator.rb +214 -0
- data/test/ft_46_pparams.rb +62 -0
- data/test/ft_47_filter.rb +160 -0
- data/test/ft_48_fe_filter.rb +88 -0
- data/test/ft_49_condition.rb +126 -0
- data/test/ft_4_misc.rb +237 -0
- data/test/ft_50_xml_attribute.rb +155 -0
- data/test/ft_51_stack.rb +55 -0
- data/test/ft_52_obs_participant.rb +123 -0
- data/test/ft_53_null_noop_participant.rb +62 -0
- data/test/ft_54_listen.rb +288 -0
- data/test/ft_54b_listen.rb +66 -0
- data/test/ft_54c_listen.rb +99 -0
- data/test/ft_55_ptimeout.rb +59 -0
- data/test/ft_56_timeout.rb +59 -0
- data/test/ft_57_a.rb +145 -0
- data/test/ft_58_ejournal.rb +151 -0
- data/test/ft_59_ps.rb +150 -0
- data/test/ft_59b_ps_for_pat.rb +58 -0
- data/test/ft_5_time.rb +118 -0
- data/test/ft_60_ecancel.rb +161 -0
- data/test/ft_61_elsub.rb +51 -0
- data/test/ft_62_procparticipant.rb +71 -0
- data/test/ft_63_pause.rb +124 -0
- data/test/ft_64_alias.rb +102 -0
- data/test/ft_64_clone.rb +69 -0
- data/test/ft_65_stringlaunch.rb +59 -0
- data/test/ft_66_subforget.rb +70 -0
- data/test/ft_67_schedlaunch.rb +116 -0
- data/test/ft_68_ifparticipant.rb +70 -0
- data/test/ft_69_cancelmissing.rb +51 -0
- data/test/ft_6_lambda.rb +64 -0
- data/test/ft_70_lookupvar.rb +55 -0
- data/test/ft_71_log.rb +60 -0
- data/test/ft_72_lookup_processes.rb +76 -0
- data/test/ft_73_cancel_sub.rb +139 -0
- data/test/ft_74_block_and_workitem_dup.rb +63 -0
- data/test/ft_75_ruby_attributes.rb +87 -0
- data/test/ft_76_merge_isolate.rb +88 -0
- data/test/ft_77_segments.rb +35 -0
- data/test/ft_78_eval.rb +150 -0
- data/test/ft_79_tticket.rb +187 -0
- data/test/ft_79b_tticket.rb +172 -0
- data/test/ft_79c_outcome.rb +56 -0
- data/test/ft_7_lose.rb +104 -0
- data/test/ft_7b_lose.rb +78 -0
- data/test/ft_80_spname.rb +91 -0
- data/test/ft_81_exp.rb +60 -0
- data/test/ft_82_trecu.rb +46 -0
- data/test/ft_83_badpause.rb +58 -0
- data/test/ft_84_updateexp.rb +198 -0
- data/test/ft_85_dolhash.rb +43 -0
- data/test/ft_86_dollar_fv.rb +68 -0
- data/test/ft_87_define.rb +74 -0
- data/test/ft_8_forget.rb +44 -0
- data/test/ft_9_cursor.rb +145 -0
- data/test/ft_9b_cursor.rb +105 -0
- data/test/ft_tests.rb +124 -0
- data/test/hash_test.rb +75 -0
- data/test/hparticipant_test.rb +164 -0
- data/test/lookup_att_test.rb +90 -0
- data/test/lookup_vf_test.rb +94 -0
- data/test/misc_test.rb +90 -0
- data/test/nut_0_irb.rb +20 -0
- data/test/obs_test.rb +142 -0
- data/test/orest_test.rb +251 -0
- data/test/param_test.rb +290 -0
- data/test/participant_test.rb +101 -0
- data/test/pending.rb +23 -0
- data/test/ps_representation.rb +133 -0
- data/test/rake_ltest.rb +38 -0
- data/test/rake_qtest.rb +68 -0
- data/test/raw_prog_test.rb +412 -0
- data/test/restart_cron_test.rb +136 -0
- data/test/restart_paused_test.rb +98 -0
- data/test/restart_sleep_test.rb +140 -0
- data/test/restart_tests.rb +18 -0
- data/test/restart_when_test.rb +112 -0
- data/test/ruby_procdef_test.rb +132 -0
- data/test/rutest_utils.rb +63 -0
- data/test/sec_test.rb +205 -0
- data/test/slock_test.rb +80 -0
- data/test/storage_test.rb +44 -0
- data/test/test.rb +3 -0
- data/test/timeout_test.rb +105 -0
- data/test/util_xml_test.rb +112 -0
- data/test/wfid_test.rb +175 -0
- data/test/wi_test.rb +75 -0
- 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
|
+
|