roku_builder 4.25.4 → 4.26.0

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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/intergration/roku_builder/test_helper.rb +2 -3
  3. data/intergration/roku_builder/test_profiler.rb +1 -1
  4. data/lib/roku_builder/config_parser.rb +4 -5
  5. data/lib/roku_builder/device_manager.rb +100 -0
  6. data/lib/roku_builder/plugins/core.rb +3 -1
  7. data/lib/roku_builder/plugins/indentation_inspector.rb +2 -2
  8. data/lib/roku_builder/plugins/inspector.rb +36 -26
  9. data/lib/roku_builder/plugins/line_inspector.rb +27 -6
  10. data/lib/roku_builder/plugins/linker.rb +29 -22
  11. data/lib/roku_builder/plugins/loader.rb +30 -11
  12. data/lib/roku_builder/plugins/monitor.rb +19 -17
  13. data/lib/roku_builder/plugins/navigator.rb +40 -34
  14. data/lib/roku_builder/plugins/packager.rb +109 -92
  15. data/lib/roku_builder/plugins/profiler.rb +24 -15
  16. data/lib/roku_builder/plugins/tester.rb +15 -13
  17. data/lib/roku_builder/util.rb +39 -17
  18. data/lib/roku_builder/version.rb +1 -1
  19. data/lib/roku_builder.rb +3 -19
  20. data/roku_builder.gemspec +3 -2
  21. data/test/roku_builder/plugins/test_analyzer.rb +19 -10
  22. data/test/roku_builder/plugins/test_core.rb +2 -3
  23. data/test/roku_builder/plugins/test_inspector.rb +48 -8
  24. data/test/roku_builder/plugins/test_linker.rb +66 -10
  25. data/test/roku_builder/plugins/test_loader.rb +44 -15
  26. data/test/roku_builder/plugins/test_monitor.rb +33 -16
  27. data/test/roku_builder/plugins/test_navigator.rb +55 -14
  28. data/test/roku_builder/plugins/test_packager.rb +118 -34
  29. data/test/roku_builder/plugins/test_profiler.rb +153 -78
  30. data/test/roku_builder/plugins/test_tester.rb +20 -5
  31. data/test/roku_builder/test_device_manager.rb +187 -0
  32. data/test/roku_builder/test_files/analyzer_test/dont_use_hello_world.json +11 -0
  33. data/test/roku_builder/test_files/analyzer_test/linter_positive_match.json +13 -0
  34. data/test/roku_builder/test_helper.rb +6 -0
  35. data/test/roku_builder/test_roku_builder.rb +5 -42
  36. metadata +27 -6
@@ -10,9 +10,12 @@ module RokuBuilder
10
10
  RokuBuilder.setup_plugins
11
11
  register_plugins(Packager)
12
12
  @requests = []
13
+ @device_manager = Minitest::Mock.new
13
14
  end
14
15
  def teardown
15
16
  @requests.each {|req| remove_request_stub(req)}
17
+ @device_manager.verify
18
+ clean_device_locks()
16
19
  end
17
20
  def test_packager_parse_options_long
18
21
  parser = OptionParser.new
@@ -61,6 +64,10 @@ module RokuBuilder
61
64
  end
62
65
  def test_packager_package_failed
63
66
  config, options = build_config_options_objects(PackagerTest, {package: true, stage: "production"}, false)
67
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
68
+ @device_manager.expect(:reserve_device, device, no_lock: false)
69
+ @device_manager.expect(:release_device, nil, [device])
70
+
64
71
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/keypress/Home").
65
72
  to_return(status: 200, body: "", headers: {}))
