openwferu 0.9.9 → 0.9.10

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 (55) hide show
  1. data/examples/kotoba.rb +22 -0
  2. data/lib/openwfe/engine/engine.rb +46 -10
  3. data/lib/openwfe/expool/expressionpool.rb +84 -71
  4. data/lib/openwfe/expool/history.rb +6 -2
  5. data/lib/openwfe/expool/journal.rb +9 -3
  6. data/lib/openwfe/expool/journal_replay.rb +8 -5
  7. data/lib/openwfe/expressions/fe_participant.rb +32 -1
  8. data/lib/openwfe/filterdef.rb +1 -1
  9. data/lib/openwfe/omixins.rb +70 -0
  10. data/lib/openwfe/participants/participantmap.rb +14 -1
  11. data/lib/openwfe/rest/definitions.rb +2 -1
  12. data/lib/openwfe/rest/xmlcodec.rb +56 -27
  13. data/lib/openwfe/util/kotoba.rb +2 -2
  14. data/lib/openwfe/util/workqueue.rb +177 -0
  15. data/lib/openwfe/utils.rb +52 -13
  16. data/lib/openwfe/version.rb +1 -1
  17. data/lib/openwfe/worklist/storeparticipant.rb +7 -4
  18. data/test/fei_test.rb +12 -1
  19. data/test/flowtestbase.rb +21 -8
  20. data/test/ft_0b_sequence.rb +6 -4
  21. data/test/ft_10_loop.rb +10 -5
  22. data/test/ft_10b_loop2.rb +5 -2
  23. data/test/ft_11_ppd.rb +12 -5
  24. data/test/ft_1_unset.rb +22 -13
  25. data/test/ft_23c_wait.rb +10 -6
  26. data/test/ft_25_cancel.rb +11 -5
  27. data/test/ft_27_getflowpos.rb +21 -4
  28. data/test/ft_28_fileparticipant.rb +1 -1
  29. data/test/ft_2c_concurrence.rb +8 -4
  30. data/test/ft_30_socketlistener.rb +8 -0
  31. data/test/ft_32_journal.rb +11 -2
  32. data/test/ft_34_cancelwfid.rb +4 -0
  33. data/test/ft_36_subprocids.rb +2 -1
  34. data/test/ft_37_pnames.rb +1 -1
  35. data/test/ft_38_tag.rb +5 -5
  36. data/test/ft_39_reserve.rb +1 -41
  37. data/test/ft_39b_reserve.rb +70 -0
  38. data/test/ft_40_defined.rb +2 -1
  39. data/test/ft_42_environments.rb +1 -2
  40. data/test/ft_45_citerator.rb +16 -4
  41. data/test/ft_46_pparams.rb +3 -0
  42. data/test/ft_49_condition.rb +2 -1
  43. data/test/ft_50_xml_attribute.rb +72 -3
  44. data/test/ft_51_stack.rb +58 -0
  45. data/test/ft_52_obs_participant.rb +127 -0
  46. data/test/ft_7b_lose.rb +5 -4
  47. data/test/ft_tests.rb +3 -0
  48. data/test/hparticipant_test.rb +21 -18
  49. data/test/misc_test.rb +9 -0
  50. data/test/param_test.rb +6 -0
  51. data/test/rake_test.rb +1 -0
  52. data/test/scheduler_test.rb +21 -0
  53. data/test/sec_test.rb +14 -27
  54. data/test/timeout_test.rb +6 -2
  55. metadata +8 -2
data/test/flowtestbase.rb CHANGED
@@ -20,6 +20,7 @@ require 'rutest_utils'
20
20
  include OpenWFE
21
21
 
22
22
 
23
+ #$SLEEP_TIME = 0.100
23
24
  $WORKFLOW_ENGINE_CLASS = Engine
24
25
 
25
26
  persistence = ENV["__persistence__"]
@@ -27,8 +28,10 @@ persistence = ENV["__persistence__"]
27
28
  require "openwfe/engine/file_persisted_engine" if persistence
