weel 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/AUTHORS +2 -0
  2. data/COPYING +504 -0
  3. data/FEATURES +20 -0
  4. data/INSTALL +7 -0
  5. data/README +4 -0
  6. data/Rakefile +15 -0
  7. data/example/SimpleHandlerWrapper.rb +68 -0
  8. data/example/SimpleWorkflow.rb +15 -0
  9. data/example/runme.rb +12 -0
  10. data/lib/weel.rb +749 -0
  11. data/test/ContinueTest.rb +25 -0
  12. data/test/TestHandlerWrapper.rb +120 -0
  13. data/test/TestWorkflow.rb +35 -0
  14. data/test/basic/tc_choose.rb +82 -0
  15. data/test/basic/tc_codereplace.rb +38 -0
  16. data/test/basic/tc_data.rb +32 -0
  17. data/test/basic/tc_endpoint.rb +40 -0
  18. data/test/basic/tc_handler.rb +19 -0
  19. data/test/basic/tc_parallel.rb +115 -0
  20. data/test/basic/tc_search.rb +37 -0
  21. data/test/basic/tc_state.rb +17 -0
  22. data/test/basic/tc_wf_control.rb +68 -0
  23. data/test/complex/tc_generalsynchonizingmerge_loopsearch.rb +113 -0
  24. data/test/complex/tc_parallel_stop.rb +32 -0
  25. data/test/wfp_adv_branching/tc_generalizedjoin.rb +11 -0
  26. data/test/wfp_adv_branching/tc_generalsynchronizingmerge.rb +45 -0
  27. data/test/wfp_adv_branching/tc_localsynchronizingmerge.rb +37 -0
  28. data/test/wfp_adv_branching/tc_multichoice_structuredsynchronizingmerge.rb +47 -0
  29. data/test/wfp_adv_branching/tc_multimerge.rb +11 -0
  30. data/test/wfp_adv_branching/tc_structured_discriminator.rb +28 -0
  31. data/test/wfp_adv_branching/tc_structured_partial_join.rb +41 -0
  32. data/test/wfp_adv_branching/tc_threadmerge.rb +11 -0
  33. data/test/wfp_adv_branching/tc_threadsplit.rb +11 -0
  34. data/test/wfp_basic/tc_exclusivechoice_simplemerge.rb +22 -0
  35. data/test/wfp_basic/tc_parallelsplit_synchronization.rb +26 -0
  36. data/test/wfp_basic/tc_sequence.rb +16 -0
  37. data/test/wfp_iteration/tc_structuredloop.rb +65 -0
  38. data/test/wfp_state_based/tc_deferredchoice.rb +38 -0
  39. data/test/wfp_state_based/tc_interleavedparallelrouting.rb +30 -0
  40. data/weel.gemspec +25 -0
  41. metadata +127 -0