66
73
  @requests.push(stub_request(:post, "http://192.168.0.100/plugin_install").
@@ -68,8 +75,10 @@ module RokuBuilder
68
75
  @requests.push(stub_request(:post, "http://192.168.0.100/plugin_package").
69
76
  to_return(status: 200, body: "Failed: Error.", headers: {}))
70
77
  packager = Packager.new(config: config)
71
- assert_raises ExecutionError do
72
- packager.package(options: options)
78
+ RokuBuilder.stub(:device_manager, @device_manager) do
79
+ assert_raises ExecutionError do
80
+ packager.package(options: options)
81
+ end
73
82
  end
74
83
  end
75
84
  def test_packager_package
@@ -88,9 +97,13 @@ module RokuBuilder
88
97
  @requests.push(stub_request(:get, "http://192.168.0.100/pkgs/pkg_url").
89
98
  to_return(status: 200, body: body, headers: {}))
90
99
 
91
- loader.expect(:sideload, nil, [Hash])
100
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
101
+ @device_manager.expect(:reserve_device, device, no_lock: false)
102
+ @device_manager.expect(:release_device, nil, [device])
103
+
104
+ loader.expect(:sideload, nil, options: Hash, device: device)
92
105
  io.expect(:write, nil, ["package_body"])
93
- inspector.expect(:inspect, nil, [Hash])
106
+ inspector.expect(:inspect, nil, options: Hash, device: device)
94
107
 
95
108
  logger.expect(:debug, nil, [String])
96
109
  io.expect(:each_line, nil)
@@ -101,12 +114,14 @@ module RokuBuilder
101
114
  Logger.class_variable_set(:@@instance, logger)
102
115
  packager = Packager.new(config: config)
103
116
  dev_id = Proc.new {"#{Random.rand(999999999999)}"}
104
- Loader.stub(:new, loader) do
105
- Time.stub(:now, Time.at(0)) do
106
- File.stub(:open, nil, io) do
107
- Inspector.stub(:new, inspector) do
108
- packager.stub(:dev_id, dev_id) do
109
- packager.package(options: options)
117
+ RokuBuilder.stub(:device_manager, @device_manager) do
118
+ Loader.stub(:new, loader) do
119
+ Time.stub(:now, Time.at(0)) do
120
+ File.stub(:open, nil, io) do
121
+ Inspector.stub(:new, inspector) do
122
+ packager.stub(:dev_id, dev_id) do
123
+ packager.package(options: options)
124
+ end
110
125
  end
111
126
  end
112
127
  end
@@ -126,6 +141,10 @@ module RokuBuilder
126
141
  config[:projects][:project1][:stages][:production][:squash] = true
127
142
  config, options = build_config_options_objects(PackagerTest, {package: true, stage: "production", inspect_package: true, verbose: true}, false, config)
128
143
 
144
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
145
+ @device_manager.expect(:reserve_device, device, no_lock: false)
146
+ @device_manager.expect(:release_device, nil, [device])
147
+
129
148
  @requests.push(stub_request(:post, "http://192.168.0.100/plugin_inspect").
130
149
  to_return(status: 200, body: "", headers: {}).times(2))
131
150
  body = "<a href=\"pkgs\">pkg_url</a>"
@@ -135,10 +154,10 @@ module RokuBuilder
135
154
  @requests.push(stub_request(:get, "http://192.168.0.100/pkgs/pkg_url").
136
155
  to_return(status: 200, body: body, headers: {}))
137
156
 
138
- loader.expect(:sideload, nil, [Hash])
139
- loader.expect(:squash, nil, [Hash])
157
+ loader.expect(:sideload, nil, options: Hash, device: device)
158
+ loader.expect(:squash, nil, options: Hash, device: device)
140
159
  io.expect(:write, nil, ["package_body"])
141
- inspector.expect(:inspect, nil, [Hash])
160
+ inspector.expect(:inspect, nil, options: Hash, device: device)
142
161
 
143
162
  logger.expect(:debug, nil, [String])
144
163
  io.expect(:each_line, nil)
@@ -149,12 +168,14 @@ module RokuBuilder
149
168
  Logger.class_variable_set(:@@instance, logger)
150
169
  packager = Packager.new(config: config)
151
170
  dev_id = Proc.new {"#{Random.rand(999999999999)}"}
152
- Loader.stub(:new, loader) do
153
- Time.stub(:now, Time.at(0)) do
154
- File.stub(:open, nil, io) do
155
- Inspector.stub(:new, inspector) do
156
- packager.stub(:dev_id, dev_id) do
157
- packager.package(options: options)
171
+ RokuBuilder.stub(:device_manager, @device_manager) do
172
+ Loader.stub(:new, loader) do
173
+ Time.stub(:now, Time.at(0)) do
174
+ File.stub(:open, nil, io) do
175
+ Inspector.stub(:new, inspector) do
176
+ packager.stub(:dev_id, dev_id) do
177
+ packager.package(options: options)
178
+ end
158
179
  end
159
180
  end
160
181
  end
@@ -171,8 +192,16 @@ module RokuBuilder
171
192
  to_return(status: 200, body: body, headers: {}))