28
29
 
29
30
  if persistence == "pure-persistence"
31
+ #$SLEEP_TIME = 0.999
30
32
  $WORKFLOW_ENGINE_CLASS = FilePersistedEngine
31
33
  elsif persistence == "cached-persistence"
34
+ #$SLEEP_TIME = 0.250
32
35
  $WORKFLOW_ENGINE_CLASS = CachedFilePersistedEngine
33
36
  end
34
37
 
@@ -37,7 +40,6 @@ puts
37
40
  puts "testing with engine of class " + $WORKFLOW_ENGINE_CLASS.to_s
38
41
  puts
39
42
 
40
- #class FlowTestBase < Test::Unit::TestCase
41
43
  module FlowTestBase
42
44
 
43
45
  attr_reader \
@@ -86,10 +88,6 @@ module FlowTestBase
86
88
  @engine.stop if @engine
87
89
  end
88
90
 
89
- #def default_test ()
90
- # assert true
91
- #end
92
-
93
91
  protected
94
92
 
95
93
  def print_exp_list (l)
@@ -123,14 +121,29 @@ module FlowTestBase
123
121
 
124
122
  fei = @engine.launch(li)
125
123
 
126
- #sleep(sleep_time)
127
- @engine.get_scheduler.join_until_no_more_jobs if join
124
+ #if join == true
125
+ # @engine.get_scheduler.join_until_no_more_jobs
126
+ #elsif join.is_a?(Numeric)
127
+ # sleep join
128
+ #end
129
+ #if join.is_a?(Numeric)
130
+ # sleep join
131
+ #elsif join == true
132
+ # @engine.wait_for_engine
133
+ #else
134
+ # sleep $SLEEP_TIME
135
+ #end
136
+ if join.is_a?(Numeric)
137
+ sleep join
138
+ else
139
+ @engine.wait_for fei
140
+ end
128
141
 
129
142
  trace = @tracer.to_s
130
143
 
131
144
  #puts "...'#{trace}' ?= '#{expectedTrace}'"
132
145
 
133
- if expectedTrace.kind_of? [].class
146
+ if expectedTrace.kind_of?(Array)
134
147
 
135
148
  result = false
136
149
  expectedTrace.each do |etrace|
@@ -20,14 +20,16 @@ class FlowTest0b < Test::Unit::TestCase
20
20
  #end
21
21
 
22
22
  def test_sequence
23
- dotest(\
24
- '''<process-definition name="n" revision="0">
23
+ dotest(
24
+ '''
25
+ <process-definition name="n" revision="0">
25
26
  <sequence>
26
27
  <print>a</print>
27
28
  <print>b</print>
28
29
  </sequence>
29
- </process-definition>''', '''a
30
- b''')
30
+ </process-definition>
31
+ '''.strip,
32
+ "a\nb")
31
33
  end
32
34
 
33
35
  end
data/test/ft_10_loop.rb CHANGED
@@ -42,7 +42,8 @@ class FlowTest10 < Test::Unit::TestCase
42
42
  </loop>
43
43
  </sequence>
44
44
  </process-definition>''',
45
- $s)
45
+ $s,
46
+ true)
46
47
  end
47
48
 
48
49
  #def xxxx_loop_1
@@ -60,7 +61,8 @@ class FlowTest10 < Test::Unit::TestCase
60
61
  </loop>
61
62
  </sequence>
62
63
  </process-definition>''',
63
- $s)
64
+ $s,
65
+ true)
64
66
  end
65
67
 
66
68
  #def xxxx_loop_2
@@ -76,7 +78,8 @@ class FlowTest10 < Test::Unit::TestCase
76
78
  </loop>
77
79
  </sequence>
78
80
  </process-definition>''',
79
- $s)
81
+ $s,
82
+ true)
80
83
  end
81
84
 
82
85
  #def xxxx_loop_3
@@ -92,7 +95,8 @@ class FlowTest10 < Test::Unit::TestCase
92
95
  </loop>
93
96
  </sequence>
94
97
  </process-definition>''',
