ruote 0.9.18 → 0.9.19
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 +2 -0
- data/examples/about_state.rb +29 -29
- data/examples/bigflow.rb +9 -9
- data/examples/csv_weather.rb +4 -4
- data/examples/engine_template.rb +141 -129
- data/examples/flowtracing.rb +8 -8
- data/examples/homeworkreview.rb +15 -15
- data/examples/kotoba.rb +9 -9
- data/examples/mano_tracker.rb +63 -63
- data/examples/openwferu.rb +22 -20
- data/examples/quotereporter.rb +79 -79
- data/lib/openwfe/contextual.rb +72 -72
- data/lib/openwfe/def.rb +21 -21
- data/lib/openwfe/engine.rb +19 -19
- data/lib/openwfe/engine/engine.rb +578 -614
- data/lib/openwfe/engine/expool_methods.rb +144 -115
- data/lib/openwfe/engine/file_persisted_engine.rb +77 -77
- data/lib/openwfe/engine/participant_methods.rb +96 -96
- data/lib/openwfe/engine/status_methods.rb +271 -247
- data/lib/openwfe/engine/update_exp_methods.rb +69 -69
- data/lib/openwfe/exceptions.rb +25 -25
- data/lib/openwfe/expool/errorjournal.rb +334 -348
- data/lib/openwfe/expool/expool_pause_methods.rb +98 -0
- data/lib/openwfe/expool/expressionpool.rb +793 -800
- data/lib/openwfe/expool/expstorage.rb +284 -313
- data/lib/openwfe/expool/history.rb +193 -105
- data/lib/openwfe/expool/journal.rb +163 -163
- data/lib/openwfe/expool/journal_replay.rb +228 -228
- data/lib/openwfe/expool/parser.rb +178 -142
- data/lib/openwfe/{orest/exception.rb → expool/paused_error.rb} +49 -32
- data/lib/openwfe/expool/representation.rb +59 -59
- data/lib/openwfe/expool/threadedexpstorage.rb +137 -134
- data/lib/openwfe/expool/wfidgen.rb +289 -287
- data/lib/openwfe/expool/yamlexpstorage.rb +154 -154
- data/lib/openwfe/expressions/condition.rb +175 -168
- data/lib/openwfe/expressions/environment.rb +165 -165
- data/lib/openwfe/expressions/expressionmap.rb +135 -131
- data/lib/openwfe/expressions/fe_cancel.rb +68 -68
- data/lib/openwfe/expressions/fe_command.rb +190 -190
- data/lib/openwfe/expressions/fe_concurrence.rb +531 -531
- data/lib/openwfe/expressions/fe_cron.rb +152 -197
- data/lib/openwfe/expressions/fe_cursor.rb +152 -186
- data/lib/openwfe/expressions/fe_define.rb +118 -118
- data/lib/openwfe/expressions/fe_do.rb +109 -109
- data/lib/openwfe/expressions/fe_equals.rb +219 -219
- data/lib/openwfe/expressions/fe_filter.rb +98 -98
- data/lib/openwfe/expressions/fe_filter_definition.rb +122 -122
- data/lib/openwfe/expressions/fe_fqv.rb +203 -203
- data/lib/openwfe/expressions/fe_http.rb +212 -0
- data/lib/openwfe/expressions/fe_if.rb +214 -214
- data/lib/openwfe/expressions/fe_iterator.rb +91 -91
- data/lib/openwfe/expressions/fe_listen.rb +268 -268
- data/lib/openwfe/expressions/fe_losfor.rb +73 -73
- data/lib/openwfe/expressions/fe_misc.rb +343 -351
- data/lib/openwfe/expressions/fe_participant.rb +206 -206
- data/lib/openwfe/expressions/fe_reserve.rb +153 -142
- data/lib/openwfe/expressions/fe_save.rb +226 -226
- data/lib/openwfe/expressions/fe_sequence.rb +66 -56
- data/lib/openwfe/expressions/fe_set.rb +80 -80
- data/lib/openwfe/expressions/fe_sleep.rb +132 -125
- data/lib/openwfe/expressions/fe_step.rb +113 -111
- data/lib/openwfe/expressions/fe_subprocess.rb +139 -136
- data/lib/openwfe/expressions/fe_timeout.rb +74 -78
- data/lib/openwfe/expressions/fe_wait.rb +48 -49
- data/lib/openwfe/expressions/fe_when.rb +106 -106
- data/lib/openwfe/expressions/filter.rb +60 -60
- data/lib/openwfe/expressions/flowexpression.rb +618 -612
- data/lib/openwfe/expressions/iterator.rb +158 -158
- data/lib/openwfe/expressions/merge.rb +53 -53
- data/lib/openwfe/expressions/raw.rb +396 -397
- data/lib/openwfe/expressions/rprocdef.rb +261 -266
- data/lib/openwfe/expressions/time.rb +238 -243
- data/lib/openwfe/expressions/timeout.rb +135 -135
- data/lib/openwfe/expressions/value.rb +55 -55
- data/lib/openwfe/extras/engine/db_persisted_engine.rb +94 -0
- data/lib/openwfe/extras/expool/dberrorjournal.rb +189 -0
- data/lib/openwfe/extras/expool/dbexpstorage.rb +355 -0
- data/lib/openwfe/extras/expool/dbhistory.rb +135 -0
- data/lib/openwfe/extras/listeners/sqslisteners.rb +146 -0
- data/lib/openwfe/extras/misc/activityfeed.rb +264 -0
- data/lib/openwfe/extras/misc/basecamp.rb +485 -0
- data/lib/openwfe/extras/participants/activeparticipants.rb +749 -0
- data/lib/openwfe/extras/participants/atomfeed_participants.rb +173 -0
- data/lib/openwfe/extras/participants/atompub_participants.rb +267 -0
- data/lib/openwfe/extras/participants/basecamp_participants.rb +87 -0
- data/lib/openwfe/extras/participants/csvparticipants.rb +127 -0
- data/lib/openwfe/extras/participants/sqsparticipants.rb +125 -0
- data/lib/openwfe/extras/participants/twitterparticipants.rb +176 -0
- data/lib/openwfe/filterdef.rb +191 -191
- data/lib/openwfe/flowexpressionid.rb +271 -269
- data/lib/openwfe/listeners/listener.rb +61 -61
- data/lib/openwfe/listeners/listeners.rb +81 -81
- data/lib/openwfe/listeners/socketlisteners.rb +189 -189
- data/lib/openwfe/logging.rb +74 -74
- data/lib/openwfe/omixins.rb +55 -54
- data/lib/openwfe/orest/definitions.rb +90 -90
- data/lib/openwfe/orest/osocket.rb +91 -91
- data/lib/openwfe/orest/xmlcodec.rb +471 -459
- data/lib/openwfe/participants.rb +19 -19
- data/lib/openwfe/participants/enoparticipants.rb +187 -187
- data/lib/openwfe/participants/participant.rb +100 -100
- data/lib/openwfe/participants/participantmap.rb +170 -170
- data/lib/openwfe/participants/participants.rb +316 -316
- data/lib/openwfe/participants/soapparticipants.rb +90 -90
- data/lib/openwfe/participants/socketparticipants.rb +143 -143
- data/lib/openwfe/participants/storeparticipants.rb +198 -198
- data/lib/openwfe/rexml.rb +44 -0
- data/lib/openwfe/rudefinitions.rb +87 -91
- data/lib/openwfe/service.rb +65 -65
- data/lib/openwfe/storage/yamlcustom.rb +71 -71
- data/lib/openwfe/storage/yamlfilestorage.rb +190 -190
- data/lib/openwfe/tools/flowtracer.rb +41 -45
- data/lib/openwfe/util/dollar.rb +125 -139
- data/lib/openwfe/util/irb.rb +42 -42
- data/lib/openwfe/util/observable.rb +93 -99
- data/lib/openwfe/util/ometa.rb +36 -36
- data/lib/openwfe/util/treechecker.rb +122 -0
- data/lib/openwfe/util/workqueue.rb +73 -73
- data/lib/openwfe/util/xml.rb +285 -279
- data/lib/openwfe/utils.rb +415 -442
- data/lib/openwfe/version.rb +1 -1
- data/lib/openwfe/workitem.rb +444 -437
- data/lib/openwfe/worklist/oldrest.rb +161 -161
- data/lib/openwfe/worklist/storelocks.rb +218 -218
- data/lib/openwfe/worklist/storeparticipant.rb +19 -19
- data/lib/openwfe/worklist/worklist.rb +223 -223
- data/test/back_0916_test.rb +57 -59
- data/test/bm/bm_1_xml_vs_prog.rb +25 -22
- data/test/bm/bm_2_step.rb +81 -81
- data/test/bm/ft_0f_5ms.rb +13 -13
- data/test/bm/ft_26_load.rb +177 -179
- data/test/bm/ft_26b_load.rb +57 -59
- data/test/bm/ft_26c_load.rb +70 -65
- data/test/bm/ft_recu.rb +51 -51
- data/test/clone_test.rb +145 -99
- data/test/concurrence_test.rb +41 -41
- data/test/condition_test.rb +104 -90
- data/test/description_test.rb +46 -45
- data/test/eno_test.rb +36 -36
- data/test/expmap_test.rb +26 -26
- data/test/extras/README.txt +5 -0
- data/test/extras/active_connection.rb +48 -0
- data/test/extras/active_with_engine_test.rb +140 -0
- data/test/extras/activityfeed_test.rb +85 -0
- data/test/extras/ap_0_test.rb +287 -0
- data/test/extras/ap_1_test.rb +53 -0
- data/test/extras/ap_test_base.rb +24 -0
- data/test/extras/atomfeedp_test.rb +113 -0
- data/test/extras/atompubp_test.rb +91 -0
- data/test/extras/basecamp_test.rb +53 -0
- data/test/extras/db_errorjournal_utest.rb +75 -0
- data/test/extras/db_expstorage_utest.rb +171 -0
- data/test/extras/db_history_0_test.rb +58 -0
- data/test/extras/ft_19_csv.rb +58 -0
- data/test/extras/ft_71_b14008.rb +85 -0
- data/test/extras/sqs_test.rb +57 -0
- data/test/extras/twitter_test.rb +62 -0
- data/test/fe_lookup_att_test.rb +41 -41
- data/test/fei_test.rb +131 -131
- data/test/file_persisted_engine_test.rb +30 -30
- data/test/file_persistence_test.rb +112 -111
- data/test/filep_cancel_test.rb +58 -58
- data/test/filter_test.rb +67 -67
- data/test/flowtestbase.rb +207 -219
- data/test/ft_0.rb +35 -35
- data/test/ft_0b_sequence.rb +15 -15
- data/test/ft_0c_testname.rb +12 -12
- data/test/ft_0d_participant.rb +9 -9
- data/test/ft_0e_multibody.rb +11 -11
- data/test/ft_10_loop.rb +103 -104
- data/test/ft_11_ppd.rb +285 -289
- data/test/ft_11b_ppd.rb +26 -26
- data/test/ft_12_blockparticipant.rb +57 -57
- data/test/ft_13_eno.rb +31 -31
- data/test/ft_14_subprocess.rb +45 -45
- data/test/ft_14b_subprocess.rb +107 -107
- data/test/ft_14c_subprocess.rb +33 -33
- data/test/ft_15_iterator.rb +127 -127
- data/test/ft_15b_iterator.rb +41 -41
- data/test/ft_16_fqv.rb +44 -44
- data/test/ft_17_condition.rb +48 -48
- data/test/ft_18_pname.rb +26 -26
- data/test/ft_1_unset.rb +140 -140
- data/test/ft_1b_unset.rb +17 -17
- data/test/ft_20_cron.rb +33 -33
- data/test/ft_21_cron.rb +51 -51
- data/test/ft_21b_cron_pause.rb +41 -41
- data/test/ft_22_history.rb +45 -41
- data/test/ft_23_when.rb +51 -51
- data/test/ft_23b_when.rb +43 -43
- data/test/ft_23c_wait.rb +48 -48
- data/test/ft_23d_cww.rb +28 -28
- data/test/ft_24_def.rb +15 -15
- data/test/ft_25_cancel.rb +57 -54
- data/test/ft_27_getflowpos.rb +79 -83
- data/test/ft_28_fileparticipant.rb +25 -25
- data/test/ft_29_httprb.rb +57 -57
- data/test/ft_2_concurrence.rb +99 -97
- data/test/ft_2b_concurrence.rb +132 -132
- data/test/ft_2c_concurrence.rb +37 -37
- data/test/ft_30_socketlistener.rb +133 -133
- data/test/ft_31_flowname.rb +15 -16
- data/test/ft_32_journal.rb +48 -48
- data/test/ft_32c_journal.rb +54 -54
- data/test/ft_32d_journal.rb +43 -46
- data/test/ft_33_description.rb +62 -62
- data/test/ft_34_cancelwfid.rb +37 -37
- data/test/ft_35_localdefs.rb +36 -34
- data/test/ft_36_subprocids.rb +61 -61
- data/test/ft_37_pnames.rb +33 -33
- data/test/ft_38_tag.rb +82 -82
- data/test/ft_38b_tag.rb +97 -97
- data/test/ft_38c_tag.rb +50 -50
- data/test/ft_38d_tag.rb +53 -0
- data/test/ft_39_reserve.rb +33 -33
- data/test/ft_39b_reserve.rb +59 -59
- data/test/ft_3_equals.rb +131 -131
- data/test/ft_3b_lookup_vf.rb +43 -43
- data/test/ft_40_defined.rb +33 -33
- data/test/ft_41_case.rb +80 -80
- data/test/ft_42_environments.rb +48 -48
- data/test/ft_43_pat10.rb +51 -51
- data/test/ft_44_save.rb +37 -37
- data/test/ft_44b_restore.rb +151 -151
- data/test/ft_45_citerator.rb +149 -149
- data/test/ft_45b_citerator.rb +77 -0
- data/test/ft_46_pparams.rb +27 -27
- data/test/ft_47_filter.rb +100 -100
- data/test/ft_48_fe_filter.rb +41 -41
- data/test/ft_49_condition.rb +101 -94
- data/test/ft_4_misc.rb +185 -190
- data/test/ft_50_xml_attribute.rb +101 -104
- data/test/ft_51_stack.rb +30 -30
- data/test/ft_52_obs_participant.rb +73 -73
- data/test/ft_53_null_noop_participant.rb +31 -31
- data/test/ft_54_listen.rb +183 -183
- data/test/ft_54b_listen.rb +32 -32
- data/test/ft_54c_listen.rb +60 -60
- data/test/ft_55_ptimeout.rb +29 -30
- data/test/ft_56_timeout.rb +29 -29
- data/test/ft_57_a.rb +105 -102
- data/test/ft_58_ejournal.rb +83 -80
- data/test/ft_58b_ejournal.rb +82 -0
- data/test/ft_59_ps.rb +148 -86
- data/test/ft_5_time.rb +77 -77
- data/test/ft_60_ecancel.rb +98 -98
- data/test/ft_61_elsub.rb +23 -23
- data/test/ft_62_procparticipant.rb +46 -46
- data/test/ft_63_pause.rb +82 -69
- data/test/ft_64_alias.rb +56 -57
- data/test/ft_65_stringlaunch.rb +29 -29
- data/test/ft_66_subforget.rb +42 -42
- data/test/ft_67_schedlaunch.rb +58 -59
- data/test/ft_68_ifparticipant.rb +39 -39
- data/test/ft_69_cancelmissing.rb +23 -21
- data/test/ft_6_lambda.rb +37 -37
- data/test/ft_70_lookupvar.rb +25 -25
- data/test/ft_71_log.rb +35 -35
- data/test/ft_72_lookup_processes.rb +43 -40
- data/test/ft_73_cancel_sub.rb +79 -79
- data/test/ft_74_block_and_workitem_dup.rb +42 -42
- data/test/ft_75_ruby_attributes.rb +53 -51
- data/test/ft_76_merge_isolate.rb +57 -57
- data/test/ft_77_segments.rb +13 -13
- data/test/ft_78_eval.rb +94 -94
- data/test/ft_79_tticket.rb +79 -79
- data/test/ft_79b_tticket.rb +73 -73
- data/test/ft_79c_outcome.rb +36 -36
- data/test/ft_7_lose.rb +73 -73
- data/test/ft_7b_lose.rb +49 -49
- data/test/ft_80_spname.rb +65 -65
- data/test/ft_81_exp.rb +30 -30
- data/test/ft_82_trecu.rb +30 -24
- data/test/ft_83_badpause.rb +35 -35
- data/test/ft_84_updateexp.rb +118 -118
- data/test/ft_84b_subrepr.rb +72 -0
- data/test/ft_85_dolhash.rb +18 -18
- data/test/ft_86_dollar_fv.rb +33 -33
- data/test/ft_87_define.rb +47 -47
- data/test/ft_88_http.rb +100 -0
- data/test/ft_8_forget.rb +25 -25
- data/test/ft_9_cursor.rb +119 -110
- data/test/ft_9b_cursor.rb +70 -70
- data/test/ft_tests.rb +6 -0
- data/test/hash_test.rb +52 -34
- data/test/hparticipant_test.rb +92 -88
- data/test/lookup_att_test.rb +70 -70
- data/test/lookup_vf_test.rb +52 -52
- data/test/misc_test.rb +55 -51
- data/test/obs_test.rb +82 -82
- data/test/param_test.rb +181 -181
- data/test/participant_test.rb +46 -46
- data/test/pending.rb +12 -12
- data/test/ps_representation.rb +70 -70
- data/test/rake_ltest.rb +2 -2
- data/test/rake_qtest.rb +11 -11
- data/test/raw_prog_test.rb +303 -308
- data/test/restart_cron_test.rb +74 -74
- data/test/restart_paused_test.rb +52 -47
- data/test/restart_sleep_test.rb +80 -80
- data/test/restart_when_test.rb +64 -64
- data/test/ruby_procdef_test.rb +71 -71
- data/test/rutest_utils.rb +32 -32
- data/test/sec_test.rb +143 -142
- data/test/slock_test.rb +41 -41
- data/test/storage_test.rb +15 -15
- data/test/timeout_test.rb +53 -53
- data/test/treechecker_test.rb +111 -0
- data/test/util_xml_test.rb +57 -57
- data/test/wfid_test.rb +93 -93
- data/test/wi_test.rb +58 -58
- metadata +64 -19
- data/examples/scheduler_cron_usage.rb +0 -48
- data/examples/scheduler_usage.rb +0 -56
- data/lib/openwfe/orest/controlclient.rb +0 -119
- data/lib/openwfe/orest/oldrestservlet.rb +0 -279
- data/lib/openwfe/orest/restclient.rb +0 -176
- data/lib/openwfe/orest/workitem.rb +0 -206
- data/lib/openwfe/orest/worklistclient.rb +0 -272
- data/test/bm/ft_26d_load.rb +0 -97
- data/test/ft_59b_ps_for_pat.rb +0 -58
- data/test/ft_64_clone.rb +0 -69
- data/test/orest_test.rb +0 -251
data/test/back_0916_test.rb
CHANGED
@@ -17,95 +17,93 @@ require 'openwfe/engine/file_persisted_engine'
|
|
17
17
|
|
18
18
|
class Back0916Test < Test::Unit::TestCase
|
19
19
|
|
20
|
-
|
20
|
+
WORK = 'work_back'
|
21
21
|
|
22
|
-
|
22
|
+
def setup
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
FileUtils.rm_rf WORK
|
25
|
+
FileUtils.mkdir WORK
|
26
26
|
|
27
|
-
|
27
|
+
`cd work_back && tar xzvf ../test/expool_20031219_0916.tgz`
|
28
28
|
|
29
|
-
|
29
|
+
ac = { :work_directory => WORK }
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
@engine = OpenWFE::FilePersistedEngine.new ac
|
32
|
+
end
|
33
33
|
|
34
|
-
|
34
|
+
def teardown
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
$OWFE_LOG.level = Logger::INFO
|
37
|
+
FileUtils.rm_rf WORK
|
38
|
+
end
|
39
39
|
|
40
|
-
|
40
|
+
def test_0
|
41
41
|
|
42
|
-
|
42
|
+
$OWFE_LOG.level = Logger::DEBUG
|
43
43
|
|
44
|
-
|
44
|
+
trace = []
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
@engine.register_participant :alpha do
|
47
|
+
trace << :alpha
|
48
|
+
end
|
49
49
|
|
50
|
-
|
50
|
+
@engine.reload
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
ps = @engine.process_status '20080212-moshijuzuke' # an XML process
|
53
|
+
#p ps.expressions.collect { |e| e.fei.to_s }
|
54
|
+
exp = ps.expressions.first
|
55
|
+
wi = exp.applied_workitem
|
56
|
+
wi.message = "back from obsolesence"
|
57
57
|
|
58
|
-
|
58
|
+
@engine.reply wi
|
59
59
|
|
60
|
-
|
60
|
+
sleep 0.350
|
61
61
|
|
62
|
-
|
62
|
+
assert_equal [ :alpha ], trace
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
ps = @engine.process_status '20080212-moshijuzuke'
|
65
|
+
#puts ps.size
|
66
|
+
#puts ps.collect { |e| e.fei.to_s }.join("\n")
|
67
67
|
|
68
|
-
|
68
|
+
assert_nil ps
|
69
69
|
|
70
|
-
|
70
|
+
@engine.stop
|
71
71
|
|
72
|
-
|
73
|
-
|
72
|
+
sleep 0.300
|
73
|
+
end
|
74
74
|
|
75
|
-
|
75
|
+
def test_1
|
76
76
|
|
77
|
-
|
77
|
+
$OWFE_LOG.level = Logger::DEBUG
|
78
78
|
|
79
|
-
|
79
|
+
trace = []
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
end
|
81
|
+
#@engine.register_participant :employee do
|
82
|
+
# trace << :assistant
|
83
|
+
#end
|
84
|
+
#@engine.register_participant :employee do
|
85
|
+
# trace << :employee
|
86
|
+
#end
|
87
|
+
[ :user_bob, :user_alice ].each do |p|
|
88
|
+
@engine.register_participant(p) { trace << p }
|
89
|
+
end
|
92
90
|
|
93
|
-
|
91
|
+
@engine.reload
|
94
92
|
|
95
|
-
|
96
|
-
|
97
|
-
|
93
|
+
ps = @engine.process_status '20080213-depejetzube' # a ruby procdef
|
94
|
+
exp = ps.expressions.first
|
95
|
+
wi = exp.applied_workitem
|
98
96
|
|
99
|
-
|
97
|
+
@engine.reply wi
|
100
98
|
|
101
|
-
|
99
|
+
sleep 0.400
|
102
100
|
|
103
|
-
|
101
|
+
assert_equal [ :user_bob, :user_bob ], trace
|
104
102
|
|
105
|
-
|
103
|
+
assert_nil @engine.process_status('20080213-depejetzube')
|
106
104
|
|
107
|
-
|
105
|
+
@engine.stop
|
108
106
|
|
109
|
-
|
110
|
-
|
107
|
+
sleep 0.300
|
108
|
+
end
|
111
109
|
end
|
data/test/bm/bm_1_xml_vs_prog.rb
CHANGED
@@ -7,50 +7,53 @@
|
|
7
7
|
|
8
8
|
require 'benchmark'
|
9
9
|
|
10
|
+
require 'rubygems'
|
11
|
+
|
10
12
|
require 'openwfe/def'
|
11
13
|
#require 'openwfe/engine/engine'
|
12
14
|
require 'openwfe/engine/file_persisted_engine'
|
13
15
|
|
14
16
|
|
15
17
|
class ProgDef < OpenWFE::ProcessDefinition
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
sequence do
|
19
|
+
toto
|
20
|
+
toto
|
21
|
+
toto
|
22
|
+
toto
|
23
|
+
toto
|
24
|
+
end
|
23
25
|
end
|
24
26
|
|
25
27
|
xml = <<END
|
26
28
|
<process-definition name="x" revision="y">
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
<sequence>
|
30
|
+
<toto/>
|
31
|
+
<toto/>
|
32
|
+
<toto/>
|
33
|
+
<toto/>
|
34
|
+
<toto/>
|
35
|
+
</sequence>
|
34
36
|
</process-definition>
|
35
37
|
END
|
36
38
|
|
37
39
|
#$engine = OpenWFE::Engine.new
|
38
|
-
$engine = OpenWFE::FilePersistedEngine.new
|
40
|
+
$engine = OpenWFE::FilePersistedEngine.new(
|
41
|
+
:definition_in_launchitem_allowed => true)
|
39
42
|
|
40
43
|
$engine.register_participant "toto" do |workitem|
|
41
|
-
|
44
|
+
# do nothing
|
42
45
|
end
|
43
46
|
|
44
47
|
N = 500
|
45
48
|
|
46
49
|
def test (proc_def)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
50
|
+
N.times do
|
51
|
+
fei = $engine.launch proc_def
|
52
|
+
$engine.wait_for fei
|
53
|
+
end
|
51
54
|
end
|
52
55
|
|
53
56
|
Benchmark.bm do |x|
|
54
|
-
|
55
|
-
|
57
|
+
x.report("prog :") { test ProgDef }
|
58
|
+
x.report("xml :") { test xml.strip }
|
56
59
|
end
|
data/test/bm/bm_2_step.rb
CHANGED
@@ -15,95 +15,95 @@ require 'flowtestbase'
|
|
15
15
|
|
16
16
|
|
17
17
|
class FlowTestRecursion < Test::Unit::TestCase
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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."
|
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
|
77
68
|
end
|
69
|
+
end
|
70
|
+
define "step#{i}" do
|
71
|
+
step "stage#{i}"
|
72
|
+
end
|
78
73
|
end
|
79
74
|
|
80
|
-
#
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
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
|
87
95
|
sequence do
|
88
|
-
|
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
|
96
|
+
_print "stage#{i}"
|
99
97
|
end
|
98
|
+
end
|
100
99
|
end
|
100
|
+
end
|
101
101
|
|
102
|
-
|
102
|
+
def test_0
|
103
103
|
|
104
|
-
|
105
|
-
|
106
|
-
|
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
107
|
|
108
108
|
end
|
109
109
|
|
data/test/bm/ft_0f_5ms.rb
CHANGED
@@ -11,25 +11,25 @@ require 'flowtestbase'
|
|
11
11
|
|
12
12
|
|
13
13
|
class FlowTest0b < Test::Unit::TestCase
|
14
|
-
|
14
|
+
include FlowTestBase
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
#def setup
|
17
|
+
#end
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
#def teardown
|
20
|
+
#end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
22
|
+
class Test5ms < OpenWFE::ProcessDefinition
|
23
|
+
concurrence do
|
24
|
+
_print "a"
|
25
|
+
_print "b"
|
27
26
|
end
|
27
|
+
end
|
28
28
|
|
29
|
-
|
29
|
+
def test_0
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
dotest Test5ms, "a\nb"
|
32
|
+
end
|
33
33
|
|
34
34
|
end
|
35
35
|
|
data/test/bm/ft_26_load.rb
CHANGED
@@ -10,201 +10,199 @@
|
|
10
10
|
require 'flowtestbase'
|
11
11
|
require 'openwfe/def'
|
12
12
|
|
13
|
-
include OpenWFE
|
14
|
-
|
15
13
|
|
16
14
|
class FlowTest26c < Test::Unit::TestCase
|
17
|
-
|
15
|
+
include FlowTestBase
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
#def setup
|
18
|
+
#end
|
21
19
|
|
22
|
-
|
23
|
-
|
20
|
+
#def teardown
|
21
|
+
#end
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
#
|
24
|
+
# Test 0
|
25
|
+
#
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
class TestDefinition0 < ProcessDefinition
|
28
|
+
process_definition :name => "test0", :revision => "0" do
|
29
|
+
sequence do
|
30
|
+
count
|
31
|
+
count
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
#class TestDefinition0 < ProcessDefinition
|
36
|
+
# count
|
37
|
+
#end
|
38
|
+
|
39
|
+
#def xxxx_load_0
|
40
|
+
def test_load_0
|
41
|
+
|
42
|
+
map = {}
|
43
|
+
|
44
|
+
@engine.register_participant("count") do |workitem|
|
45
|
+
count = map[workitem.flow_id]
|
46
|
+
count = unless count
|
47
|
+
1
|
48
|
+
else
|
49
|
+
count + 1
|
50
|
+
end
|
51
|
+
map[workitem.flow_id] = count
|
36
52
|
end
|
37
|
-
#class TestDefinition0 < ProcessDefinition
|
38
|
-
# count
|
39
|
-
#end
|
40
53
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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)
|
54
|
+
n = 1000
|
55
|
+
|
56
|
+
n.times do |i|
|
57
|
+
li = LaunchItem.new(TestDefinition0)
|
58
|
+
li.flow_id = i
|
59
|
+
@engine.launch(li)
|
60
|
+
end
|
61
|
+
|
62
|
+
#while @engine.get_expression_storage.size > 1
|
63
|
+
# sleep 0.001
|
64
|
+
#end
|
65
|
+
@engine.join_until_idle
|
66
|
+
|
67
|
+
good = true
|
68
|
+
|
69
|
+
n.times do |i|
|
70
|
+
c = map[i]
|
71
|
+
if c == 2
|
72
|
+
#if c == 1
|
73
|
+
print "."
|
74
|
+
else
|
75
|
+
print c
|
76
|
+
good = false
|
77
|
+
end
|
111
78
|
end
|
112
79
|
|
80
|
+
#puts "\n__good ? #{good}"
|
81
|
+
assert good, "missing count"
|
113
82
|
|
83
|
+
# 100 in 1s (in memory engine)
|
84
|
+
# 1'000 in 14s (in memory engine)
|
85
|
+
# 10'000 in 143s (in memory engine)
|
86
|
+
# 1'000 in 31s (cache engine)
|
87
|
+
# 10'000 in 321s (cache engine)
|
88
|
+
# 1'000 in 113s (persistence only engine)
|
89
|
+
# 10'000 in 1173s (persistence only engine)
|
90
|
+
#
|
91
|
+
#
|
92
|
+
# ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.3]
|
114
93
|
#
|
115
|
-
#
|
94
|
+
# Machine Name: Mac
|
95
|
+
# Machine Model: MacBook2,1
|
96
|
+
# Processor Name: Intel Core 2 Duo
|
97
|
+
# Processor Speed: 2 GHz
|
98
|
+
# Number Of Processors: 1
|
99
|
+
# Total Number Of Cores: 2
|
100
|
+
# L2 Cache (per processor): 4 MB
|
101
|
+
# Memory: 2 GB
|
102
|
+
# Bus Speed: 667 MHz
|
103
|
+
|
104
|
+
# Thu Sep 13 15:38:46 JST 2007
|
116
105
|
#
|
106
|
+
# 100 in 3s (in memory engine)
|
107
|
+
# 1'000 in 85s (in memory engine)
|
108
|
+
# 10'000 in s (in memory engine)
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
#
|
113
|
+
# TEST 1
|
114
|
+
#
|
115
|
+
|
116
|
+
def xxxx_load_1
|
117
|
+
#def test_load_1
|
118
|
+
|
119
|
+
map = {}
|
120
|
+
|
121
|
+
@engine.register_participant("count") do |workitem|
|
122
|
+
count = map[workitem.flow_id]
|
123
|
+
count = unless count
|
124
|
+
1
|
125
|
+
else
|
126
|
+
count + 1
|
127
|
+
end
|
128
|
+
map[workitem.flow_id] = count
|
129
|
+
#puts "(#{workitem.flow_id} => #{map[workitem.flow_id]})"
|
130
|
+
end
|
117
131
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
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
|
-
#
|
132
|
+
n = 10000
|
133
|
+
|
134
|
+
n.times do |i|
|
135
|
+
|
136
|
+
#t = Thread.new do
|
137
|
+
# begin
|
138
|
+
# li = LaunchItem.new(TestDefinition0)
|
139
|
+
# li.flow_id = i
|
140
|
+
# @engine.launch(li)
|
141
|
+
# #print "."
|
142
|
+
# rescue Exception => e
|
143
|
+
# print "e"
|
144
|
+
# @engine.lwarn do
|
145
|
+
# "ft_26_test_1 exception...\n" +
|
146
|
+
# OpenWFE::exception_to_s(e)
|
147
|
+
# end
|
148
|
+
# end
|
149
|
+
#end
|
150
|
+
|
151
|
+
li = LaunchItem.new(TestDefinition0)
|
152
|
+
li.flow_id = i
|
153
|
+
|
154
|
+
fei, t = @engine.launch(li, true)
|
195
155
|
#
|
196
|
-
#
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
156
|
+
# async : true
|
157
|
+
|
158
|
+
t.join if i == n-1
|
159
|
+
end
|
160
|
+
|
161
|
+
sleep(1)
|
162
|
+
puts
|
163
|
+
|
164
|
+
good = true
|
165
|
+
|
166
|
+
n.times do |i|
|
167
|
+
|
168
|
+
c = map[i]
|
169
|
+
|
170
|
+
if c == 2
|
171
|
+
print "."
|
172
|
+
elsif c == nil
|
173
|
+
print "x"
|
174
|
+
good = false
|
175
|
+
else
|
176
|
+
print c
|
177
|
+
good = false
|
178
|
+
end
|
207
179
|
end
|
208
180
|
|
181
|
+
#puts "\n__good ? #{good}"
|
182
|
+
|
183
|
+
assert good, "missing count"
|
184
|
+
|
185
|
+
# 100 in 3s (in memory engine)
|
186
|
+
# 1'000 in 85s (in memory engine)
|
187
|
+
# 10'000 in s (in memory engine)
|
188
|
+
# 1'000 in 551s (cache engine)
|
189
|
+
# 10'000 in s (cache engine)
|
190
|
+
# 1'000 in s (persistence only engine)
|
191
|
+
# 10'000 in s (persistence only engine)
|
192
|
+
#
|
193
|
+
#
|
194
|
+
# ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.3]
|
195
|
+
#
|
196
|
+
# Machine Name: Mac
|
197
|
+
# Machine Model: MacBook2,1
|
198
|
+
# Processor Name: Intel Core 2 Duo
|
199
|
+
# Processor Speed: 2 GHz
|
200
|
+
# Number Of Processors: 1
|
201
|
+
# Total Number Of Cores: 2
|
202
|
+
# L2 Cache (per processor): 4 MB
|
203
|
+
# Memory: 2 GB
|
204
|
+
# Bus Speed: 667 MHz
|
205
|
+
end
|
206
|
+
|
209
207
|
end
|
210
208
|
|