172
193
 
173
194
  config = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false)[0]
195
+
196
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
197
+ @device_manager.expect(:reserve_device, device, no_lock: false)
198
+ @device_manager.expect(:release_device, nil, [device])
199
+
174
200
  packager = Packager.new(config: config)
175
- dev_id = packager.dev_id
201
+ dev_id = nil
202
+ RokuBuilder.stub(:device_manager, @device_manager) do
203
+ dev_id = packager.dev_id
204
+ end
176
205
 
177
206
  assert_equal "dev_id", dev_id
178
207
  end
@@ -182,8 +211,15 @@ module RokuBuilder
182
211
  to_return(status: 200, body: body, headers: {}))
183
212
 
184
213
  config = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false)[0]
214
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
215
+ @device_manager.expect(:reserve_device, device, no_lock: false)
216
+ @device_manager.expect(:release_device, nil, [device])
217
+
185
218
  packager = Packager.new(config: config)
186
- dev_id = packager.dev_id
219
+ dev_id = nil
220
+ RokuBuilder.stub(:device_manager, @device_manager) do
221
+ dev_id = packager.dev_id
222
+ end
187
223
 
188
224
  assert_equal "dev_id", dev_id
189
225
  end
@@ -195,10 +231,16 @@ module RokuBuilder
195
231
  logger.expect(:debug, nil) {|s| s =~ /\d* -> \d*/}
196
232
  dev_id = Proc.new {"#{Random.rand(999999999999)}"}
197
233
  config, options = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false)
234
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
235
+ @device_manager.expect(:reserve_device, device, no_lock: false)
236
+ @device_manager.expect(:release_device, nil, [device])
237
+
198
238
  packager = Packager.new(config: config)
199
239
  Logger.class_variable_set(:@@instance, logger)
200
- packager.stub(:dev_id, dev_id) do
201
- packager.key(options: options)
240
+ RokuBuilder.stub(:device_manager, @device_manager) do
241
+ packager.stub(:dev_id, dev_id) do
242
+ packager.key(options: options)
243
+ end
202
244
  end
203
245
  end
204
246
 
@@ -210,9 +252,32 @@ module RokuBuilder
210
252
  logger.expect(:debug, nil) {|s| s =~ /\d* -> \d*/}
211
253
  dev_id = Proc.new {"#{Random.rand(999999999999)}"}
212
254
  config, options = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false)
255
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
256
+ @device_manager.expect(:reserve_device, device, no_lock: false)
257
+ @device_manager.expect(:release_device, nil, [device])
258
+
213
259
  packager = Packager.new(config: config)
214
260
  Logger.class_variable_set(:@@instance, logger)
215
- packager.stub(:dev_id, dev_id) do
261
+ RokuBuilder.stub(:device_manager, @device_manager) do
262
+ packager.stub(:dev_id, dev_id) do
263
+ packager.key(options: options)
264
+ end
265
+ end
266
+ end
267
+
268
+ def test_packager_key_same_device
269
+ config, options = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false)
270
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
271
+ @device_manager.expect(:reserve_device, device, no_lock: false)
272
+ @device_manager.expect(:release_device, nil, [device])
273
+
274
+ body = "<p> Your Dev ID: <font face=\"Courier\">dev_id</font> </p>"
275
+ @requests.push(stub_request(:get, "http://192.168.0.100/plugin_package").
276
+ to_return(status: 200, body: body, headers: {}))
277
+ @requests.push(stub_request(:post, "http://192.168.0.100/plugin_inspect").
278
+ to_return(status: 200, body: "", headers: {}))
279
+ packager = Packager.new(config: config)
280
+ RokuBuilder.stub(:device_manager, @device_manager) do
216
281
  packager.key(options: options)
217
282
  end
218
283
  end
@@ -230,9 +295,15 @@ module RokuBuilder
230
295
  connection.expect(:close, nil, [])