95
- $s)
98
+ $s,
99
+ true)
96
100
  end
97
101
 
98
102
  #def xxxx_loop_4
@@ -108,7 +112,8 @@ class FlowTest10 < Test::Unit::TestCase
108
112
  </loop>
109
113
  </sequence>
110
114
  </process-definition>''',
111
- $s)
115
+ $s,
116
+ true)
112
117
  end
113
118
 
114
119
  end
data/test/ft_10b_loop2.rb CHANGED
@@ -52,11 +52,14 @@ class FlowTest10b < Test::Unit::TestCase
52
52
 
53
53
  dotest(
54
54
  TestDefinition0,
55
- """0
55
+ """
56
+ 0
56
57
  1
57
58
  2
58
59
  3
59
- 4""")
60
+ 4
61
+ """.strip,
62
+ true)
60
63
  end
61
64
 
62
65
  end
data/test/ft_11_ppd.rb CHANGED
@@ -76,8 +76,11 @@ c""")
76
76
  #def xxxx_ppd_1
77
77
  dotest(
78
78
  TestDefinition1,
79
- """toto:nada
80
- ftoto:_nada__321""")
79
+ """
80
+ toto:nada
81
+ ftoto:_nada__321
82
+ """.strip,
83
+ true)
81
84
  end
82
85
 
83
86
 
@@ -104,7 +107,8 @@ ftoto:_nada__321""")
104
107
  #def xxxx_ppd_2
105
108
  dotest(
106
109
  TestDefinition2,
107
- "toto:nada")
110
+ "toto:nada",
111
+ true)
108
112
  end
109
113
 
110
114
 
@@ -189,8 +193,11 @@ end
189
193
 
190
194
  dotest(
191
195
  TestDefinition4,
192
- """a
193
- b""")
196
+ """
197
+ a
198
+ b
199
+ """.strip,
200
+ 0.300)
194
201
 
195
202
  assert \
196
203
  s == CODE4,
data/test/ft_1_unset.rb CHANGED
@@ -21,16 +21,19 @@ class FlowTest1 < Test::Unit::TestCase
21
21
 
22
22
  #def xxxx_unset_0
23
23
  def test_unset_0
24
- dotest(\
25
- '''<process-definition name="n" revision="0">
24
+ dotest(
25
+ '''
26
+ <process-definition name="n" revision="0">
26
27
  <sequence>
27
28
  <set variable="x" value="y" />
28
29
  <print>set ${x} ${v:x}</print>
29
30
  <unset variable="x" />
30
31
  <print>unset ${x} ${v:x}</print>
31
32
  </sequence>
32
- </process-definition>''', 'set y y
33
- unset')
33
+ </process-definition>
34
+ '''.strip,
35
+ "set y y\nunset",
36
+ true)
34
37
  end
35
38
 
36
39
  #def xxxx_unset_1
@@ -63,35 +66,41 @@ unset y')
63
66
 
64
67
  #def xxxx_unset_3
65
68
  def test_unset_3
66
- dotest(\
67
- '''<process-definition name="n" revision="0">
69
+ dotest(
70
+ '''
71
+ <process-definition name="n" revision="0">
68
72
  <sequence>
69
73
  <set variable="//x" value="y" />
70
74
  <print>set ${x}</print>
71
75
  <unset variable="//x" />
72
76
  <print>unset ${x}</print>
73
77
  </sequence>
74
- </process-definition>''', 'set y
75
- unset')
78
+ </process-definition>
79
+ '''.strip,
80
+ "set y\nunset",
81
+ true)
76
82
  end
77
83
 
78
84
  #def xxxx_unset_4
79
85
  def test_unset_4
80
- dotest(\
81
- '''<process-definition name="n" revision="0">
86
+ dotest(
87
+ '''
88
+ <process-definition name="n" revision="0">
82
89
  <sequence>
83
90
  <set variable="/x" value="y" />
84
91
  <print>set ${x}</print>
85
92
  <unset variable="x" />
86
93
  <print>unset ${x}</print>
87
94
  </sequence>
88
- </process-definition>''', 'set y
89
- unset')
95
+ </process-definition>
96
+ '''.strip,
97
+ "set y\nunset",
98
+ true)
90
99
  end
91
100
 
92
101
  #def xxxx_unset_5
93
102
  def test_unset_5
94
- dotest(\
103
+ dotest(
95
104
  '''<process-definition name="n" revision="0">
96
105
  <sequence>
97
106
  <set variable="/x" value="y" />
data/test/ft_23c_wait.rb CHANGED
@@ -45,10 +45,12 @@ class FlowTest23c < Test::Unit::TestCase
45
45
  def test_0
46
46
  dotest(
47
47
  Wait0c,
48
- """before done
48
+ """
49
+ before done
49
50
  after when
50
- over""",
51
- true)
51
+ over
52
+ """.strip,
53
+ 3)
52
54
  end
53
55
 
54
56
  #
@@ -77,10 +79,12 @@ over""",
77
79
  def test_1
78
80
  dotest(
79
81
  Wait1c,
80
- """before done
82
+ """
83
+ before done
81
84
  after when
82
- over""",
83
- true)
85
+ over
86
+ """.strip,
87
+ 4)
84
88
  end
85
89
 
86
90
  end
data/test/ft_25_cancel.rb CHANGED
@@ -24,15 +24,18 @@ class FlowTest25 < Test::Unit::TestCase
24
24
  # TEST 0
25
25
 
26
26
  def test_cancel_0
27
- dotest(\
28
- '''<process-definition name="25_cancel" revision="0">
27
+ dotest(
28
+ '''
29
+ <process-definition name="25_cancel" revision="0">
29
30
  <sequence>
30
31
  <print>before</print>
31
32
  <cancel-process/>
32
33
  <print>after</print>
33
34
  </sequence>
34
- </process-definition>''',
35
- "before")
35
+ </process-definition>
36
+ '''.strip,
37
+ "before",
38
+ 0.500)
36
39
  end
37
40
 
38
41
 
@@ -52,7 +55,10 @@ class FlowTest25 < Test::Unit::TestCase
52
55
  end
53
56
 
54
57
  def test_cancel_1
55
- dotest(TestDefinition1, "before")
58
+ dotest(
59
+ TestDefinition1,
60
+ "before",
61
+ 0.500)
56
62
  end
57
63
 
58
64
 
@@ -43,28 +43,43 @@ class FlowTest27 < Test::Unit::TestCase
43
43
 
44
44
  fei = @engine.launch(TestDefinition0)
45
45
 
46
+ sleep 0.500
47
+
46
48
  l = @engine.get_expression_pool.get_flow_position(fei.wfid)
47
49
 
48
50
  #print_exp_list(l)
49
51
 
50
- assert \
51
- l.size == 3,
52
- "get_flow_position() returned #{l.size} elements"
52
+ assert_equal \
53
+ l.size, 3, "get_flow_position() returned #{l.size} elements"
53
54
 
54
55
  wi = sp.first_workitem
55
56
 
56
57
  sp.forward(wi)
57
58
 
59
+ @engine.wait_for fei
60
+
58
61
  assert_equal sp.size, 0
59
62
  end
60
63
 
61
64
 
65
+ #
66
+ # TEST 0b
67
+
68
+ class Gfp27b < ProcessDefinition
69
+ sequence do
70
+ store_p
71
+ end
72
+ end
73
+
62
74
  #def xxxx_gfp_0b
63
75
  def test_gfp_0b
64
76
 
65
77
  sp = @engine.register_participant("store_p", OpenWFE::YamlParticipant)
66
78
 
67
- fei = @engine.launch(TestDefinition0)
79
+ #fei = @engine.launch TestDefinition0
80
+ fei = @engine.launch Gfp27b
81
+
82
+ sleep 0.500
68
83
 
69
84
  l = @engine.get_flow_position(fei.wfid)
70
85
  #
@@ -92,6 +107,8 @@ class FlowTest27 < Test::Unit::TestCase
92
107
 
93
108
  sp.forward(wi)
94
109
 
110
+ @engine.wait_for fei
111
+
95
112
  assert_equal sp.size, 0
96
113
  end
97
114
 
@@ -55,7 +55,7 @@ class FlowTest28 < Test::Unit::TestCase
55
55
  FileUtils.mv(path, "./work/in/")
56
56
  end
57
57
 
58
- sleep 0.7
58
+ sleep 2
59
59
 
60
60
  assert_equal \
61
61
  engine.get_expression_storage.size, 1
@@ -30,9 +30,10 @@ class FlowTest2c < Test::Unit::TestCase
30
30
  </concurrence>
31
31
  </process-definition>''',
32
32
  [ '''a
33
- b''', '''b
34
- a''' ],
35
- true)
33
+ b''',
34
+ '''b
35
+ a'''
36
+ ])
36
37
  end
37
38
 
38
39
 
@@ -53,7 +54,10 @@ a''' ],
53
54
  end
54
55
 
55
56
  def test_con_1
56
- dotest(TestCon2c1, "a\nc\nb", true)
57
+ dotest(
58
+ TestCon2c1,
59
+ "a\nc\nb",
60
+ 2)
57
61
  end
58
62
 
59
63
  end
@@ -58,6 +58,8 @@ class FlowTest30 < Test::Unit::TestCase
58
58
  #puts ">>>#{reply}<<<"
59
59
  assert (reply.match "^.fei .*0.$")
60
60
 
61
+ sleep 0.100
62
+
61
63
  trace = @tracer.to_s
62
64
 
63
65
  assert_equal trace, "ok"
@@ -87,6 +89,8 @@ class FlowTest30 < Test::Unit::TestCase
87
89
  #puts ">>>#{reply}<<<"
88
90
  assert (reply.match "^.fei .*0.$")
89
91
 
92
+ sleep 0.100
93
+
90
94
  trace = @tracer.to_s
91
95
 
92
96
  assert_equal trace, "ok1"
@@ -118,6 +122,8 @@ class FlowTest30 < Test::Unit::TestCase
118
122
  #puts ">>>#{reply}<<<"
119
123
  assert (reply.match "^.fei .*0.$")
120
124
 
125
+ sleep 0.100
126
+
121
127
  trace = @tracer.to_s
122
128
 
123
129
  assert_equal trace, "ok2"
@@ -164,6 +170,8 @@ class FlowTest30 < Test::Unit::TestCase
164
170
 
165
171
  trace = trace.strip
166
172
 
173
+ sleep 0.300
174
+
167
175
  assert_equal @tracer.to_s, trace
168
176
  end
169
177
 
@@ -50,13 +50,14 @@ class FlowTest32 < Test::Unit::TestCase
50
50
  @tracer << "bravo\n"
51
51
  end
52
52
 
53
- fei = dotest(TestDefinition0, "alpha\nbravo")
53
+ #fei = dotest(TestDefinition0, "alpha\nbravo")
54
+ fei = dotest(TestDefinition0, "alpha\nbravo", 0.250)
54
55
 
55
56
  journal_service = @engine.application_context["journal"]
56
57
 
57
58
  fn = journal_service.donedir + "/" + fei.wfid + ".journal"
58
59
 
59
- #journal_service.analyze fn
60
+ #puts journal_service.analyze fn
60
61
 
61
62
  #sleep(10)
62
63
 
@@ -68,6 +69,12 @@ class FlowTest32 < Test::Unit::TestCase
68
69
  #
69
70
  # flow waits
70
71
 
72
+ sleep 0.250
73
+
74
+ #puts
75
+ #puts @engine.get_expression_storage.to_s
76
+ #puts
77
+
71
78
  assert_equal @engine.get_expression_storage.size, 6
72
79
 
73
80
  journal_service.replay fn, 18, true
@@ -76,6 +83,8 @@ class FlowTest32 < Test::Unit::TestCase
76
83
  #
77
84
  # flow resumes
78
85
 
86
+ sleep 0.500
87
+
79
88
  assert_equal @engine.get_expression_storage.size, 1
80
89
  end
81
90
 
@@ -39,6 +39,8 @@ class FlowTest34 < Test::Unit::TestCase
39
39
 
40
40
  fei = @engine.launch(TestCancelWfid0)
41
41
 
42
+ sleep 0.500
43
+
42
44
  @engine.cancel_process(fei.wfid)
43
45
 
44
46
  l = @engine.list_processes()
@@ -56,6 +58,8 @@ class FlowTest34 < Test::Unit::TestCase
56
58
 
57
59
  fei = @engine.launch(TestCancelWfid0)
58
60
 
61
+ sleep 0.500
62
+
59
63
  @engine.cancel_process(fei.wfid)
60
64
 
61
65
  #l = @engine.list_processes()
@@ -87,7 +87,8 @@ class FlowTest36 < Test::Unit::TestCase
87
87
  end
88
88
 
89
89
  @engine.launch(TestIteratorSubId0)
90
- #puts @tracer
90
+
91
+ sleep 0.250
91
92
 
92
93
  assert_equal feis.keys.size, 2
93
94
  end
data/test/ft_37_pnames.rb CHANGED
@@ -48,7 +48,7 @@ class FlowTest37 < Test::Unit::TestCase
48
48
 
49
49
  dotest(DEF0, "sps\nsps_1")
50
50
 
51
- dotest(TestPnames1, "sps\nsps_1")
51
+ dotest(TestPnames1, "sps\nsps_1", true)
52
52
  end
53
53
 
54
54
  end
data/test/ft_38_tag.rb CHANGED
@@ -38,7 +38,7 @@ class FlowTest38 < Test::Unit::TestCase
38
38
 
39
39
  def test_tag_0
40
40
 
41
- dotest(TestTag0, "blah", true)
41
+ dotest(TestTag0, "blah")
42
42
  end
43
43
 
44
44
 
@@ -63,13 +63,13 @@ class FlowTest38 < Test::Unit::TestCase
63
63
 
64
64
  count = 0
65
65
 
66
- @engine.register_participant(:count) do
66
+ @engine.register_participant :count do
67
67
  count += 1
68
68
  end
69
69
 
70
- dotest(TestTag1, "blah\nhello", true)
70
+ dotest TestTag1, "blah\nhello", 2
71
71
 
72
- assert_equal count, 2
72
+ assert_equal count, 1
73
73
  end
74
74
 
75
75
 
@@ -97,7 +97,7 @@ class FlowTest38 < Test::Unit::TestCase
97
97
  count += 1
98
98
  end
99
99
 
100
- dotest(TestTag2, "hello\nblah", true)
100
+ dotest TestTag2, "hello\nblah", true
101
101
 
102
102
  assert_equal count, 1
103
103
  end
@@ -60,47 +60,7 @@ class FlowTest39 < Test::Unit::TestCase
60
60
  # Test 2
61
61
  #
62
62
 
63
- class TestReserve39a2 < ProcessDefinition
64
- #
65
- # doesn't prove it enough though...
66
- #
67
- concurrence do
68
- reserve :mutex => :toto do
69
- sequence do
70
- test_alpha
71
- test_bravo
72
- end
73
- end
74
- reserve :mutex => :toto do
75
- sequence do
76
- test_charly
77
- test_delta
78
- end
79
- end
80
- end
81
- end
82
-
83
- def test_2
84
-
85
- dotest(
86
- TestReserve39a2,
87
- [
88
- """
89
- test-charly
90
- test-delta
91
- test-alpha
92
- test-bravo
93
- """.strip,
94
- """
95
- test-alpha
96
- test-bravo
97
- test-charly
98
- test-delta
99
- """.strip,
100
- ],
101
- true)
102
- end
103
-
63
+ # moved to ft_39b_reserve.rb
104
64
 
105
65
  #
106
66
  # Test 3