pione 0.5.0.alpha.1 → 0.5.0.alpha.2
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.
- checksums.yaml +8 -8
- data/.gitignore +6 -7
- data/.travis.yml +3 -1
- data/example/FeatureExample/Package.pione +1 -0
- data/lib/pione/agent/job-manager.rb +1 -1
- data/lib/pione/lang/common-parser.rb +3 -0
- data/lib/pione/lang/conditional-branch-parser.rb +2 -2
- data/lib/pione/lang/declaration-parser.rb +4 -4
- data/lib/pione/lang/sequence.rb +1 -1
- data/lib/pione/log/system-log.rb +62 -27
- data/lib/pione/util/process-info.rb +6 -1
- data/lib/pione/version.rb +1 -1
- data/test/command/spec_pione-client.rb +2 -198
- data/test/example/spec_ActionError.rb +9 -0
- data/test/example/spec_FeatureExample.rb +18 -0
- data/test/example/spec_Fib.rb +24 -0
- data/test/example/spec_HelloWorld.rb +15 -0
- data/test/example/spec_MakePair.rb +20 -0
- data/test/example/spec_OddSelector.rb +20 -0
- data/test/example/spec_PegasusWMSMerge.rb +12 -0
- data/test/example/spec_PegasusWMSPipeline.rb +16 -0
- data/test/example/spec_PegasusWMSSplit.rb +22 -0
- data/test/example/spec_SelectRuleByParam.rb +30 -0
- data/test/example/spec_SerialProcessing.rb +25 -0
- data/test/example/spec_Sum.rb +11 -0
- data/test/rule-engine/spec_data-finder.rb +1 -1
- data/test/util/spec_process-info.rb +5 -1
- metadata +27 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTUzMjJhZmQwY2EyNmQzODZlZThhYTQ3YzA2NmQzYTgxMjM5ZTg4ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWE3MzQ1NTFlOGZkNmNjYzA1ZTliMzFmMmYyZTE5MThjMjYyMWRkNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzNiNzQxMmYwMjllMjE4MzQ1Nzk3YzFiNWM3NzVhMWMzM2Q5YmFkMDA3Njgx
|
10
|
+
MDQyZmRmNzk0M2E5YTdmMjJkOWUyOGI4ZGE1YmI1OTkwMDkxMjFjYTY0YjI1
|
11
|
+
MTY2ZTAzY2Q4MzQyZjU4NTA2NTI2YWRmNDBkZWVkMjAxYzFiMjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODFlMGIxZTM4Zjc4M2Q0YjU5ZmNmNDNhOTNkOGRlNTYyMDM0ZWNmZTk2ZGZj
|
14
|
+
YjFhNWEzZWE0MGMwZmNhZjVlNTI4NmNhNTM3N2IxZWE2ZThjZGVhMTg2M2Iz
|
15
|
+
OGVlYzJjMGNiYmQwMjk2NmQyNmMwZjBhZTFkYWFkNTdhNDk4MWY=
|
data/.gitignore
CHANGED
@@ -7,17 +7,16 @@
|
|
7
7
|
.yardoc
|
8
8
|
Gemfile.lock
|
9
9
|
gems
|
10
|
-
log.txt
|
11
|
-
nohup.out
|
12
|
-
test-report.txt
|
13
|
-
*.log
|
14
10
|
|
15
|
-
/input
|
16
|
-
/output
|
17
11
|
/process
|
18
|
-
/result
|
19
12
|
/html
|
20
13
|
/vendor
|
21
14
|
/coverage
|
22
15
|
/pkg
|
23
16
|
/*.ppg
|
17
|
+
|
18
|
+
log.txt
|
19
|
+
nohup.out
|
20
|
+
test-report.txt
|
21
|
+
*.log
|
22
|
+
scenario-test-result.txt
|
data/.travis.yml
CHANGED
@@ -68,7 +68,7 @@ module Pione
|
|
68
68
|
|
69
69
|
def transit_to_run
|
70
70
|
finder = RuleEngine::DataFinder.new(@tuple_space, 'root')
|
71
|
-
list =
|
71
|
+
list = finder.to_enum(:find, :input, @rule_condition.inputs, @env).to_a
|
72
72
|
if list.empty?
|
73
73
|
user_message "error: no inputs"
|
74
74
|
terminate
|
@@ -31,10 +31,10 @@ module Pione
|
|
31
31
|
}
|
32
32
|
|
33
33
|
# +else_context+ matches +else+ block.
|
34
|
-
rule(:else_context) {
|
34
|
+
rule(:else_context) { _line(keyword_else) >> conditional_branch_context.as(:else_context) }
|
35
35
|
|
36
36
|
# +branch_end+ matches conditional branch block end.
|
37
|
-
rule(:branch_end) {
|
37
|
+
rule(:branch_end) { _line(keyword_end) }
|
38
38
|
rule(:branch_end!) { branch_end.or_error("conditional branch end not found") }
|
39
39
|
|
40
40
|
# +case_branch+ matches +case+ conditional branches.
|
@@ -159,14 +159,14 @@ module Pione
|
|
159
159
|
# +flow_rule_block+ matches flow rule declarations.
|
160
160
|
rule(:flow_rule_block) {
|
161
161
|
( rule_header >> flow_rule_condition_context.as(:context1) >>
|
162
|
-
|
162
|
+
_line(keyword_Flow) >> flow_context.as(:context2) >> rule_footer!
|
163
163
|
).as(:flow_rule_block)
|
164
164
|
}
|
165
165
|
|
166
166
|
# +action_rule_block+ matches action rule declarations.
|
167
167
|
rule(:action_rule_block) {
|
168
168
|
( rule_header >> action_rule_condition_context.as(:context1) >>
|
169
|
-
|
169
|
+
_line(keyword_Action) >> action_context.as(:context2) >> rule_footer!
|
170
170
|
).as(:action_rule_block)
|
171
171
|
}
|
172
172
|
|
@@ -177,11 +177,11 @@ module Pione
|
|
177
177
|
|
178
178
|
# +rule_header+ matches rule headers.
|
179
179
|
rule(:rule_header) {
|
180
|
-
|
180
|
+
_line(keyword_Rule.as(:declarator) >> space >> expr!("should be rule name").as(:expr))
|
181
181
|
}
|
182
182
|
|
183
183
|
# +rule_footer+ matches rule end keywords.
|
184
|
-
rule(:rule_footer) {
|
184
|
+
rule(:rule_footer) { _line(keyword_End) }
|
185
185
|
rule(:rule_footer!) { rule_footer.or_error("rule footer not found") }
|
186
186
|
end
|
187
187
|
end
|
data/lib/pione/lang/sequence.rb
CHANGED
data/lib/pione/log/system-log.rb
CHANGED
@@ -3,17 +3,57 @@ module Pione
|
|
3
3
|
SystemLog = Rootage::Log
|
4
4
|
SystemLog.set_logger_block {Global.system_logger}
|
5
5
|
|
6
|
+
# BasicLogger provides common functions for PIONE's loggers.
|
7
|
+
class BasicLogger < Rootage::Logger
|
8
|
+
include DRbUndumped
|
9
|
+
|
10
|
+
# log level
|
11
|
+
attr_accessor :level
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@level = :info
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Return true if the level message can be loggable.
|
20
|
+
#
|
21
|
+
# @param level [Symbol]
|
22
|
+
# the level
|
23
|
+
# @return [Boolean]
|
24
|
+
# true if the level message can be loggable
|
25
|
+
def loggable?(level)
|
26
|
+
level_to_i(@level) >= level_to_i(level)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Return the number of the level.
|
30
|
+
#
|
31
|
+
# @param level [Symbol]
|
32
|
+
# the level
|
33
|
+
# @return [Integer]
|
34
|
+
# the number of the level
|
35
|
+
def level_to_i(level)
|
36
|
+
case level
|
37
|
+
when :fatal; 0
|
38
|
+
when :error; 1
|
39
|
+
when :warn ; 2
|
40
|
+
when :info ; 3
|
41
|
+
when :debug; 4
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
6
46
|
# `Log::PioneSystemLogger` is a PIONE original logger. This generates very
|
7
47
|
# colorful message for identifiability and detailed informations.
|
8
|
-
class PioneSystemLogger <
|
9
|
-
include DRbUndumped
|
48
|
+
class PioneSystemLogger < BasicLogger
|
10
49
|
|
11
50
|
attr_accessor :level
|
12
51
|
|
13
52
|
def initialize(out = nil)
|
53
|
+
super()
|
54
|
+
|
14
55
|
@queue = Queue.new
|
15
56
|
@thread = make_writer_thread
|
16
|
-
@level = :info
|
17
57
|
@lock = Mutex.new
|
18
58
|
@out = out
|
19
59
|
end
|
@@ -49,16 +89,6 @@ module Pione
|
|
49
89
|
|
50
90
|
private
|
51
91
|
|
52
|
-
def level_to_i(level)
|
53
|
-
case level
|
54
|
-
when :fatal; 0
|
55
|
-
when :error; 1
|
56
|
-
when :warn ; 2
|
57
|
-
when :info ; 3
|
58
|
-
when :debug; 4
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
92
|
def make_writer_thread
|
63
93
|
Thread.new do
|
64
94
|
while true do
|
@@ -69,7 +99,7 @@ module Pione
|
|
69
99
|
end
|
70
100
|
|
71
101
|
def push(level, msg, pos, pid)
|
72
|
-
if
|
102
|
+
if loggable?(level)
|
73
103
|
@queue.push([level, msg, pos, pid, Time.now])
|
74
104
|
end
|
75
105
|
end
|
@@ -88,31 +118,32 @@ module Pione
|
|
88
118
|
end
|
89
119
|
end
|
90
120
|
|
91
|
-
|
92
|
-
|
93
|
-
|
121
|
+
# DelegatableLogger delegates logging functions to another logger.
|
122
|
+
class DelegatableLogger < BasicLogger
|
94
123
|
def initialize(logger)
|
124
|
+
super()
|
125
|
+
|
95
126
|
@logger = logger
|
96
127
|
end
|
97
128
|
|
98
129
|
def fatal(msg, pos=caller(1).first, pid=Process.pid)
|
99
|
-
send_message(msg, pos, pid) {@logger.fatal(msg, pos, pid)}
|
130
|
+
send_message(:fatal, msg, pos, pid) {@logger.fatal(msg, pos, pid)}
|
100
131
|
end
|
101
132
|
|
102
133
|
def error(msg, pos=caller(1).first, pid=Process.pid)
|
103
|
-
send_message(msg, pos, pid) {@logger.error(msg, pos, pid)}
|
134
|
+
send_message(:error, msg, pos, pid) {@logger.error(msg, pos, pid)}
|
104
135
|
end
|
105
136
|
|
106
137
|
def warn(msg, pos=caller(1).first, pid=Process.pid)
|
107
|
-
send_message(msg, pos, pid) {@logger.warn(msg, pos, pid)}
|
138
|
+
send_message(:warn, msg, pos, pid) {@logger.warn(msg, pos, pid)}
|
108
139
|
end
|
109
140
|
|
110
141
|
def info(msg, pos=caller(1).first, pid=Process.pid)
|
111
|
-
send_message(msg, pos, pid) {@logger.info(msg, pos, pid)}
|
142
|
+
send_message(:info, msg, pos, pid) {@logger.info(msg, pos, pid)}
|
112
143
|
end
|
113
144
|
|
114
145
|
def debug(msg, pos=caller(1).first, pid=Process.pid)
|
115
|
-
send_message(msg, pos, pid) {@logger.debug(msg, pos, pid)}
|
146
|
+
send_message(:debug, msg, pos, pid) {@logger.debug(msg, pos, pid)}
|
116
147
|
end
|
117
148
|
|
118
149
|
def terminate
|
@@ -121,11 +152,15 @@ module Pione
|
|
121
152
|
|
122
153
|
private
|
123
154
|
|
124
|
-
def send_message(msg, pos, pid, &block)
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
155
|
+
def send_message(level, msg, pos, pid, &block)
|
156
|
+
if loggable?(level)
|
157
|
+
begin
|
158
|
+
block.call
|
159
|
+
rescue Exception
|
160
|
+
# print stdout directly if the logger fails
|
161
|
+
$stdout.puts("%s (%s) #%s" % [msg, pos, pid])
|
162
|
+
end
|
163
|
+
end
|
129
164
|
end
|
130
165
|
end
|
131
166
|
|
@@ -7,9 +7,14 @@ module Pione
|
|
7
7
|
|
8
8
|
forward! Proc.new{thread}, :alive?, :stop?
|
9
9
|
|
10
|
-
# Kill the process.
|
10
|
+
# Kill the process. This method waits the process to be dead.
|
11
|
+
#
|
12
|
+
# @param signal [Symbol]
|
13
|
+
# the signal to send
|
14
|
+
# @return [void]
|
11
15
|
def kill(signal = :TERM)
|
12
16
|
Process.kill(signal, pid)
|
17
|
+
wait
|
13
18
|
end
|
14
19
|
|
15
20
|
# Wait until the process is dead.
|
data/lib/pione/version.rb
CHANGED
@@ -13,7 +13,7 @@ TestHelper.scope do |this|
|
|
13
13
|
|
14
14
|
it "should execute a PIONE document" do
|
15
15
|
path = Temppath.create
|
16
|
-
cmd = @cmd.new(["example/HelloWorld/
|
16
|
+
cmd = @cmd.new(["example/HelloWorld/", "--base", path.to_s])
|
17
17
|
res = Rootage::ScenarioTest.succeed(cmd)
|
18
18
|
Location[path + "output" + "message.txt"].should.exist
|
19
19
|
Location[path + "output" + "message.txt"].read.should.start_with "Hello, world!"
|
@@ -21,7 +21,7 @@ TestHelper.scope do |this|
|
|
21
21
|
|
22
22
|
it "should execute a PIONE document with stand alone mode" do
|
23
23
|
path = Temppath.create
|
24
|
-
cmd = @cmd.new(["example/HelloWorld/
|
24
|
+
cmd = @cmd.new(["example/HelloWorld/", "--base", path.to_s, "--stand-alone"])
|
25
25
|
Rootage::ScenarioTest.succeed(cmd)
|
26
26
|
Location[path + "output" + "message.txt"].should.exist
|
27
27
|
Location[path + "output" + "message.txt"].read.should.start_with "Hello, world!"
|
@@ -49,201 +49,5 @@ TestHelper.scope do |this|
|
|
49
49
|
cmd = @cmd.new([doc, "--base", path.to_s, "--stand-alone"])
|
50
50
|
Rootage::ScenarioTest.fail(cmd)
|
51
51
|
end
|
52
|
-
|
53
|
-
describe "example/Fib" do
|
54
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
55
|
-
runner.title = "should get a result with no parameters (default fib(3))"
|
56
|
-
runner.args = ["example/Fib/Fib.pione", *runner.default_arguments]
|
57
|
-
runner.run do |base|
|
58
|
-
(base + "output" + "result.txt").should.exist
|
59
|
-
(base + "output" + "result.txt").read.should.start_with "2"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# FIXME: this test is unstable... maybe there are bugs
|
64
|
-
|
65
|
-
# it "should get a result of fib(10)" do
|
66
|
-
# path = Temppath.create
|
67
|
-
# args = ["example/Fib/Fib.pione", "-o", path.to_s, "--params", "{NUM: 10}"]
|
68
|
-
# res = TestHelper::Command.succeed do
|
69
|
-
# Pione::Command::PioneClient.run(args)
|
70
|
-
# end
|
71
|
-
# Location[path + "result.txt"].should.exist
|
72
|
-
# Location[path + "result.txt"].read.should.start_with "55"
|
73
|
-
# end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "example/PegasusWMS/Merge" do
|
77
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
78
|
-
runner.title = "should get a result of example/PegasusWMS/Merge"
|
79
|
-
runner.args = ["example/PegasusWMS/Merge/", *runner.default_arguments]
|
80
|
-
runner.run do |base|
|
81
|
-
(base + "output" + "binaries.txt").should.exist
|
82
|
-
(base + "output" + "binaries.txt").size.should > 0
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "example/PegasusWMS/Pipeline" do
|
88
|
-
if TestHelper::InternetConnectivity.ok?
|
89
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
90
|
-
runner.title = "should get a result of example/PegasusWMS/Pipeline"
|
91
|
-
runner.args = ["example/PegasusWMS/Pipeline/", *runner.default_arguments]
|
92
|
-
runner.run do |base|
|
93
|
-
(base + "output" + "count.txt").should.exist
|
94
|
-
(base + "output" + "count.txt").size.should > 0
|
95
|
-
end
|
96
|
-
end
|
97
|
-
else
|
98
|
-
puts " * ignored because of no internet connection"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "example/PegasusWMS/Split" do
|
103
|
-
if TestHelper::InternetConnectivity.ok?
|
104
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
105
|
-
runner.title = "should get a result of example/PegasusWMS/Split"
|
106
|
-
runner.args = ["example/PegasusWMS/Split/", *runner.default_arguments]
|
107
|
-
runner.run do |base|
|
108
|
-
(base + "output" + "count.txt.a").should.exist
|
109
|
-
(base + "output" + "count.txt.a").size.should > 0
|
110
|
-
(base + "output" + "count.txt.b").should.exist
|
111
|
-
(base + "output" + "count.txt.b").size.should > 0
|
112
|
-
(base + "output" + "count.txt.c").should.exist
|
113
|
-
(base + "output" + "count.txt.c").size.should > 0
|
114
|
-
(base + "output" + "count.txt.d").should.exist
|
115
|
-
(base + "output" + "count.txt.d").size.should > 0
|
116
|
-
end
|
117
|
-
end
|
118
|
-
else
|
119
|
-
puts " * ignored because of no internet connection"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
describe "example/OddSelector" do
|
124
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
125
|
-
runner.title = "should get a result of example/OddSelector"
|
126
|
-
runner.args = ["example/OddSelector", "--rehearse", *runner.default_arguments]
|
127
|
-
runner.run do |base|
|
128
|
-
(base + "output" + "1.res").should.exist
|
129
|
-
(base + "output" + "2.res").should.not.exist
|
130
|
-
(base + "output" + "3.res").should.exist
|
131
|
-
(base + "output" + "4.res").should.not.exist
|
132
|
-
(base + "output" + "5.res").should.exist
|
133
|
-
(base + "output" + "6.res").should.not.exist
|
134
|
-
(base + "output" + "7.res").should.exist
|
135
|
-
(base + "output" + "8.res").should.not.exist
|
136
|
-
(base + "output" + "9.res").should.exist
|
137
|
-
(base + "output" + "10.res").should.not.exist
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
describe "example/SerialProcessing" do
|
143
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
144
|
-
runner.title = "should get a result of example/SerialProcessing"
|
145
|
-
runner.args = ["example/SerialProcessing", "--rehearse", *runner.default_arguments]
|
146
|
-
runner.run do |base|
|
147
|
-
(base + "output" + "1.a").should.exist
|
148
|
-
(base + "output" + "2.a").should.exist
|
149
|
-
(base + "output" + "3.a").should.exist
|
150
|
-
(base + "output" + "4.a").should.exist
|
151
|
-
(base + "output" + "1.b").should.exist
|
152
|
-
(base + "output" + "2.b").should.exist
|
153
|
-
(base + "output" + "3.b").should.exist
|
154
|
-
(base + "output" + "4.b").should.exist
|
155
|
-
(base + "output" + "1.a").mtime.should <= (base + "output" + "2.a").mtime
|
156
|
-
(base + "output" + "2.a").mtime.should <= (base + "output" + "3.a").mtime
|
157
|
-
(base + "output" + "3.a").mtime.should <= (base + "output" + "4.a").mtime
|
158
|
-
(base + "output" + "4.a").mtime.should <= (base + "output" + "1.b").mtime
|
159
|
-
(base + "output" + "1.b").mtime.should <= (base + "output" + "2.b").mtime
|
160
|
-
(base + "output" + "2.b").mtime.should <= (base + "output" + "3.b").mtime
|
161
|
-
(base + "output" + "3.b").mtime.should <= (base + "output" + "4.b").mtime
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe "example/MakePair" do
|
167
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
168
|
-
runner.title = "should get a result of example/MakePair"
|
169
|
-
runner.args = ["example/MakePair", "--rehearse", "case1", *runner.default_arguments]
|
170
|
-
runner.run do |base|
|
171
|
-
1.upto(5) do |i|
|
172
|
-
1.upto(5) do |ii|
|
173
|
-
comb = (base + "output" + "comb-%s-%s.pair" % [i, ii])
|
174
|
-
i < ii ? comb.should.exist : comb.should.not.exist
|
175
|
-
perm = (base + "output" + "perm-%s-%s.pair" % [i, ii])
|
176
|
-
i != ii ? perm.should.exist : perm.should.not.exist
|
177
|
-
succ = (base + "output" + "succ-%s-%s.pair" % [i, ii])
|
178
|
-
ii - i == 1 ? succ.should.exist : succ.should.not.exist
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
describe "example/SelectRuleByParam" do
|
186
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
187
|
-
runner.title = "should get a result of scenario a of example/SelectRuleByParam"
|
188
|
-
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select A", *runner.default_arguments]
|
189
|
-
runner.run do |base|
|
190
|
-
(base + "output" + "message.txt").should.exist
|
191
|
-
(base + "output" + "message.txt").read.chomp.should == "This is rule A."
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
196
|
-
runner.title = "should get a result of scenario b of example/SelectRuleByParam"
|
197
|
-
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select B", *runner.default_arguments]
|
198
|
-
runner.run do |base|
|
199
|
-
(base + "output" + "message.txt").should.exist
|
200
|
-
(base + "output" + "message.txt").read.chomp.should == "This is rule B."
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
205
|
-
runner.title = "should get a result of scenario c of example/SelectRuleByParam"
|
206
|
-
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select C", *runner.default_arguments]
|
207
|
-
runner.run do |base|
|
208
|
-
(base + "output" + "message.txt").should.exist
|
209
|
-
(base + "output" + "message.txt").read.chomp.should == "This is rule C."
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
describe "example/FeatureExample" do
|
215
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
216
|
-
runner.title = "should get a result of example/FeatureExample"
|
217
|
-
runner.args = ["example/FeatureExample", "--feature", "^X", *runner.default_arguments]
|
218
|
-
runner.run do |base|
|
219
|
-
(base + "output" + "message.txt").should.exist
|
220
|
-
(base + "output" + "message.txt").read.chomp.should == "I can take the task."
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
225
|
-
runner.title = "should timeout with feature `*` in processing example/FeatureExample"
|
226
|
-
runner.args = ["example/FeatureExample", "--feature", "*", *runner.default_arguments]
|
227
|
-
runner.timeout(5)
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
describe "example/Sum" do
|
232
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
233
|
-
runner.title = "should get a result of example/Sum"
|
234
|
-
runner.args = ["example/Sum", "--rehearse", *runner.default_arguments]
|
235
|
-
runner.run do |base|
|
236
|
-
(base + "output" + "sum.txt").should.exist
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe "example/ActionError" do
|
242
|
-
TestHelper::PioneClientRunner.test(self) do |runner|
|
243
|
-
runner.title = "should fail in execution of example/ActionError"
|
244
|
-
runner.args = ["example/ActionError", *runner.default_arguments]
|
245
|
-
runner.fail
|
246
|
-
end
|
247
|
-
end
|
248
52
|
end
|
249
53
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/ActionError" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should fail in execution of example/ActionError"
|
6
|
+
runner.args = ["example/ActionError", *runner.default_arguments]
|
7
|
+
runner.fail
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/FeatureExample" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/FeatureExample"
|
6
|
+
runner.args = ["example/FeatureExample", "--feature", "^X", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "message.txt").should.exist
|
9
|
+
(base + "output" + "message.txt").read.chomp.should == "I can take the task."
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
14
|
+
runner.title = "should timeout with feature `*` in processing example/FeatureExample"
|
15
|
+
runner.args = ["example/FeatureExample", "--feature", "*", *runner.default_arguments]
|
16
|
+
runner.timeout(5)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/Fib" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result with no parameters (default fib(3))"
|
6
|
+
runner.args = ["example/Fib/Fib.pione", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "result.txt").should.exist
|
9
|
+
(base + "output" + "result.txt").read.should.start_with "2"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# FIXME: this test is unstable... maybe there are bugs
|
14
|
+
|
15
|
+
# it "should get a result of fib(10)" do
|
16
|
+
# path = Temppath.create
|
17
|
+
# args = ["example/Fib/Fib.pione", "-o", path.to_s, "--params", "{NUM: 10}"]
|
18
|
+
# res = TestHelper::Command.succeed do
|
19
|
+
# Pione::Command::PioneClient.run(args)
|
20
|
+
# end
|
21
|
+
# Location[path + "result.txt"].should.exist
|
22
|
+
# Location[path + "result.txt"].read.should.start_with "55"
|
23
|
+
# end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/HelloWorld" do
|
4
|
+
before do
|
5
|
+
@cmd = Command::PioneClient
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should process" do
|
9
|
+
path = Temppath.create
|
10
|
+
cmd = @cmd.new(["example/HelloWorld/", "--base", path.to_s])
|
11
|
+
res = Rootage::ScenarioTest.succeed(cmd)
|
12
|
+
Location[path + "output" + "message.txt"].should.exist
|
13
|
+
Location[path + "output" + "message.txt"].read.should.start_with "Hello, world!"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/MakePair" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/MakePair"
|
6
|
+
runner.args = ["example/MakePair", "--rehearse", "case1", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
1.upto(5) do |i|
|
9
|
+
1.upto(5) do |ii|
|
10
|
+
comb = (base + "output" + "comb-%s-%s.pair" % [i, ii])
|
11
|
+
i < ii ? comb.should.exist : comb.should.not.exist
|
12
|
+
perm = (base + "output" + "perm-%s-%s.pair" % [i, ii])
|
13
|
+
i != ii ? perm.should.exist : perm.should.not.exist
|
14
|
+
succ = (base + "output" + "succ-%s-%s.pair" % [i, ii])
|
15
|
+
ii - i == 1 ? succ.should.exist : succ.should.not.exist
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/OddSelector" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/OddSelector"
|
6
|
+
runner.args = ["example/OddSelector", "--rehearse", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "1.res").should.exist
|
9
|
+
(base + "output" + "2.res").should.not.exist
|
10
|
+
(base + "output" + "3.res").should.exist
|
11
|
+
(base + "output" + "4.res").should.not.exist
|
12
|
+
(base + "output" + "5.res").should.exist
|
13
|
+
(base + "output" + "6.res").should.not.exist
|
14
|
+
(base + "output" + "7.res").should.exist
|
15
|
+
(base + "output" + "8.res").should.not.exist
|
16
|
+
(base + "output" + "9.res").should.exist
|
17
|
+
(base + "output" + "10.res").should.not.exist
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/PegasusWMS/Merge" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/PegasusWMS/Merge"
|
6
|
+
runner.args = ["example/PegasusWMS/Merge/", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "binaries.txt").should.exist
|
9
|
+
(base + "output" + "binaries.txt").size.should > 0
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/PegasusWMS/Pipeline" do
|
4
|
+
if TestHelper::InternetConnectivity.ok?
|
5
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
6
|
+
runner.title = "should get a result of example/PegasusWMS/Pipeline"
|
7
|
+
runner.args = ["example/PegasusWMS/Pipeline/", *runner.default_arguments]
|
8
|
+
runner.run do |base|
|
9
|
+
(base + "output" + "count.txt").should.exist
|
10
|
+
(base + "output" + "count.txt").size.should > 0
|
11
|
+
end
|
12
|
+
end
|
13
|
+
else
|
14
|
+
puts " * ignored because of no internet connection"
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/PegasusWMS/Split" do
|
4
|
+
if TestHelper::InternetConnectivity.ok?
|
5
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
6
|
+
runner.title = "should get a result of example/PegasusWMS/Split"
|
7
|
+
runner.args = ["example/PegasusWMS/Split/", *runner.default_arguments]
|
8
|
+
runner.run do |base|
|
9
|
+
(base + "output" + "count.txt.a").should.exist
|
10
|
+
(base + "output" + "count.txt.a").size.should > 0
|
11
|
+
(base + "output" + "count.txt.b").should.exist
|
12
|
+
(base + "output" + "count.txt.b").size.should > 0
|
13
|
+
(base + "output" + "count.txt.c").should.exist
|
14
|
+
(base + "output" + "count.txt.c").size.should > 0
|
15
|
+
(base + "output" + "count.txt.d").should.exist
|
16
|
+
(base + "output" + "count.txt.d").size.should > 0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
else
|
20
|
+
puts " * ignored because of no internet connection"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/SelectRuleByParam" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of scenario a of example/SelectRuleByParam"
|
6
|
+
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select A", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "message.txt").should.exist
|
9
|
+
(base + "output" + "message.txt").read.chomp.should == "This is rule A."
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
14
|
+
runner.title = "should get a result of scenario b of example/SelectRuleByParam"
|
15
|
+
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select B", *runner.default_arguments]
|
16
|
+
runner.run do |base|
|
17
|
+
(base + "output" + "message.txt").should.exist
|
18
|
+
(base + "output" + "message.txt").read.chomp.should == "This is rule B."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
23
|
+
runner.title = "should get a result of scenario c of example/SelectRuleByParam"
|
24
|
+
runner.args = ["example/SelectRuleByParam", "--rehearse", "Select C", *runner.default_arguments]
|
25
|
+
runner.run do |base|
|
26
|
+
(base + "output" + "message.txt").should.exist
|
27
|
+
(base + "output" + "message.txt").read.chomp.should == "This is rule C."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/SerialProcessing" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/SerialProcessing"
|
6
|
+
runner.args = ["example/SerialProcessing", "--rehearse", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "1.a").should.exist
|
9
|
+
(base + "output" + "2.a").should.exist
|
10
|
+
(base + "output" + "3.a").should.exist
|
11
|
+
(base + "output" + "4.a").should.exist
|
12
|
+
(base + "output" + "1.b").should.exist
|
13
|
+
(base + "output" + "2.b").should.exist
|
14
|
+
(base + "output" + "3.b").should.exist
|
15
|
+
(base + "output" + "4.b").should.exist
|
16
|
+
(base + "output" + "1.a").mtime.should <= (base + "output" + "2.a").mtime
|
17
|
+
(base + "output" + "2.a").mtime.should <= (base + "output" + "3.a").mtime
|
18
|
+
(base + "output" + "3.a").mtime.should <= (base + "output" + "4.a").mtime
|
19
|
+
(base + "output" + "4.a").mtime.should <= (base + "output" + "1.b").mtime
|
20
|
+
(base + "output" + "1.b").mtime.should <= (base + "output" + "2.b").mtime
|
21
|
+
(base + "output" + "2.b").mtime.should <= (base + "output" + "3.b").mtime
|
22
|
+
(base + "output" + "3.b").mtime.should <= (base + "output" + "4.b").mtime
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'pione/test-helper'
|
2
|
+
|
3
|
+
describe "example/Sum" do
|
4
|
+
TestHelper::PioneClientRunner.test(self) do |runner|
|
5
|
+
runner.title = "should get a result of example/Sum"
|
6
|
+
runner.args = ["example/Sum", "--rehearse", *runner.default_arguments]
|
7
|
+
runner.run do |base|
|
8
|
+
(base + "output" + "sum.txt").should.exist
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pione
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.0.alpha.
|
4
|
+
version: 0.5.0.alpha.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keita Yamaguchi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|
@@ -1311,6 +1311,18 @@ files:
|
|
1311
1311
|
- test/command/spec_pione-package-update.rb
|
1312
1312
|
- test/command/spec_pione-package.rb
|
1313
1313
|
- test/command/spec_pione-val.rb
|
1314
|
+
- test/example/spec_ActionError.rb
|
1315
|
+
- test/example/spec_FeatureExample.rb
|
1316
|
+
- test/example/spec_Fib.rb
|
1317
|
+
- test/example/spec_HelloWorld.rb
|
1318
|
+
- test/example/spec_MakePair.rb
|
1319
|
+
- test/example/spec_OddSelector.rb
|
1320
|
+
- test/example/spec_PegasusWMSMerge.rb
|
1321
|
+
- test/example/spec_PegasusWMSPipeline.rb
|
1322
|
+
- test/example/spec_PegasusWMSSplit.rb
|
1323
|
+
- test/example/spec_SelectRuleByParam.rb
|
1324
|
+
- test/example/spec_SerialProcessing.rb
|
1325
|
+
- test/example/spec_Sum.rb
|
1314
1326
|
- test/global/spec_config.rb
|
1315
1327
|
- test/global/spec_item.rb
|
1316
1328
|
- test/lang/data/boolean.yml
|
@@ -1595,7 +1607,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1595
1607
|
version: 1.3.1
|
1596
1608
|
requirements: []
|
1597
1609
|
rubyforge_project:
|
1598
|
-
rubygems_version: 2.
|
1610
|
+
rubygems_version: 2.4.5
|
1599
1611
|
signing_key:
|
1600
1612
|
specification_version: 4
|
1601
1613
|
summary: rule-based workflow engine
|
@@ -1663,6 +1675,18 @@ test_files:
|
|
1663
1675
|
- test/command/spec_pione-package-update.rb
|
1664
1676
|
- test/command/spec_pione-package.rb
|
1665
1677
|
- test/command/spec_pione-val.rb
|
1678
|
+
- test/example/spec_ActionError.rb
|
1679
|
+
- test/example/spec_FeatureExample.rb
|
1680
|
+
- test/example/spec_Fib.rb
|
1681
|
+
- test/example/spec_HelloWorld.rb
|
1682
|
+
- test/example/spec_MakePair.rb
|
1683
|
+
- test/example/spec_OddSelector.rb
|
1684
|
+
- test/example/spec_PegasusWMSMerge.rb
|
1685
|
+
- test/example/spec_PegasusWMSPipeline.rb
|
1686
|
+
- test/example/spec_PegasusWMSSplit.rb
|
1687
|
+
- test/example/spec_SelectRuleByParam.rb
|
1688
|
+
- test/example/spec_SerialProcessing.rb
|
1689
|
+
- test/example/spec_Sum.rb
|
1666
1690
|
- test/global/spec_config.rb
|
1667
1691
|
- test/global/spec_item.rb
|
1668
1692
|
- test/lang/data/boolean.yml
|