231
296
 
232
297
  config = build_config_options_objects(PackagerTest, {genkey: true}, false)[0]
298
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
299
+ @device_manager.expect(:reserve_device, device, no_lock: false)
300
+ @device_manager.expect(:release_device, nil, [device])
301
+
233
302
  packager = Packager.new(config: config)
234
- Net::Telnet.stub(:new, connection) do
235
- packager.send(:generate_new_key)
303
+ RokuBuilder.stub(:device_manager, @device_manager) do
304
+ Net::Telnet.stub(:new, connection) do
305
+ packager.send(:generate_new_key)
306
+ end
236
307
  end
237
308
  end
238
309
 
@@ -240,18 +311,22 @@ module RokuBuilder
240
311
  config = good_config(PackagerTest)
241
312
  config[:projects][:project1][:stages][:production].delete(:key)
242
313
  config, options = build_config_options_objects(PackagerTest, {key: true, stage: "production"}, false, config)
314
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
315
+ @device_manager.expect(:reserve_device, device, no_lock: false)
316
+ @device_manager.expect(:release_device, nil, [device])
317
+
243
318
  packager = Packager.new(config: config)
244
319
  dev_id = Proc.new {"#{Random.rand(999999999999)}"}
245
320
  assert_raises ExecutionError do
246
- packager.stub(:dev_id, dev_id) do
247
- packager.key(options: options)
321
+ RokuBuilder.stub(:device_manager, @device_manager) do
322
+ packager.stub(:dev_id, dev_id) do
323
+ packager.key(options: options)
324
+ end
248
325
  end
249
326
  end
250
327
  end
251
328
 
252
329
  def test_packager_genkey
253
- loader = Minitest::Mock.new
254
- loader.expect(:sideload, nil, [Hash])
255
330
 
256
331
  body = "<a href=\"pkgs\">pkg_url</a>"