@@ -0,0 +1,41 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # only variant Cancelling Structured Partial Join is implemented, but that's the coolest one 8)
5
+ class TestWFPCancellingStructuredPartialJoin < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_cancelling_structured_partial_join
9
+ @wf.description do
10
+ parallel :wait => 3 do
11
+ parallel_branch do
12
+ activity :a_1, :call, :endpoint1
13
+ end
14
+ parallel_branch do
15
+ activity :a_2, :call, :endpoint1, :call => Proc.new{sleep 0.2}
16
+ end
17
+ parallel_branch do
18
+ activity :a_3, :call, :endpoint1
19
+ end
20
+ parallel_branch do
21
+ activity :a_4, :call, :endpoint1, :call => Proc.new{sleep 0.6}
22
+ end
23
+ parallel_branch do
24
+ activity :a_5, :call, :endpoint1
25
+ end
26
+ end
27
+ activity :a_6, :call, :endpoint1, :call => Proc.new{sleep 0.2}
28
+ end
29
+ t = @wf.start.join
30
+ wf_assert("CALL a_1:")
31
+ wf_assert("CALL a_2:")
32
+ wf_assert("CALL a_3:")
33
+ wf_assert("CALL a_4:")
34
+ wf_assert("CALL a_5:")
35
+ wf_assert("DONE a_1")
36
+ wf_assert("DONE a_3")
37
+ wf_assert("DONE a_5")
38
+ wf_assert("CALL a_6:")
39
+ wf_assert("DONE a_6")
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # unknown/not implemented
5
+ class TestWFPThreadMerge < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_thread_merge
9
+ # unknown
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # unknown/not implemented
5
+ class TestWFPThreadSplit < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_thread_split
9
+ # unknown
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ class TestWFPExclusiveChoice < Test::Unit::TestCase
5
+ include TestMixin
6
+
7
+ def test_exclusive_choice
8
+ @wf.description do
9
+ choose do
10
+ alternative(true) do
11
+ activity :a1_1, :call, :endpoint1
12
+ end
13
+ otherwise do
14
+ activity :a1_2, :call, :endpoint1
15
+ end
16
+ end
17
+ end
18
+ @wf.start.join
19
+ wf_assert("CALL a1_1: passthrough=[], endpoint=[http://www.heise.de], parameters=[{}]")
20
+ wf_assert("CALL a1_2:",false)
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ class TestWFPParallel < Test::Unit::TestCase
5
+ include TestMixin
6
+
7
+ def test_parallel_split
8
+ @wf.description do
9
+ parallel :wait do
10
+ parallel_branch do
11
+ activity :a1_1, :call, :endpoint1
12
+ end
13
+ parallel_branch do
14
+ activity :a1_2, :call, :endpoint1
15
+ end
16
+ end
17
+ activity :a2, :call, :endpoint1
18
+ end
19
+ @wf.start.join
20
+ wf_assert('CALL a1_1')
21
+ wf_assert('CALL a1_2')
22
+ wf_assert('DONE a1_1')
23
+ wf_assert('DONE a1_2')
24
+ wf_sassert('Ca2Da2|finished|')
25
+ end
26
+ end
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ class TestWFPSequence < Test::Unit::TestCase
5
+ include TestMixin
6
+
7
+ def test_sequence
8
+ @wf.description do
9
+ activity :a1_1, :call, :endpoint1
10
+ activity :a1_2, :call, :endpoint1
11
+ activity :a1_3, :call, :endpoint1
12
+ end
13
+ @wf.start.join
14
+ wf_sassert('|running|Ca1_1Da1_1Ca1_2Da1_2Ca1_3Da1_3|finished|')
15
+ end
16
+ end
@@ -0,0 +1,65 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # implemented as a combination of the Cancelling Structured Partial Join and the Exclusive Choice Pattern
5
+ class TestWFPInterleavedParallelRouting < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_loop
9
+ @wf.description do
10
+ activity :a1, :manipulate do
11
+ data.x = 0
12
+ end
13
+ loop pre_test{data.x < 3} do
14
+ activity :a2, :call, :endpoint1 do
15
+ data.x += 1
16
+ end
17
+ end
18
+ activity :a3, :call, :endpoint1
19
+ end
20
+ @wf.start.join
21
+ wf_sassert('|running|Ma1Da1Ca2Ma2Da2Ca2Ma2Da2Ca2Ma2Da2Ca3Da3|finished|');
22
+ data = @wf.data
23
+ assert(data[:x] == 3, "data[:x] has not the correct value [#{data[:x]}]")
24
+ end
25
+ def test_loop_search
26
+ @wf.description do
27
+ activity :a1, :manipulate do
28
+ data.x = 0
29
+ end
30
+ loop pre_test{data.x < 3} do
31
+ activity :a2_1, :call, :endpoint1
32
+ activity :a2_2, :manipulate do
33
+ data.x += 1
34
+ end
35
+ end
36
+ activity :a3, :call, :endpoint1
37
+ end
38
+ @wf.search WEEL::Position.new(:a2_2, :at)
39
+ @wf.data :x => 2
40
+ @wf.start.join
41
+ wf_sassert('|running|Ma2_2Da2_2Ca3Da3|finished|');
42
+ data = @wf.data
43
+ assert(data[:x] == 3, "data[:x] has not the correct value [#{data[:x]}]")
44
+ end
45
+ def test_loop_jump_over
46
+ @wf.description do
47
+ activity :a1, :manipulate do
48
+ data.x = 0
49
+ end
50
+ loop pre_test{data.x < 3} do
51
+ activity :a2_1, :call, :endpoint1
52
+ activity :a2_2, :manipulate do
53
+ data.x += 1
54
+ end
55
+ end
56
+ activity :a3, :call, :endpoint1
57
+ end
58
+ @wf.search WEEL::Position.new(:a3, :at)
59
+ @wf.data :x => 0
60
+ @wf.start.join
61
+ wf_sassert('|running|Ca3Da3|finished|');
62
+ data = @wf.data
63
+ assert(data[:x] == 0, "data[:x] has not the correct value [#{data[:x]}]")
64
+ end
65
+ end
@@ -0,0 +1,38 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # implemented as a combination of the Cancelling Structured Partial Join and the Exclusive Choice Pattern
5
+ class TestWFPDeferredChoice < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_sequence
9
+ @wf.description do
10
+ parallel :wait=>1 do
11
+ parallel_branch do
12
+ activity :a1_1, :call, :endpoint1 do
13
+ data.choice = 1
14
+ end
15
+ end
16
+ parallel_branch do
17
+ activity(:a1_2, :call, :endpoint1, :call => Proc.new{sleep 1.0}) do
18
+ data.choice = 2
19
+ end
20
+ end
21
+ end
22
+ choose do
23
+ alternative(data.choice == 1) do
24
+ activity :a2_1, :call, :endpoint1
25
+ end
26
+ alternative(data.choice == 2) do
27
+ activity :a2_2, :call, :endpoint1
28
+ end
29
+ end
30
+ end
31
+ @wf.start.join
32
+ wf_assert('CALL a1_1')
33
+ wf_assert('CALL a1_2')
34
+ wf_sassert('Da1_1NLNa1_2Ca2_1Da2_1|finished|')
35
+ data = @wf.data
36
+ assert(data[:choice] == 1, "data[:choice] has not the correct value [#{data[:x]}]")
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ require 'test/unit'
2
+ require File.expand_path(::File.dirname(__FILE__) + '/../TestWorkflow')
3
+
4
+ # implemented as a combination of the Cancelling Structured Partial Join and the Exclusive Choice Pattern
5
+ class TestWFPInterleavedParallelRouting < Test::Unit::TestCase
6
+ include TestMixin
7
+
8
+ def test_interleaved
9
+ @wf.description do
10
+ parallel do
11
+ parallel_branch do
12
+ critical(:section1) do
13
+ activity :a1, :call, :endpoint1
14
+ end
15
+ critical(:section1) do
16
+ activity :a3, :call, :endpoint1
17
+ end
18
+ end
19
+ parallel_branch do
20
+ critical(:section1) do
21
+ activity :a2, :call, :endpoint1
22
+ end
23
+ end
24
+ end
25
+ end
26
+ @wf.start.join
27
+ nump = $long_track.split("\n").delete_if{|e| !(e =~ /^(DONE|CALL)/)}.map{|e| e.gsub(/ .*/,'')}
28
+ assert(nump == ["CALL", "DONE", "CALL", "DONE", "CALL", "DONE"], "not in the right order, sorry")
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "weel"
3
+ s.version = "1.0.3"
4
+ s.platform = Gem::Platform::RUBY
5
+ s.summary = "preliminary release of the Workflow Execution Engine Library (WEEL)"
6
+
7
+ s.description = <<-EOF
8
+ For WEE Library specific information see http://cpee.org/.
9
+
10
+ Copyright (C) 2008-2013 Jürgen Mangler <juergen.mangler@gmail.com> and others.
11
+
12
+ WEE Library is freely distributable according to the terms of the GNU Lesser General Public License (see the file 'COPYING').
13
+
14
+ This program is distributed without any warranty. See the file 'COPYING' for details.
15
+ EOF
16
+
17
+ s.files = Dir['{example/**/*,lib/*}'] + %w(COPYING FEATURES INSTALL Rakefile weel.gemspec README AUTHORS)
18
+ s.require_path = 'lib'
19
+ s.extra_rdoc_files = ['README']
20
+ s.test_files = Dir['{test/*,test/*/tc_*.rb}']
21
+
22
+ s.authors = ['Juergen eTM Mangler','Gerhard Stuermer']
23
+ s.email = 'juergen.mangler@gmail.com'
24
+ s.homepage = 'http://cpee.org'
25
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: weel
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Juergen eTM Mangler
9
+ - Gerhard Stuermer
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-12-19 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: ! 'For WEE Library specific information see http://cpee.org/.
16
+
17
+
18
+ Copyright (C) 2008-2013 Jürgen Mangler <juergen.mangler@gmail.com> and others.
19
+
20
+
21
+ WEE Library is freely distributable according to the terms of the GNU Lesser General
22
+ Public License (see the file ''COPYING'').
23
+
24
+
25
+ This program is distributed without any warranty. See the file ''COPYING'' for details.
26
+
27
+ '
28
+ email: juergen.mangler@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files:
32
+ - README
33
+ files:
34
+ - example/runme.rb
35
+ - example/SimpleHandlerWrapper.rb
36
+ - example/SimpleWorkflow.rb
37
+ - lib/weel.rb
38
+ - COPYING
39
+ - FEATURES
40
+ - INSTALL
41
+ - Rakefile
42
+ - weel.gemspec
43
+ - README
44
+ - AUTHORS
45
+ - test/ContinueTest.rb
46
+ - test/TestHandlerWrapper.rb
47
+ - test/TestWorkflow.rb
48
+ - test/complex/tc_generalsynchonizingmerge_loopsearch.rb
49
+ - test/complex/tc_parallel_stop.rb
50
+ - test/wfp_basic/tc_parallelsplit_synchronization.rb
51
+ - test/wfp_basic/tc_sequence.rb
52
+ - test/wfp_basic/tc_exclusivechoice_simplemerge.rb
53
+ - test/wfp_adv_branching/tc_generalsynchronizingmerge.rb
54
+ - test/wfp_adv_branching/tc_generalizedjoin.rb
55
+ - test/wfp_adv_branching/tc_localsynchronizingmerge.rb
56
+ - test/wfp_adv_branching/tc_multichoice_structuredsynchronizingmerge.rb
57
+ - test/wfp_adv_branching/tc_threadmerge.rb
58
+ - test/wfp_adv_branching/tc_structured_discriminator.rb
59
+ - test/wfp_adv_branching/tc_structured_partial_join.rb
60
+ - test/wfp_adv_branching/tc_multimerge.rb
61
+ - test/wfp_adv_branching/tc_threadsplit.rb
62
+ - test/basic/tc_wf_control.rb
63
+ - test/basic/tc_endpoint.rb
64
+ - test/basic/tc_codereplace.rb
65
+ - test/basic/tc_search.rb
66
+ - test/basic/tc_state.rb
67
+ - test/basic/tc_choose.rb
68
+ - test/basic/tc_data.rb
69
+ - test/basic/tc_parallel.rb
70
+ - test/basic/tc_handler.rb
71
+ - test/wfp_iteration/tc_structuredloop.rb
72
+ - test/wfp_state_based/tc_interleavedparallelrouting.rb
73
+ - test/wfp_state_based/tc_deferredchoice.rb
74
+ homepage: http://cpee.org
75
+ licenses: []
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 1.8.23
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: preliminary release of the Workflow Execution Engine Library (WEEL)
98
+ test_files:
99
+ - test/ContinueTest.rb
100
+ - test/TestHandlerWrapper.rb
101
+ - test/TestWorkflow.rb
102
+ - test/complex/tc_generalsynchonizingmerge_loopsearch.rb
103
+ - test/complex/tc_parallel_stop.rb
104
+ - test/wfp_basic/tc_parallelsplit_synchronization.rb
105
+ - test/wfp_basic/tc_sequence.rb
106
+ - test/wfp_basic/tc_exclusivechoice_simplemerge.rb
107
+ - test/wfp_adv_branching/tc_generalsynchronizingmerge.rb
108
+ - test/wfp_adv_branching/tc_generalizedjoin.rb
109
+ - test/wfp_adv_branching/tc_localsynchronizingmerge.rb
110
+ - test/wfp_adv_branching/tc_multichoice_structuredsynchronizingmerge.rb
111
+ - test/wfp_adv_branching/tc_threadmerge.rb
112
+ - test/wfp_adv_branching/tc_structured_discriminator.rb
113
+ - test/wfp_adv_branching/tc_structured_partial_join.rb
114
+ - test/wfp_adv_branching/tc_multimerge.rb
115
+ - test/wfp_adv_branching/tc_threadsplit.rb
116
+ - test/basic/tc_wf_control.rb
117
+ - test/basic/tc_endpoint.rb
118
+ - test/basic/tc_codereplace.rb
119
+ - test/basic/tc_search.rb
120
+ - test/basic/tc_state.rb
121
+ - test/basic/tc_choose.rb
122
+ - test/basic/tc_data.rb
123
+ - test/basic/tc_parallel.rb
124
+ - test/basic/tc_handler.rb
125
+ - test/wfp_iteration/tc_structuredloop.rb
126
+ - test/wfp_state_based/tc_interleavedparallelrouting.rb
127
+ - test/wfp_state_based/tc_deferredchoice.rb