torigoya_kit 0.0.11 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/torigoya_kit/client.rb +7 -7
- data/lib/torigoya_kit/protocol.rb +63 -58
- data/lib/torigoya_kit/session.rb +27 -85
- data/lib/torigoya_kit/stream_result.rb +95 -60
- data/lib/torigoya_kit/ticket.rb +76 -154
- data/lib/torigoya_kit/typeutil.rb +46 -0
- data/lib/torigoya_kit/version.rb +1 -1
- data/spec/cases/protocol_spec.rb +24 -12
- data/spec/cases/session_spec.rb +19 -8
- data/spec/cases/ticket_spec.rb +19 -43
- data/spec/spec_helper.rb +36 -13
- data/torigoya_kit.gemspec +1 -1
- metadata +5 -4
data/lib/torigoya_kit/ticket.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
# Copyright (c) 2014 yutopp
|
1
|
+
# Copyright (c) 2014 - 2015 yutopp
|
2
2
|
# Licenced under the MIT License (http://www.opensource.org/licenses/mit-license.php)
|
3
3
|
|
4
4
|
require 'msgpack'
|
5
|
+
require_relative 'typeutil'
|
5
6
|
|
6
7
|
module TorigoyaKit
|
7
8
|
# contains source codes / inputs data
|
@@ -12,7 +13,8 @@ module TorigoyaKit
|
|
12
13
|
|
13
14
|
def initialize(name, code, is_compressed = false)
|
14
15
|
@name = name
|
15
|
-
@
|
16
|
+
@data = if is_compressed then
|
17
|
+
# NOT: implemented
|
16
18
|
else
|
17
19
|
code
|
18
20
|
end
|
@@ -20,22 +22,23 @@ module TorigoyaKit
|
|
20
22
|
|
21
23
|
validate
|
22
24
|
end
|
23
|
-
attr_reader :name, :
|
25
|
+
attr_reader :name, :data, :is_compressed
|
24
26
|
|
25
|
-
def
|
26
|
-
return
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
def to_hash
|
28
|
+
return {
|
29
|
+
name: @name,
|
30
|
+
data: @data,
|
31
|
+
is_compressed: @is_compressed,
|
32
|
+
}
|
30
33
|
end
|
31
34
|
|
32
35
|
def to_msgpack(out = '')
|
33
|
-
return
|
36
|
+
return to_hash.to_msgpack(out)
|
34
37
|
end
|
35
38
|
|
36
39
|
def ==(rhs)
|
37
40
|
return @name == rhs.name &&
|
38
|
-
@
|
41
|
+
@data == rhs.data
|
39
42
|
@is_compressed == rhs.is_compressed
|
40
43
|
end
|
41
44
|
|
@@ -44,116 +47,51 @@ module TorigoyaKit
|
|
44
47
|
if @name.nil?
|
45
48
|
@name = "*default*"
|
46
49
|
else
|
47
|
-
|
50
|
+
TypeUtil.nonnull_type_check(self, "name", @name, String)
|
48
51
|
end
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
#
|
55
|
-
class Command
|
56
|
-
def initialize(key_or_value, value=nil)
|
57
|
-
unless value.nil?
|
58
|
-
@key = key_or_value
|
59
|
-
@value = value
|
60
|
-
else
|
61
|
-
@value = key_or_value
|
62
|
-
end
|
63
|
-
|
64
|
-
validate
|
65
|
-
end
|
66
|
-
attr_reader :key, :value
|
67
|
-
|
68
|
-
def to_tuple
|
69
|
-
unless @key.nil?
|
70
|
-
return [@key, @value]
|
71
|
-
else
|
72
|
-
return [@value]
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def ==(rhs)
|
77
|
-
return @key == rhs.key && @value == rhs.value
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
def validate
|
82
|
-
unless @key.nil?
|
83
|
-
raise InvalidFormatError.new("#{self.class}: key must be String (but #{@key.class})") unless @key.is_a?(String)
|
84
|
-
end
|
85
|
-
raise InvalidFormatError.new("#{self.class}: value must be String (but #{@value.class})") unless @value.is_a?(String)
|
52
|
+
TypeUtil.nonnull_type_check(self, "data", @data, String)
|
53
|
+
TypeUtil.nonnull_boolean_type_check(self, "is_compressed", @is_compressed)
|
86
54
|
end
|
87
55
|
end
|
88
56
|
|
89
57
|
#
|
90
58
|
class ExecutionSetting
|
91
|
-
def initialize(
|
92
|
-
@
|
93
|
-
@
|
94
|
-
@cpu_limit = cpu_limit
|
95
|
-
@memory_limit = memory_limit
|
59
|
+
def initialize(args, envs, cpu_limit, memory_limit)
|
60
|
+
@args = args # Array!String
|
61
|
+
@envs = envs # Array!String
|
62
|
+
@cpu_limit = cpu_limit # uint64 / sec
|
63
|
+
@memory_limit = memory_limit # uint64 / bytes
|
96
64
|
|
97
65
|
validate
|
98
66
|
end
|
99
|
-
attr_reader :
|
67
|
+
attr_reader :args, :envs, :cpu_limit, :memory_limit
|
100
68
|
|
101
|
-
def
|
102
|
-
return
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
69
|
+
def to_hash
|
70
|
+
return {
|
71
|
+
args: @args,
|
72
|
+
envs: @envs,
|
73
|
+
cpu_time_limit: @cpu_limit,
|
74
|
+
memory_bytes_limit: @memory_limit
|
75
|
+
}
|
107
76
|
end
|
108
77
|
|
109
78
|
def to_msgpack(out = '')
|
110
|
-
return
|
79
|
+
return to_hash.to_msgpack(out)
|
111
80
|
end
|
112
81
|
|
113
82
|
def ==(rhs)
|
114
|
-
return @
|
115
|
-
@
|
83
|
+
return @args == rhs.args &&
|
84
|
+
@envs == rhs.envs &&
|
116
85
|
@cpu_limit == rhs.cpu_limit &&
|
117
86
|
@memory_limit == rhs.memory_limit
|
118
87
|
end
|
119
88
|
|
120
89
|
private
|
121
90
|
def validate
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
unless @structured_command.nil?
|
129
|
-
raise InvalidFormatError.new("#{self.class}: type of structured_command must be Array (but #{@structured_command.class})") unless @structured_command.is_a?(Array)
|
130
|
-
@structured_command.map! do |e|
|
131
|
-
if e.is_a?(Hash)
|
132
|
-
raise InvalidFormatError.new("#{self.class}: couln't convert type of element of structured_command (Hash: size is not 1)") unless e.size == 1
|
133
|
-
fl = e.flatten
|
134
|
-
if fl[1].nil?
|
135
|
-
Command.new(fl[0])
|
136
|
-
else
|
137
|
-
Command.new(fl[0], fl[1])
|
138
|
-
end
|
139
|
-
elsif e.is_a?(Array)
|
140
|
-
raise InvalidFormatError.new("#{self.class}: couln't convert type of element of structured_command (Array: length is not 1 or 2)") unless e.length == 1 || e.length == 2
|
141
|
-
if e.length == 1
|
142
|
-
Command.new(e[0])
|
143
|
-
elsif e.length == 2
|
144
|
-
Command.new(e[0], e[1])
|
145
|
-
end
|
146
|
-
else
|
147
|
-
raise InvalidFormatError.new("#{self.class}: type of element of structured_command must be Command (but #{e.class})") unless e.is_a?(Command)
|
148
|
-
e
|
149
|
-
end
|
150
|
-
end
|
151
|
-
else
|
152
|
-
@structured_command = []
|
153
|
-
end
|
154
|
-
|
155
|
-
raise InvalidFormatError.new("#{self.class}: type of cpu_limit must be Integer (but #{@cpu_limit.class})") unless @cpu_limit.is_a?(Integer)
|
156
|
-
raise InvalidFormatError.new("#{self.class}: type of memory_limit must be Integer (but #{@memory_limit.class})") unless @memory_limit.is_a?(Integer)
|
91
|
+
TypeUtil.nonnull_array_type_check(self, "args", @args, String)
|
92
|
+
TypeUtil.nonnull_array_type_check(self, "envs", @envs, String)
|
93
|
+
TypeUtil.nonnull_type_check(self, "cpu_limit", @cpu_limit, Integer)
|
94
|
+
TypeUtil.nonnull_type_check(self, "memory_limit", @memory_limit, Integer)
|
157
95
|
end
|
158
96
|
end
|
159
97
|
|
@@ -161,20 +99,21 @@ module TorigoyaKit
|
|
161
99
|
class BuildInstruction
|
162
100
|
def initialize(compile_setting, link_setting)
|
163
101
|
@compile_setting = compile_setting # ExecutionSetting
|
164
|
-
@link_setting = link_setting # ExecutionSetting
|
102
|
+
@link_setting = link_setting # ExecutionSetting?
|
165
103
|
|
166
104
|
validate
|
167
105
|
end
|
168
106
|
attr_reader :compile_setting, :link_setting
|
169
107
|
|
170
|
-
def
|
171
|
-
return
|
172
|
-
|
173
|
-
|
108
|
+
def to_hash
|
109
|
+
return {
|
110
|
+
compile_setting: @compile_setting.to_hash,
|
111
|
+
link_setting: unless @link_setting.nil? then @link_setting.to_hash else nil end
|
112
|
+
}
|
174
113
|
end
|
175
114
|
|
176
115
|
def to_msgpack(out = '')
|
177
|
-
return
|
116
|
+
return to_hash.to_msgpack(out)
|
178
117
|
end
|
179
118
|
|
180
119
|
def ==(rhs)
|
@@ -184,29 +123,30 @@ module TorigoyaKit
|
|
184
123
|
|
185
124
|
private
|
186
125
|
def validate()
|
187
|
-
|
188
|
-
|
189
|
-
raise InvalidFormatError.new("#{self.class}: type of link_setting must be ExecutionSetting (but #{@link_setting.class})") unless @link_setting.is_a?(ExecutionSetting)
|
190
|
-
end
|
126
|
+
TypeUtil.nonnull_type_check(self, "compile_setting", @compile_setting, ExecutionSetting)
|
127
|
+
TypeUtil.type_check(self, "link_setting", @link_setting, ExecutionSetting)
|
191
128
|
end
|
192
129
|
end
|
193
130
|
|
194
131
|
#
|
195
132
|
class Input
|
196
133
|
def initialize(stdin, run_setting)
|
197
|
-
@stdin = stdin # SourceData
|
134
|
+
@stdin = stdin # SourceData?
|
198
135
|
@run_setting = run_setting # ExecutionSetting
|
199
136
|
|
200
137
|
validate
|
201
138
|
end
|
202
139
|
attr_reader :stdin, :run_setting
|
203
140
|
|
204
|
-
def
|
205
|
-
return
|
141
|
+
def to_hash
|
142
|
+
return {
|
143
|
+
stdin: @stdin,
|
144
|
+
run_setting: @run_setting.to_hash
|
145
|
+
}
|
206
146
|
end
|
207
147
|
|
208
148
|
def to_msgpack(out = '')
|
209
|
-
return
|
149
|
+
return to_hash.to_msgpack(out)
|
210
150
|
end
|
211
151
|
|
212
152
|
def ==(rhs)
|
@@ -216,10 +156,8 @@ module TorigoyaKit
|
|
216
156
|
|
217
157
|
private
|
218
158
|
def validate()
|
219
|
-
|
220
|
-
|
221
|
-
end
|
222
|
-
raise InvalidFormatError.new("#{self.class}: type of run_setting must be ExecutionSetting (but #{@run_setting.class})") unless @run_setting.is_a?(ExecutionSetting)
|
159
|
+
TypeUtil.type_check(self, "stdin", @stdin, SourceData)
|
160
|
+
TypeUtil.nonnull_type_check(self, "run_setting", @run_setting, ExecutionSetting)
|
223
161
|
end
|
224
162
|
end
|
225
163
|
|
@@ -232,12 +170,12 @@ module TorigoyaKit
|
|
232
170
|
end
|
233
171
|
attr_reader :inputs
|
234
172
|
|
235
|
-
def
|
236
|
-
return [@inputs.map {|x| x.
|
173
|
+
def to_hash
|
174
|
+
return [@inputs.map {|x| x.to_hash}]
|
237
175
|
end
|
238
176
|
|
239
177
|
def to_msgpack(out = '')
|
240
|
-
return
|
178
|
+
return to_hash.to_msgpack(out)
|
241
179
|
end
|
242
180
|
|
243
181
|
def ==(rhs)
|
@@ -246,45 +184,37 @@ module TorigoyaKit
|
|
246
184
|
|
247
185
|
private
|
248
186
|
def validate()
|
249
|
-
|
250
|
-
@inputs.each do |e|
|
251
|
-
raise InvalidFormatError.new("#{self.class}: type of element of inputs must be Input (but #{e.class})") unless e.is_a?(Input)
|
252
|
-
end
|
187
|
+
TypeUtil.nonnull_array_type_check(self, "inputs", @inputs, Input)
|
253
188
|
end
|
254
189
|
end
|
255
190
|
|
256
191
|
#
|
257
192
|
class Ticket
|
258
|
-
def initialize(base_name,
|
259
|
-
@base_name = base_name
|
260
|
-
@proc_id = proc_id
|
261
|
-
@proc_version = proc_version
|
193
|
+
def initialize(base_name, source_codes, build_inst, run_inst)
|
194
|
+
@base_name = base_name # String
|
262
195
|
@source_codes = source_codes # Array!SourceData
|
263
|
-
@build_inst = build_inst # BuildInstruction
|
264
|
-
@run_inst = run_inst # RunInstruction
|
196
|
+
@build_inst = build_inst # BuildInstruction?
|
197
|
+
@run_inst = run_inst # RunInstruction?
|
265
198
|
|
266
199
|
validate
|
267
200
|
end
|
268
|
-
attr_reader :base_name, :
|
201
|
+
attr_reader :base_name, :source_codes, :build_inst, :run_inst
|
269
202
|
|
270
|
-
def
|
271
|
-
return
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
]
|
203
|
+
def to_hash
|
204
|
+
return {
|
205
|
+
base_inst: @base_name,
|
206
|
+
sources: @source_codes.map {|x| x.to_hash},
|
207
|
+
build_inst: unless @build_inst.nil? then @build_inst.to_hash else nil end,
|
208
|
+
run_inst: unless @run_inst.nil? then @run_inst.to_hash else nil end,
|
209
|
+
}
|
278
210
|
end
|
279
211
|
|
280
212
|
def to_msgpack
|
281
|
-
return
|
213
|
+
return to_hash.to_msgpack()
|
282
214
|
end
|
283
215
|
|
284
216
|
def ==(rhs)
|
285
217
|
return @base_name == rhs.base_name &&
|
286
|
-
@proc_id == rhs.proc_id &&
|
287
|
-
@proc_version == rhs.proc_version &&
|
288
218
|
@source_codes == rhs.source_codes &&
|
289
219
|
@build_inst == rhs.build_inst &&
|
290
220
|
@run_inst == rhs.run_inst
|
@@ -292,19 +222,10 @@ module TorigoyaKit
|
|
292
222
|
|
293
223
|
private
|
294
224
|
def validate()
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
@source_codes.each do |e|
|
300
|
-
raise InvalidFormatError.new("#{self.class}: type of element of source_codes must be SourceData (but #{e.class})") unless e.is_a?(SourceData)
|
301
|
-
end
|
302
|
-
unless @build_inst.nil?
|
303
|
-
raise InvalidFormatError.new("#{self.class}: type of build_inst must be BuildInstruction (but #{@build_inst.class})") unless @build_inst.is_a?(BuildInstruction)
|
304
|
-
end
|
305
|
-
unless @run_inst.nil?
|
306
|
-
raise InvalidFormatError.new("#{self.class}: type of run_inst must be RunInstruction (but #{@run_inst.class})") unless @run_inst.is_a?(RunInstruction)
|
307
|
-
end
|
225
|
+
TypeUtil.nonnull_type_check(self, "base_name", @base_name, String)
|
226
|
+
TypeUtil.nonnull_array_type_check(self, "source_codes", @source_codes, SourceData)
|
227
|
+
TypeUtil.type_check(self, "build_inst", @build_inst, BuildInstruction)
|
228
|
+
TypeUtil.type_check(self, "run_inst", @run_inst, RunInstruction)
|
308
229
|
end
|
309
230
|
end
|
310
231
|
|
@@ -314,4 +235,5 @@ module TorigoyaKit
|
|
314
235
|
super(*args)
|
315
236
|
end
|
316
237
|
end
|
238
|
+
|
317
239
|
end # module TorigoyaKit
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2015 - yutopp
|
2
|
+
# Licenced under the MIT License (http://www.opensource.org/licenses/mit-license.php)
|
3
|
+
|
4
|
+
module TorigoyaKit
|
5
|
+
class TypeUtil
|
6
|
+
def self.nil_check(tag, name, elem)
|
7
|
+
raise InvalidFormatError.new("#{tag.class}: type of `#{name}` must NOT be nil") if elem.nil?
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.type_check(tag, name, elem, expect)
|
11
|
+
return if elem.nil?
|
12
|
+
raise InvalidFormatError.new("#{tag.class}: type of `#{name}` must be #{expect} (but #{elem.class})") unless elem.is_a?(expect)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.nonnull_type_check(tag, name, elem, expect)
|
16
|
+
nil_check(tag, name, elem)
|
17
|
+
type_check(tag, name, elem, expect)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.boolean_type_check(tag, name, elem)
|
21
|
+
return if elem.nil?
|
22
|
+
raise InvalidFormatError.new("#{tag.class}: type of `#{name}` must be Boolean (but #{elem.class})") unless elem.is_a?(TrueClass) || elem.is_a?(FalseClass)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.nonnull_boolean_type_check(tag, name, elem)
|
26
|
+
nil_check(tag, name, elem)
|
27
|
+
boolean_type_check(tag, name, elem)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.array_type_check(tag, name, elem, expect)
|
31
|
+
return if elem.nil?
|
32
|
+
type_check(tag, name, elem, Array)
|
33
|
+
elem.each do |e|
|
34
|
+
type_check(tag, "element of #{name}", e, expect)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.nonnull_array_type_check(tag, name, elem, expect)
|
39
|
+
nonnull_type_check(tag, name, elem, Array)
|
40
|
+
elem.each do |e|
|
41
|
+
nonnull_type_check(tag, "element of #{name}", e, expect)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end # module TorigoyaKit
|
data/lib/torigoya_kit/version.rb
CHANGED
data/spec/cases/protocol_spec.rb
CHANGED
@@ -3,29 +3,41 @@
|
|
3
3
|
require_relative '../spec_helper'
|
4
4
|
|
5
5
|
describe :request_protocol do
|
6
|
-
b = TorigoyaKit::Protocol::Packet.new(
|
6
|
+
b = TorigoyaKit::Protocol::Packet.new(
|
7
|
+
TorigoyaKit::Protocol::MessageKindTicketRequest, # kind
|
8
|
+
42, # version
|
9
|
+
{"test": 42} # data
|
10
|
+
)
|
7
11
|
|
8
|
-
it "size of kind should be 1" do
|
12
|
+
it "size of @kind should be 1" do
|
9
13
|
expect(b.kind.size).to eq 1
|
10
14
|
end
|
11
15
|
|
12
|
-
it "kind should be TorigoyaKit::Protocol::MessageKindAcceptRequest" do
|
13
|
-
expect(b.kind.bytes).to eq [
|
16
|
+
it "@kind should be TorigoyaKit::Protocol::MessageKindAcceptRequest" do
|
17
|
+
expect(b.kind.bytes).to eq [0x01]
|
14
18
|
end
|
15
19
|
|
16
|
-
it "size of
|
17
|
-
expect(b.
|
20
|
+
it "size of @version should be 4" do
|
21
|
+
expect(b.version.size).to eq 4
|
18
22
|
end
|
19
23
|
|
20
|
-
it "
|
21
|
-
expect(b.
|
24
|
+
it "@version should be 42" do
|
25
|
+
expect(b.version.bytes).to eq [0x2a, 0x00, 0x00, 0x00]
|
22
26
|
end
|
23
27
|
|
24
|
-
it "size of
|
25
|
-
expect(b.
|
28
|
+
it "size of @length should be 4" do
|
29
|
+
expect(b.length.size).to eq 4
|
26
30
|
end
|
27
31
|
|
28
|
-
it "
|
29
|
-
expect(b.
|
32
|
+
it "@length should be 3" do
|
33
|
+
expect(b.length.bytes).to eq [0x07, 0x00, 0x00, 0x00]
|
34
|
+
end
|
35
|
+
|
36
|
+
it "size of @message should be 7" do
|
37
|
+
expect(b.message.size).to eq 7
|
38
|
+
end
|
39
|
+
|
40
|
+
it "@message should be [129, 164, 116, 101, 115, 116, 42]" do
|
41
|
+
expect(b.message.bytes).to eq [129, 164, 116, 101, 115, 116, 42]
|
30
42
|
end
|
31
43
|
end
|
data/spec/cases/session_spec.rb
CHANGED
@@ -3,16 +3,27 @@
|
|
3
3
|
require_relative '../spec_helper'
|
4
4
|
|
5
5
|
describe :session do
|
6
|
+
port = 23432
|
7
|
+
|
6
8
|
it "session proc exec_ticket" do
|
7
|
-
s = TorigoyaKit::Session.new("localhost",
|
8
|
-
|
9
|
+
s = TorigoyaKit::Session.new("localhost", port)
|
10
|
+
t = s.exec_ticket(make_ticket())
|
11
|
+
p t
|
12
|
+
expect(t.compile.result.system_error_status).to eq 0
|
13
|
+
expect(t.compile.result.exited).to eq true
|
14
|
+
expect(t.compile.result.exit_status).to eq 0
|
15
|
+
|
16
|
+
expect(t.link.result.system_error_status).to eq 0
|
17
|
+
expect(t.link.result.exited).to eq true
|
18
|
+
expect(t.link.result.exit_status).to eq 0
|
19
|
+
|
20
|
+
expect(t.run[0].result.system_error_status).to eq 0
|
21
|
+
expect(t.run[0].result.exited).to eq true
|
22
|
+
expect(t.run[0].result.exit_status).to eq 0
|
9
23
|
end
|
10
24
|
|
11
|
-
it "session proc
|
12
|
-
|
13
|
-
|
14
|
-
#s.exec_ticket(make_ticket())
|
15
|
-
#s.update_proc_table()
|
16
|
-
#p s.get_proc_table()
|
25
|
+
it "session proc update_packages" do
|
26
|
+
s = TorigoyaKit::Session.new("localhost", port)
|
27
|
+
expect(s.update_packages()).to eq 0
|
17
28
|
end
|
18
29
|
end
|
data/spec/cases/ticket_spec.rb
CHANGED
@@ -14,73 +14,67 @@ describe :ticket do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
#
|
17
|
-
dummy_es = TorigoyaKit::ExecutionSetting.new(
|
17
|
+
dummy_es = TorigoyaKit::ExecutionSetting.new([], [], 0, 0)
|
18
18
|
dummy_bi = TorigoyaKit::BuildInstruction.new(dummy_es, dummy_es)
|
19
19
|
dummy_ri = TorigoyaKit::RunInstruction.new([])
|
20
20
|
|
21
21
|
it "construct ticket" do
|
22
22
|
expect do
|
23
|
-
TorigoyaKit::Ticket.new(nil, nil, nil, nil
|
23
|
+
TorigoyaKit::Ticket.new(nil, nil, nil, nil)
|
24
24
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
25
25
|
|
26
26
|
expect do
|
27
|
-
TorigoyaKit::Ticket.new("", nil, nil, nil
|
27
|
+
TorigoyaKit::Ticket.new("", nil, nil, nil)
|
28
28
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
29
29
|
|
30
30
|
expect do
|
31
|
-
TorigoyaKit::Ticket.new("",
|
31
|
+
TorigoyaKit::Ticket.new("", [], "", nil)
|
32
32
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
33
33
|
|
34
34
|
expect do
|
35
|
-
TorigoyaKit::Ticket.new("",
|
35
|
+
TorigoyaKit::Ticket.new("", [], "", "")
|
36
36
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
37
37
|
|
38
38
|
expect do
|
39
|
-
TorigoyaKit::Ticket.new(
|
39
|
+
TorigoyaKit::Ticket.new(0, [], "", "")
|
40
40
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
41
41
|
|
42
42
|
expect do
|
43
|
-
TorigoyaKit::Ticket.new("", 0, "",
|
43
|
+
TorigoyaKit::Ticket.new("", 0, "", "")
|
44
44
|
end.to raise_error(TorigoyaKit::InvalidFormatError)
|
45
45
|
|
46
46
|
expect do
|
47
|
-
TorigoyaKit::Ticket.new("",
|
47
|
+
TorigoyaKit::Ticket.new("", [], dummy_bi, dummy_ri)
|
48
48
|
end.to_not raise_error
|
49
49
|
|
50
50
|
expect do
|
51
|
-
TorigoyaKit::Ticket.new("",
|
51
|
+
TorigoyaKit::Ticket.new("", [], dummy_bi, dummy_ri).to_msgpack
|
52
52
|
end.to_not raise_error
|
53
53
|
|
54
54
|
expect do
|
55
|
-
TorigoyaKit::Ticket.new("",
|
55
|
+
TorigoyaKit::Ticket.new("", [], nil, dummy_ri)
|
56
56
|
end.to_not raise_error
|
57
57
|
|
58
58
|
expect do
|
59
|
-
TorigoyaKit::Ticket.new("",
|
59
|
+
TorigoyaKit::Ticket.new("", [], nil, dummy_ri).to_msgpack
|
60
60
|
end.to_not raise_error
|
61
|
-
end
|
62
|
-
|
63
|
-
it "construct execution setting" do
|
64
|
-
commands = [TorigoyaKit::Command.new("A=", "B"),
|
65
|
-
TorigoyaKit::Command.new("unit")
|
66
|
-
]
|
67
|
-
expected = TorigoyaKit::ExecutionSetting.new("test command", commands, 100, 200)
|
68
61
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
cloned_dummy = TorigoyaKit::ExecutionSetting.new("test command", cloned_commands, 100, 200)
|
62
|
+
expect do
|
63
|
+
TorigoyaKit::Ticket.new("", [], dummy_bi, nil)
|
64
|
+
end.to_not raise_error
|
73
65
|
|
74
|
-
expect
|
66
|
+
expect do
|
67
|
+
TorigoyaKit::Ticket.new("", [], dummy_bi, nil).to_msgpack
|
68
|
+
end.to_not raise_error
|
75
69
|
end
|
76
70
|
|
77
71
|
it "setting" do
|
78
|
-
cloned_es = TorigoyaKit::ExecutionSetting.new(
|
72
|
+
cloned_es = TorigoyaKit::ExecutionSetting.new([], [], 0, 0)
|
79
73
|
expect(cloned_es).to eq dummy_es
|
80
74
|
end
|
81
75
|
|
82
76
|
it "build inst" do
|
83
|
-
cloned_es = TorigoyaKit::ExecutionSetting.new(
|
77
|
+
cloned_es = TorigoyaKit::ExecutionSetting.new([], [], 0, 0)
|
84
78
|
cloned_bi = TorigoyaKit::BuildInstruction.new(cloned_es, cloned_es)
|
85
79
|
|
86
80
|
expect(cloned_bi).to eq dummy_bi
|
@@ -91,24 +85,6 @@ describe :ticket do
|
|
91
85
|
expect(cloned_ri).to eq dummy_ri
|
92
86
|
end
|
93
87
|
|
94
|
-
it "setting conversion list" do
|
95
|
-
commands = [TorigoyaKit::Command.new("A=", "B"),
|
96
|
-
TorigoyaKit::Command.new("unit")
|
97
|
-
]
|
98
|
-
expected = TorigoyaKit::ExecutionSetting.new("test command", commands, 100, 200)
|
99
|
-
|
100
|
-
expect(TorigoyaKit::ExecutionSetting.new("test command", [["A=", "B"], ["unit"]], 100, 200)).to eq expected
|
101
|
-
end
|
102
|
-
|
103
|
-
it "setting conversion list" do
|
104
|
-
commands = [TorigoyaKit::Command.new("A=", "B"),
|
105
|
-
TorigoyaKit::Command.new("unit")
|
106
|
-
]
|
107
|
-
expected = TorigoyaKit::ExecutionSetting.new("test command", commands, 100, 200)
|
108
|
-
|
109
|
-
expect(TorigoyaKit::ExecutionSetting.new("test command", [{"A=" => "B"}, {"unit"=>nil}], 100, 200)).to eq expected
|
110
|
-
end
|
111
|
-
|
112
88
|
it "source default" do
|
113
89
|
expected = TorigoyaKit::SourceData.new("*default*", "hoge")
|
114
90
|
expect(TorigoyaKit::SourceData.new(nil, "hoge")).to eq expected
|