257
332
  @requests.push(stub_request(:post, "http://192.168.0.100/plugin_package").
@@ -259,13 +334,22 @@ module RokuBuilder
259
334
  @requests.push(stub_request(:get, "http://192.168.0.100/pkgs/pkg_url").
260
335
  to_return(status: 200, body: "", headers: {}))
261
336
  config, options = build_config_options_objects(PackagerTest, {genkey: true}, false)
337
+
338
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
339
+ @device_manager.expect(:reserve_device, device, no_lock: false)
340
+ @device_manager.expect(:release_device, nil, [device])
341
+
342
+ loader = Minitest::Mock.new
343
+ loader.expect(:sideload, nil, options: Hash)
344
+
262
345
  packager = Packager.new(config: config)
263
- Loader.stub(:new, loader) do
264
- packager.stub(:generate_new_key, ["password", "dev_id"]) do
265
- packager.genkey(options: options)
346
+ RokuBuilder.stub(:device_manager, @device_manager) do
347
+ Loader.stub(:new, loader) do
348
+ packager.stub(:generate_new_key, ["password", "dev_id"]) do
349
+ packager.genkey(options: options)
350
+ end
266
351
  end
267
352
  end
268
-
269
353
  loader.verify
270
354
  end
271
355
  end
@@ -11,6 +11,10 @@ module RokuBuilder
11
11
  unless RokuBuilder.plugins.include?(Profiler)
12
12
  RokuBuilder.register_plugin(Profiler)
13
13
  end
14
+ @device_manager = Minitest::Mock.new
15
+ end
16
+ def teardown
17
+ @device_manager.verify
14
18
  end
15
19
  def test_profiler_parse_options_long
16
20
  parser = OptionParser.new
@@ -23,12 +27,16 @@ module RokuBuilder
23
27
  def test_profiler_node_tracking
24
28
  options = {profile: "stats"}
25
29
  config, options = build_config_options_objects(ProfilerTest, options, false)
30
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
31
+ @device_manager.expect(:reserve_device, device, no_lock: true)
32
+ @device_manager.expect(:release_device, nil, [device])
33
+
26
34
  waitfor = Proc.new do |telnet_config, &blk|
27
- assert_equal(/.+/, telnet_config["Match"])
28
- assert_equal(1, telnet_config["Timeout"])
29
- txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
30
- blk.call(txt)
31
- true
35
+ assert_equal(/.+/, telnet_config["Match"])
36
+ assert_equal(1, telnet_config["Timeout"])
37
+ txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
38
+ blk.call(txt)
39
+ true
32
40
  end
33
41
  count = 0
34
42
  read_stub = Proc.new do |size|
@@ -43,10 +51,12 @@ module RokuBuilder
43
51
  connection.expect(:waitfor, nil, &waitfor)
44
52
  connection.expect(:close, nil)
45
53
 
46
- Net::Telnet.stub(:new, connection) do
47
- profiler.stub(:printf, nil) do
48
- STDIN.stub(:read, read_stub) do
49
- profiler.node_tracking(options: options)
54
+ RokuBuilder.stub(:device_manager, @device_manager) do
55
+ Net::Telnet.stub(:new, connection) do
56
+ profiler.stub(:printf, nil) do
57
+ STDIN.stub(:read, read_stub) do
58
+ profiler.node_tracking(options: options)
59
+ end
50
60
  end
51
61
  end
52
62
  end
@@ -56,12 +66,16 @@ module RokuBuilder
56
66
  def test_profiler_stats
57
67
  options = {profile: "stats"}
58
68
  config, options = build_config_options_objects(ProfilerTest, options, false)
69
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
70
+ @device_manager.expect(:reserve_device, device, no_lock: true)
71
+ @device_manager.expect(:release_device, nil, [device])
72
+
59
73
  waitfor = Proc.new do |telnet_config, &blk|
60
- assert_equal(/.+/, telnet_config["Match"])
61
- assert_equal(1, telnet_config["Timeout"])
62
- txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
63
- blk.call(txt)
64
- true
74
+ assert_equal(/.+/, telnet_config["Match"])
75
+ assert_equal(1, telnet_config["Timeout"])
76
+ txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
77
+ blk.call(txt)
78
+ true
65
79
  end
66
80
  connection = Minitest::Mock.new
67
81
  profiler = Profiler.new(config: config)
@@ -70,9 +84,11 @@ module RokuBuilder
70
84
  connection.expect(:waitfor, nil, &waitfor)
71
85
  connection.expect(:close, nil)
72
86
 
73
- Net::Telnet.stub(:new, connection) do
74
- profiler.stub(:printf, nil) do
75
- profiler.profile(options: options)
87
+ RokuBuilder.stub(:device_manager, @device_manager) do
88
+ Net::Telnet.stub(:new, connection) do
89
+ profiler.stub(:printf, nil) do
90
+ profiler.profile(options: options)
91
+ end
76
92
  end
77
93
  end
78
94
 
@@ -81,12 +97,16 @@ module RokuBuilder
81
97
  def test_profiler_all
82
98
  options = {profile: "all"}
83
99
  config, options = build_config_options_objects(ProfilerTest, options, false)
100
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
101
+ @device_manager.expect(:reserve_device, device, no_lock: true)
102
+ @device_manager.expect(:release_device, nil, [device])
103
+
84
104
  waitfor = Proc.new do |telnet_config, &blk|
85
- assert_equal(/.+/, telnet_config["Match"])
86
- assert_equal(1, telnet_config["Timeout"])
87
- txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
88
- blk.call(txt)
89
- true
105
+ assert_equal(/.+/, telnet_config["Match"])
106
+ assert_equal(1, telnet_config["Timeout"])
107
+ txt = "<All_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></All_Nodes>\n"
108
+ blk.call(txt)
109
+ true
90
110
  end
91
111
  connection = Minitest::Mock.new
92
112
  profiler = Profiler.new(config: config)
@@ -95,9 +115,11 @@ module RokuBuilder
95
115
  connection.expect(:waitfor, nil, &waitfor)
96
116
  connection.expect(:close, nil)
97
117
 
98
- Net::Telnet.stub(:new, connection) do
99
- profiler.stub(:print, nil) do
100
- profiler.profile(options: options)
118
+ RokuBuilder.stub(:device_manager, @device_manager) do
119
+ Net::Telnet.stub(:new, connection) do
120
+ profiler.stub(:print, nil) do
121
+ profiler.profile(options: options)
122
+ end
101
123
  end
102
124
  end
103
125
 
@@ -106,12 +128,16 @@ module RokuBuilder
106
128
  def test_profiler_roots
107
129
  options = {profile: "roots"}
108
130
  config, options = build_config_options_objects(ProfilerTest, options, false)
131
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
132
+ @device_manager.expect(:reserve_device, device, no_lock: true)
133
+ @device_manager.expect(:release_device, nil, [device])
134
+
109
135
  waitfor = Proc.new do |telnet_config, &blk|
110
- assert_equal(/.+/, telnet_config["Match"])
111
- assert_equal(1, telnet_config["Timeout"])
112
- txt = "<Root_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></Root_Nodes>\n"
113
- blk.call(txt)
114
- true
136
+ assert_equal(/.+/, telnet_config["Match"])
137
+ assert_equal(1, telnet_config["Timeout"])
138
+ txt = "<Root_Nodes><NodeA /><NodeB /><NodeC><NodeD /></NodeC></Root_Nodes>\n"
139
+ blk.call(txt)
140
+ true
115
141
  end
116
142
  connection = Minitest::Mock.new
117
143
  profiler = Profiler.new(config: config)
@@ -120,9 +146,11 @@ module RokuBuilder
120
146
  connection.expect(:waitfor, nil, &waitfor)
121
147
  connection.expect(:close, nil)
122
148
 
123
- Net::Telnet.stub(:new, connection) do
124
- profiler.stub(:print, nil) do
125
- profiler.profile(options: options)
149
+ RokuBuilder.stub(:device_manager, @device_manager) do
150
+ Net::Telnet.stub(:new, connection) do
151
+ profiler.stub(:print, nil) do
152
+ profiler.profile(options: options)
153
+ end
126
154
  end
127
155
  end
128
156
  connection.verify
@@ -130,12 +158,16 @@ module RokuBuilder
130
158
  def test_profiler_node
131
159
  options = {profile: "nodeId"}
132
160
  config, options = build_config_options_objects(ProfilerTest, options, false)
161
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
162
+ @device_manager.expect(:reserve_device, device, no_lock: true)
163
+ @device_manager.expect(:release_device, nil, [device])
164
+
133
165
  waitfor = Proc.new do |telnet_config, &blk|
134
- assert_equal(/.+/, telnet_config["Match"])
135
- assert_equal(1, telnet_config["Timeout"])
136
- txt = "<nodeId><NodeA /><NodeB /><NodeC><NodeD /></NodeC></nodeId>\n"
137
- blk.call(txt)
138
- true
166
+ assert_equal(/.+/, telnet_config["Match"])
167
+ assert_equal(1, telnet_config["Timeout"])
168
+ txt = "<nodeId><NodeA /><NodeB /><NodeC><NodeD /></NodeC></nodeId>\n"
169
+ blk.call(txt)
170
+ true
139
171
  end
140
172
  connection = Minitest::Mock.new
141
173
  profiler = Profiler.new(config: config)
@@ -144,9 +176,11 @@ module RokuBuilder
144
176
  connection.expect(:waitfor, nil, &waitfor)
145
177
  connection.expect(:close, nil)
146
178
 
147
- Net::Telnet.stub(:new, connection) do
148
- profiler.stub(:print, nil) do
149
- profiler.profile(options: options)
179
+ RokuBuilder.stub(:device_manager, @device_manager) do
180
+ Net::Telnet.stub(:new, connection) do
181
+ profiler.stub(:print, nil) do
182
+ profiler.profile(options: options)
183
+ end
150
184
  end
151
185
  end
152
186
  connection.verify
@@ -154,12 +188,16 @@ module RokuBuilder
154
188
  def test_profiler_images
155
189
  options = {profile: "images"}
156
190
  config, options = build_config_options_objects(ProfilerTest, options, false)
191
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
192
+ @device_manager.expect(:reserve_device, device, no_lock: true)
193
+ @device_manager.expect(:release_device, nil, [device])
194
+
157
195
  waitfor = Proc.new do |telnet_config, &blk|
158
- assert_equal(/.+/, telnet_config["Match"])
159
- assert_equal(1, telnet_config["Timeout"])
160
- txt = " RoGraphics instance\n0x234 1 2 3 4\nAvailable memory\n"
161
- blk.call(txt)
162
- true
196
+ assert_equal(/.+/, telnet_config["Match"])
197
+ assert_equal(1, telnet_config["Timeout"])
198
+ txt = " RoGraphics instance\n0x234 1 2 3 4\nAvailable memory\n"
199
+ blk.call(txt)
200
+ true
163
201
  end
164
202
  connection = Minitest::Mock.new
165
203
  profiler = Profiler.new(config: config)
@@ -168,9 +206,11 @@ module RokuBuilder
168
206
  connection.expect(:waitfor, nil, &waitfor)
169
207
  connection.expect(:close, nil)
170
208
 
171
- Net::Telnet.stub(:new, connection) do
172
- profiler.stub(:print, nil) do
173
- profiler.profile(options: options)
209
+ RokuBuilder.stub(:device_manager, @device_manager) do
210
+ Net::Telnet.stub(:new, connection) do
211
+ profiler.stub(:print, nil) do
212
+ profiler.profile(options: options)
213
+ end
174
214
  end
175
215
  end
176
216
 
@@ -180,12 +220,16 @@ module RokuBuilder
180
220
  def test_profiler_memmory
181
221
  options = {profile: "memmory"}
182
222
  config, options = build_config_options_objects(ProfilerTest, options, false)
223
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
224
+ @device_manager.expect(:reserve_device, device, no_lock: true)
225
+ @device_manager.expect(:release_device, nil, [device])
226
+
183
227
  waitfor = Proc.new do |telnet_config, &blk|
184
- assert_equal(/.+/, telnet_config["Match"])
185
- assert_equal(1, telnet_config["Timeout"])
186
- txt = " RoGraphics instance 0x123\nAvailable memory 123 used 456 max 579\n"
187
- blk.call(txt)
188
- true
228
+ assert_equal(/.+/, telnet_config["Match"])
229
+ assert_equal(1, telnet_config["Timeout"])
230
+ txt = " RoGraphics instance 0x123\nAvailable memory 123 used 456 max 579\n"
231
+ blk.call(txt)
232
+ true
189
233
  end
190
234
  print_count = 0
191
235
  print_stub = Proc.new do |message|
@@ -216,9 +260,11 @@ module RokuBuilder
216
260
  connection.expect(:puts, nil, &puts_stub)
217
261
  connection.expect(:close, nil)
218
262
 
219
- Net::Telnet.stub(:new, connection) do
220
- profiler.stub(:print, print_stub) do
221
- profiler.profile(options: options)
263
+ RokuBuilder.stub(:device_manager, @device_manager) do
264
+ Net::Telnet.stub(:new, connection) do
265
+ profiler.stub(:print, print_stub) do
266
+ profiler.profile(options: options)
267
+ end
222
268
  end
223
269
  end
224
270
 
@@ -228,15 +274,19 @@ module RokuBuilder
228
274
  def test_profiler_textures
229
275
  options = {profile: "textures"}
230
276
  config, options = build_config_options_objects(ProfilerTest, options, false)
277
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
278
+ @device_manager.expect(:reserve_device, device, no_lock: true)
279
+ @device_manager.expect(:release_device, nil, [device])
280
+
231
281
  waitfor = Proc.new do |telnet_config, &blk|
232
- assert_equal(/.+/, telnet_config["Match"])
233
- assert_equal(1, telnet_config["Timeout"])
234
- txt = "*******\ntexture\n"
235
- blk.call(txt)
236
- true
282
+ assert_equal(/.+/, telnet_config["Match"])
283
+ assert_equal(1, telnet_config["Timeout"])
284
+ txt = "*******\ntexture\n"
285
+ blk.call(txt)
286
+ true
237
287
  end
238
288
  timeout = Proc.new do |telnet_config, &blk|
239
- raise ::Net::ReadTimeout
289
+ raise ::Net::ReadTimeout
240
290
  end
241
291
  connection = Minitest::Mock.new
242
292
  profiler = Profiler.new(config: config)
@@ -246,9 +296,11 @@ module RokuBuilder
246
296
  connection.expect(:waitfor, nil, &timeout)
247
297
  connection.expect(:close, nil)
248
298
 
249
- Net::Telnet.stub(:new, connection) do
250
- profiler.stub(:print, nil) do
251
- profiler.profile(options: options)
299
+ RokuBuilder.stub(:device_manager, @device_manager) do
300
+ Net::Telnet.stub(:new, connection) do
301
+ profiler.stub(:print, nil) do
302
+ profiler.profile(options: options)
303
+ end
252
304
  end
253
305
  end
254
306
 
@@ -257,19 +309,30 @@ module RokuBuilder
257
309
  def test_profiler_devlog
258
310
  options = {devlog: "rendezvous", devlog_function: "on"}
259
311
  config, options = build_config_options_objects(ProfilerTest, options, false)
312
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
313
+ @device_manager.expect(:reserve_device, device, no_lock: true)
314
+ @device_manager.expect(:release_device, nil, [device])
260
315
 
261
316
  connection = Minitest::Mock.new
262
317
  connection.expect(:puts, nil, ["enhanced_dev_log rendezvous on\n"])
263
318
 
264
319
  profiler = Profiler.new(config: config)
265
- Net::Telnet.stub(:new, connection) do
266
- profiler.devlog(options: options)
320
+ RokuBuilder.stub(:device_manager, @device_manager) do
321
+ Net::Telnet.stub(:new, connection) do
322
+ profiler.stub(:print, nil) do
323
+ profiler.devlog(options: options)
324
+ end
325
+ end
267
326
  end
268
327
  connection.verify
269
328
  end
270
329
  def test_profiler_sgperf
271
330
  options = {sgperf: true}
272
331
  config, options = build_config_options_objects(ProfilerTest, options, false)
332
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
333
+ @device_manager.expect(:reserve_device, device, no_lock: true)
334
+ @device_manager.expect(:release_device, nil, [device])
335
+
273
336
  profiler = Profiler.new(config: config)
274
337
 
275
338
  connection = Object.new
@@ -298,11 +361,15 @@ module RokuBuilder
298
361
  raise Net::ReadTimeout
299
362
  }
300
363
 
301
- Net::Telnet.stub(:new, connection) do
302
- connection.stub(:puts, puts_stub) do
303
- txt = ">>thread node calls: create 0 + op 24 @ 100.0% rendezvous"
304
- connection.stub(:waitfor, waitfor, txt) do
305
- profiler.sgperf(options: options)
364
+ RokuBuilder.stub(:device_manager, @device_manager) do
365
+ Net::Telnet.stub(:new, connection) do
366
+ connection.stub(:puts, puts_stub) do
367
+ txt = ">>thread node calls: create 0 + op 24 @ 100.0% rendezvous"
368
+ connection.stub(:waitfor, waitfor, txt) do
369
+ profiler.stub(:print, nil) do
370
+ profiler.sgperf(options: options)
371
+ end
372
+ end
306
373
  end
307
374
  end
308
375
  end
@@ -315,6 +382,10 @@ module RokuBuilder
315
382
  def test_profiler_sgperf_multi_lines
316
383
  options = {sgperf: true}
317
384
  config, options = build_config_options_objects(ProfilerTest, options, false)
385
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
386
+ @device_manager.expect(:reserve_device, device, no_lock: true)
387
+ @device_manager.expect(:release_device, nil, [device])
388
+
318
389
  profiler = Profiler.new(config: config)
319
390
 
320
391
  connection = Object.new
@@ -357,11 +428,15 @@ module RokuBuilder
357
428
  call_count += 1
358
429
  }
359
430
 
360
- Net::Telnet.stub(:new, connection) do
361
- connection.stub(:puts, connection_puts) do
362
- profiler.stub(:get_command_response, command_response) do
363
- profiler.stub(:puts, profiler_puts) do
364
- profiler.sgperf(options: options)
431
+ RokuBuilder.stub(:device_manager, @device_manager) do
432
+ Net::Telnet.stub(:new, connection) do
433
+ connection.stub(:puts, connection_puts) do
434
+ profiler.stub(:get_command_response, command_response) do
435
+ profiler.stub(:puts, profiler_puts) do
436
+ profiler.stub(:print, nil) do
437
+ profiler.sgperf(options: options)
438
+ end
439
+ end
365
440
  end
366
441
  end
367
442
  end