jettywrapper 2.0.0 → 2.0.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 +4 -4
- data/.travis.yml +4 -2
- data/Gemfile +1 -3
- data/gemfiles/{rails4.2.beta.gemfile → rails4.2.gemfile} +1 -1
- data/jettywrapper.gemspec +7 -8
- data/lib/jettywrapper.rb +30 -8
- data/lib/jettywrapper/version.rb +1 -1
- data/spec/lib/jettywrapper_integration_spec.rb +10 -10
- data/spec/lib/jettywrapper_spec.rb +86 -85
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd615b5894ae53105f6abfebb4631fb96d99530e
|
4
|
+
data.tar.gz: 67aa692a2180259b925218c854701a6077200e92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1689a3e0d63505018f1824196872b179a83110adf2bb328e5e439d48f3eb60d3b9d7103fe876acd1e7ea53e3fb128160695111a7dae46a2ef641a42f59d4566
|
7
|
+
data.tar.gz: 65aa972099f95f6afb84101f425b7b1d0c1554f0b94687623e5616f1668f887b551f9f6cf41a4b22c77ee4af1693d8197a26cac6a75569e174510d5313715c06
|
data/.travis.yml
CHANGED
@@ -5,11 +5,13 @@ matrix:
|
|
5
5
|
- rvm: 2.1
|
6
6
|
gemfile: gemfiles/rails4.1.gemfile
|
7
7
|
- rvm: 2.1
|
8
|
-
gemfile: gemfiles/rails4.2.
|
8
|
+
gemfile: gemfiles/rails4.2.gemfile
|
9
9
|
- rvm: 2.0
|
10
|
-
gemfile: gemfiles/rails4.
|
10
|
+
gemfile: gemfiles/rails4.2.gemfile
|
11
11
|
- rvm: 1.9.3
|
12
12
|
gemfile: gemfiles/rails4.1.gemfile
|
13
|
+
- rvm: jruby-19mode
|
14
|
+
gemfile: gemfiles/rails4.2.gemfile
|
13
15
|
|
14
16
|
notifications:
|
15
17
|
irc: "irc.freenode.org#projecthydra"
|
data/Gemfile
CHANGED
data/jettywrapper.gemspec
CHANGED
@@ -16,20 +16,19 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.license = 'APACHE2'
|
19
|
-
|
19
|
+
|
20
20
|
s.required_rubygems_version = ">= 1.3.6"
|
21
|
-
|
21
|
+
|
22
22
|
s.add_dependency "logger"
|
23
23
|
s.add_dependency "childprocess"
|
24
24
|
s.add_dependency "i18n"
|
25
25
|
s.add_dependency "activesupport", ">=3.0.0"
|
26
|
-
|
27
|
-
|
26
|
+
s.add_dependency 'rubyzip'
|
27
|
+
|
28
|
+
s.add_development_dependency "rspec", '~> 3.2'
|
28
29
|
s.add_development_dependency "rspec-its"
|
29
30
|
s.add_development_dependency 'rake'
|
30
|
-
|
31
|
-
s.add_development_dependency 'yard'
|
32
|
-
# I don't know why & don't have time to
|
33
|
-
# debug it right now
|
31
|
+
|
32
|
+
s.add_development_dependency 'yard'
|
34
33
|
end
|
35
34
|
|
data/lib/jettywrapper.rb
CHANGED
@@ -9,6 +9,8 @@ require 'active_support/core_ext/hash'
|
|
9
9
|
require 'erb'
|
10
10
|
require 'yaml'
|
11
11
|
require 'logger'
|
12
|
+
require 'open-uri'
|
13
|
+
require 'zip'
|
12
14
|
|
13
15
|
Dir[File.expand_path(File.join(File.dirname(__FILE__),"tasks/*.rake"))].each { |ext| load ext } if defined?(Rake)
|
14
16
|
|
@@ -32,6 +34,7 @@ class Jettywrapper
|
|
32
34
|
self.base_path = self.class.app_root
|
33
35
|
end
|
34
36
|
|
37
|
+
|
35
38
|
# Methods inside of the class << self block can be called directly on Jettywrapper, as class methods.
|
36
39
|
# Methods outside the class << self block must be called on Jettywrapper.instance, as instance methods.
|
37
40
|
class << self
|
@@ -64,24 +67,43 @@ class Jettywrapper
|
|
64
67
|
self.url = url if url
|
65
68
|
logger.info "Downloading jetty at #{self.url} ..."
|
66
69
|
FileUtils.mkdir tmp_dir unless File.exists? tmp_dir
|
67
|
-
|
68
|
-
|
70
|
+
|
71
|
+
begin
|
72
|
+
open(self.url) do |io|
|
73
|
+
IO.copy_stream(io,zip_file)
|
74
|
+
end
|
75
|
+
rescue Exception => e
|
76
|
+
abort "Unable to download jetty from #{self.url} #{e.message}"
|
77
|
+
end
|
69
78
|
end
|
70
79
|
|
71
80
|
def unzip
|
72
81
|
download unless File.exists? zip_file
|
73
82
|
logger.info "Unpacking #{zip_file}..."
|
74
83
|
tmp_save_dir = File.join tmp_dir, 'jetty_generator'
|
75
|
-
|
76
|
-
|
84
|
+
begin
|
85
|
+
Zip::File.open(zip_file) do |zip_file|
|
86
|
+
# Handle entries one by one
|
87
|
+
zip_file.each do |entry|
|
88
|
+
dest_file = File.join(tmp_save_dir,entry.name)
|
89
|
+
FileUtils.remove_entry(dest_file,true)
|
90
|
+
entry.extract(dest_file)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
rescue Exception => e
|
94
|
+
abort "Unable to unzip #{zip_file} into tmp_save_dir/ #{e.message}"
|
95
|
+
end
|
77
96
|
|
78
97
|
# Remove the old jetty directory if it exists
|
79
|
-
|
98
|
+
FileUtils.remove_dir(jetty_dir,true)
|
80
99
|
|
81
100
|
# Move the expanded zip file into the final destination.
|
82
101
|
expanded_dir = expanded_zip_dir(tmp_save_dir)
|
83
|
-
|
84
|
-
|
102
|
+
begin
|
103
|
+
FileUtils.mv(expanded_dir, jetty_dir)
|
104
|
+
rescue Exception => e
|
105
|
+
abort "Unable to move #{expanded_dir} into #{jetty_dir}/ #{e.message}"
|
106
|
+
end
|
85
107
|
end
|
86
108
|
|
87
109
|
def expanded_zip_dir(tmp_save_dir)
|
@@ -91,7 +113,7 @@ class Jettywrapper
|
|
91
113
|
end
|
92
114
|
|
93
115
|
def clean
|
94
|
-
|
116
|
+
FileUtils.remove_dir(jetty_dir,true)
|
95
117
|
unzip
|
96
118
|
end
|
97
119
|
|
data/lib/jettywrapper/version.rb
CHANGED
@@ -26,12 +26,12 @@ module Hydra
|
|
26
26
|
ts.start
|
27
27
|
ts.logger.debug "Jetty started from rspec at #{ts.pid}"
|
28
28
|
pid_from_file = File.open( ts.pid_path ) { |f| f.gets.to_i }
|
29
|
-
ts.pid.
|
29
|
+
expect(ts.pid).to eql(pid_from_file)
|
30
30
|
|
31
31
|
# Can we connect to solr?
|
32
32
|
require 'net/http'
|
33
33
|
response = Net::HTTP.get_response(URI.parse("http://localhost:#{jetty_params[:jetty_port]}/solr/"))
|
34
|
-
response.code.
|
34
|
+
expect(response.code).to eql("200")
|
35
35
|
ts.stop
|
36
36
|
|
37
37
|
end
|
@@ -50,8 +50,8 @@ module Hydra
|
|
50
50
|
ts.start
|
51
51
|
ts.logger.debug "Jetty started from rspec at #{ts.pid}"
|
52
52
|
response = Net::HTTP.get_response(URI.parse("http://localhost:#{jetty_params[:jetty_port]}/solr/"))
|
53
|
-
response.code.
|
54
|
-
|
53
|
+
expect(response.code).to eql("200")
|
54
|
+
expect { ts.start }.to raise_exception(/Server is already running/)
|
55
55
|
ts.stop
|
56
56
|
end
|
57
57
|
|
@@ -64,11 +64,11 @@ module Hydra
|
|
64
64
|
@s.close
|
65
65
|
end
|
66
66
|
it "can check to see whether a port is already in use" do
|
67
|
-
Jettywrapper.is_port_in_use?(TEST_JETTY_PORTS.last).
|
67
|
+
expect(Jettywrapper.is_port_in_use?(TEST_JETTY_PORTS.last)).to eql(true)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
it "should be false when nothing is running" do
|
71
|
-
Jettywrapper.is_port_in_use?(TEST_JETTY_PORTS.last).
|
71
|
+
expect(Jettywrapper.is_port_in_use?(TEST_JETTY_PORTS.last)).to eql(false)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -80,9 +80,9 @@ module Hydra
|
|
80
80
|
}
|
81
81
|
ts = Jettywrapper.configure(jetty_params)
|
82
82
|
ts.stop
|
83
|
-
ts.pid_file
|
83
|
+
expect(ts.pid_file?).to eql(false)
|
84
84
|
ts.start
|
85
|
-
|
85
|
+
expect{ ts.start }.to raise_exception
|
86
86
|
ts.stop
|
87
87
|
end
|
88
88
|
|
@@ -96,8 +96,8 @@ module Hydra
|
|
96
96
|
begin
|
97
97
|
ts = Jettywrapper.configure(jetty_params)
|
98
98
|
ts.stop
|
99
|
-
ts.pid_file
|
100
|
-
|
99
|
+
expect(ts.pid_file?).to eql(false)
|
100
|
+
expect{ ts.start }.to raise_exception
|
101
101
|
ts.stop
|
102
102
|
ensure
|
103
103
|
socket.close
|
@@ -21,27 +21,27 @@ require 'fileutils'
|
|
21
21
|
|
22
22
|
before do
|
23
23
|
Jettywrapper.reset_config
|
24
|
+
FileUtils.rm "tmp/v8.1.1.zip", force: true
|
24
25
|
end
|
25
26
|
|
26
27
|
context "downloading" do
|
27
28
|
context "with default file" do
|
28
29
|
it "should download the zip file" do
|
29
|
-
|
30
|
-
Jettywrapper.should_receive(:system).with('curl -L https://github.com/projecthydra/hydra-jetty/archive/v8.1.1.zip -o tmp/v8.1.1.zip').and_return(system ('true'))
|
30
|
+
expect(Jettywrapper).to receive(:open).with('https://github.com/projecthydra/hydra-jetty/archive/v8.1.1.zip').and_return(system ('true'))
|
31
31
|
Jettywrapper.download
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
context "specifying the file" do
|
36
36
|
it "should download the zip file" do
|
37
|
-
Jettywrapper.
|
37
|
+
expect(Jettywrapper).to receive(:open).with('http://example.co/file.zip').and_return(system ('true'))
|
38
38
|
Jettywrapper.download('http://example.co/file.zip')
|
39
|
-
Jettywrapper.url.
|
39
|
+
expect(Jettywrapper.url).to eq('http://example.co/file.zip')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
context "specifying the version" do
|
43
43
|
it "should download the zip file" do
|
44
|
-
Jettywrapper.
|
44
|
+
expect(Jettywrapper).to receive(:open).with('https://github.com/projecthydra/hydra-jetty/archive/v9.9.9.zip').and_return(system ('true'))
|
45
45
|
Jettywrapper.hydra_jetty_version = 'v9.9.9'
|
46
46
|
Jettywrapper.download
|
47
47
|
end
|
@@ -54,11 +54,11 @@ require 'fileutils'
|
|
54
54
|
end
|
55
55
|
context "with default file" do
|
56
56
|
it "should download the zip file" do
|
57
|
-
File.
|
58
|
-
Jettywrapper.
|
59
|
-
|
60
|
-
|
61
|
-
|
57
|
+
expect(File).to receive(:exists?).and_return(true)
|
58
|
+
expect(Jettywrapper).to receive(:expanded_zip_dir).and_return('tmp/jetty_generator/interal_dir')
|
59
|
+
expect(Zip::File).to receive(:open).with('tmp/v8.1.1.zip').and_return(true)
|
60
|
+
expect(FileUtils).to receive(:remove_dir).with('jetty',true).and_return(true)
|
61
|
+
expect(FileUtils).to receive(:mv).with('tmp/jetty_generator/interal_dir','jetty').and_return(true)
|
62
62
|
Jettywrapper.unzip
|
63
63
|
end
|
64
64
|
end
|
@@ -68,11 +68,11 @@ require 'fileutils'
|
|
68
68
|
Jettywrapper.url = 'http://example.co/file.zip'
|
69
69
|
end
|
70
70
|
it "should download the zip file" do
|
71
|
-
File.
|
72
|
-
Jettywrapper.
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
expect(File).to receive(:exists?).and_return(true)
|
72
|
+
expect(Jettywrapper).to receive(:expanded_zip_dir).and_return('tmp/jetty_generator/interal_dir')
|
73
|
+
expect(Zip::File).to receive(:open).with('tmp/file.zip').and_return(true)
|
74
|
+
expect(FileUtils).to receive(:remove_dir).with('jetty',true).and_return(true)
|
75
|
+
expect(FileUtils).to receive(:mv).with('tmp/jetty_generator/interal_dir','jetty').and_return(true)
|
76
76
|
Jettywrapper.unzip
|
77
77
|
end
|
78
78
|
end
|
@@ -187,6 +187,7 @@ require 'fileutils'
|
|
187
187
|
it "should be the Rails environment" do
|
188
188
|
Rails = double(env: 'test')
|
189
189
|
expect(Jettywrapper.env).to eq "test"
|
190
|
+
Rails = nil
|
190
191
|
end
|
191
192
|
|
192
193
|
it "should use the ENV['RAILS_ENV']" do
|
@@ -210,58 +211,58 @@ require 'fileutils'
|
|
210
211
|
before do
|
211
212
|
end
|
212
213
|
it "loads the application jetty.yml first" do
|
213
|
-
IO.
|
214
|
+
expect(IO).to receive(:read).with('./config/jetty.yml').and_return("default:\n")
|
214
215
|
config = Jettywrapper.load_config
|
215
216
|
end
|
216
217
|
|
217
218
|
it "loads the application jetty.yml using erb parsing" do
|
218
|
-
IO.
|
219
|
+
expect(IO).to receive(:read).with('./config/jetty.yml').and_return("default:\n a: <%= 123 %>")
|
219
220
|
config = Jettywrapper.load_config
|
220
221
|
config[:a] == 123
|
221
222
|
end
|
222
223
|
|
223
224
|
it "falls back on the distributed jetty.yml" do
|
224
|
-
File.
|
225
|
-
IO.
|
225
|
+
expect(File).to receive(:exists?).with('./config/jetty.yml').and_return(false)
|
226
|
+
expect(IO).to receive(:read).with(/jetty.yml/).and_return("default:\n")
|
226
227
|
config = Jettywrapper.load_config
|
227
228
|
end
|
228
229
|
|
229
230
|
it "supports per-environment configuration" do
|
230
231
|
ENV['environment'] = 'test'
|
231
|
-
IO.
|
232
|
+
expect(IO).to receive(:read).with('./config/jetty.yml').and_return("default:\n a: 1\ntest:\n a: 2")
|
232
233
|
config = Jettywrapper.load_config
|
233
|
-
config[:a].
|
234
|
+
expect(config[:a]).to eq(2)
|
234
235
|
end
|
235
236
|
|
236
237
|
it "should take the env as an argument to load_config and the env should be sticky" do
|
237
|
-
IO.
|
238
|
+
expect(IO).to receive(:read).with('./config/jetty.yml').and_return("default:\n a: 1\nfoo:\n a: 2")
|
238
239
|
config = Jettywrapper.load_config('foo')
|
239
|
-
config[:a].
|
240
|
+
expect(config[:a]).to eq(2)
|
240
241
|
expect(Jettywrapper.env).to eq 'foo'
|
241
242
|
end
|
242
243
|
|
243
244
|
it "falls back on a 'default' environment configuration" do
|
244
245
|
ENV['environment'] = 'test'
|
245
|
-
IO.
|
246
|
+
expect(IO).to receive(:read).with('./config/jetty.yml').and_return("default:\n a: 1")
|
246
247
|
config = Jettywrapper.load_config
|
247
|
-
config[:a].
|
248
|
+
expect(config[:a]).to eq(1)
|
248
249
|
end
|
249
250
|
end
|
250
251
|
|
251
252
|
context "instantiation" do
|
252
253
|
it "can be instantiated" do
|
253
254
|
ts = Jettywrapper.instance
|
254
|
-
ts.class.
|
255
|
+
expect(ts.class).to eql(Jettywrapper)
|
255
256
|
end
|
256
257
|
|
257
258
|
it "can be configured with a params hash" do
|
258
259
|
ts = Jettywrapper.configure(@jetty_params)
|
259
|
-
ts.quiet.
|
260
|
-
ts.jetty_home.
|
261
|
-
ts.port.
|
262
|
-
ts.solr_home.
|
263
|
-
ts.startup_wait.
|
264
|
-
ts.jetty_opts.
|
260
|
+
expect(ts.quiet).to eq(false)
|
261
|
+
expect(ts.jetty_home).to eq("/path/to/jetty")
|
262
|
+
expect(ts.port).to eq(@jetty_params[:jetty_port])
|
263
|
+
expect(ts.solr_home).to eq('/path/to/solr')
|
264
|
+
expect(ts.startup_wait).to eq(0)
|
265
|
+
expect(ts.jetty_opts).to eq(@jetty_params[:jetty_opts])
|
265
266
|
end
|
266
267
|
|
267
268
|
it "should override nil params with defaults" do
|
@@ -275,28 +276,28 @@ require 'fileutils'
|
|
275
276
|
}
|
276
277
|
|
277
278
|
ts = Jettywrapper.configure(jetty_params)
|
278
|
-
ts.quiet.
|
279
|
-
ts.jetty_home.
|
280
|
-
ts.port.
|
281
|
-
ts.solr_home.
|
282
|
-
ts.startup_wait.
|
283
|
-
ts.jetty_opts.
|
279
|
+
expect(ts.quiet).to eq(true)
|
280
|
+
expect(ts.jetty_home).to eq("/path/to/jetty")
|
281
|
+
expect(ts.port).to eq(8888)
|
282
|
+
expect(ts.solr_home).to eq(File.join(ts.jetty_home, "solr"))
|
283
|
+
expect(ts.startup_wait).to eq(5)
|
284
|
+
expect(ts.jetty_opts).to eq([])
|
284
285
|
end
|
285
286
|
|
286
287
|
it "passes all the expected values to jetty during startup" do
|
287
288
|
ts = Jettywrapper.configure(@jetty_params)
|
288
289
|
command = ts.jetty_command
|
289
|
-
command.
|
290
|
-
command.
|
291
|
-
command.
|
292
|
-
command.
|
293
|
-
command.slice(command.index('start.jar')+1, 2).
|
290
|
+
expect(command).to include("-Dsolr.solr.home=#{@jetty_params[:solr_home]}")
|
291
|
+
expect(command).to include("-Djetty.port=#{@jetty_params[:jetty_port]}")
|
292
|
+
expect(command).to include("-Xmx256m")
|
293
|
+
expect(command).to include("start.jar")
|
294
|
+
expect(command.slice(command.index('start.jar')+1, 2)).to eq(@jetty_params[:jetty_opts])
|
294
295
|
end
|
295
296
|
|
296
297
|
it "escapes the :solr_home parameter" do
|
297
298
|
ts = Jettywrapper.configure(@jetty_params.merge(:solr_home => '/path with spaces/to/solr'))
|
298
299
|
command = ts.jetty_command
|
299
|
-
command.
|
300
|
+
expect(command).to include("-Dsolr.solr.home=/path\\ with\\ spaces/to/solr")
|
300
301
|
end
|
301
302
|
|
302
303
|
it "has a pid if it has been started" do
|
@@ -304,10 +305,10 @@ require 'fileutils'
|
|
304
305
|
:jetty_home => '/tmp'
|
305
306
|
}
|
306
307
|
ts = Jettywrapper.configure(jetty_params)
|
307
|
-
Jettywrapper.
|
308
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>5454))
|
308
309
|
ts.stop
|
309
310
|
ts.start
|
310
|
-
ts.pid.
|
311
|
+
expect(ts.pid).to eql(5454)
|
311
312
|
ts.stop
|
312
313
|
end
|
313
314
|
|
@@ -317,37 +318,37 @@ require 'fileutils'
|
|
317
318
|
}
|
318
319
|
ts = Jettywrapper.configure(jetty_params)
|
319
320
|
ts.stop
|
320
|
-
Jettywrapper.
|
321
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>2323))
|
321
322
|
swp = Jettywrapper.start(jetty_params)
|
322
|
-
swp.pid.
|
323
|
-
swp.pid_file.
|
323
|
+
expect(swp.pid).to eql(2323)
|
324
|
+
expect(swp.pid_file).to eql("_tmp_test.pid")
|
324
325
|
swp.stop
|
325
326
|
end
|
326
327
|
|
327
328
|
it "can get the status for a given jetty instance" do
|
328
329
|
# Don't actually start jetty, just fake it
|
329
|
-
Jettywrapper.
|
330
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>12345))
|
330
331
|
|
331
332
|
jetty_params = {
|
332
333
|
:jetty_home => File.expand_path("#{File.dirname(__FILE__)}/../../jetty")
|
333
334
|
}
|
334
335
|
Jettywrapper.stop(jetty_params)
|
335
|
-
Jettywrapper.is_jetty_running?(jetty_params).
|
336
|
+
expect(Jettywrapper.is_jetty_running?(jetty_params)).to eql(false)
|
336
337
|
Jettywrapper.start(jetty_params)
|
337
|
-
Jettywrapper.is_jetty_running?(jetty_params).
|
338
|
+
expect(Jettywrapper.is_jetty_running?(jetty_params)).to eql(true)
|
338
339
|
Jettywrapper.stop(jetty_params)
|
339
340
|
end
|
340
341
|
|
341
342
|
it "can get the pid for a given jetty instance" do
|
342
343
|
# Don't actually start jetty, just fake it
|
343
|
-
Jettywrapper.
|
344
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>54321))
|
344
345
|
jetty_params = {
|
345
346
|
:jetty_home => File.expand_path("#{File.dirname(__FILE__)}/../../jetty")
|
346
347
|
}
|
347
348
|
Jettywrapper.stop(jetty_params)
|
348
|
-
Jettywrapper.pid(jetty_params).
|
349
|
+
expect(Jettywrapper.pid(jetty_params)).to eql(nil)
|
349
350
|
Jettywrapper.start(jetty_params)
|
350
|
-
Jettywrapper.pid(jetty_params).
|
351
|
+
expect(Jettywrapper.pid(jetty_params)).to eql(54321)
|
351
352
|
Jettywrapper.stop(jetty_params)
|
352
353
|
end
|
353
354
|
|
@@ -355,12 +356,12 @@ require 'fileutils'
|
|
355
356
|
jetty_params = {
|
356
357
|
:jetty_home => '/tmp', :jetty_port => 8777
|
357
358
|
}
|
358
|
-
Jettywrapper.
|
359
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>2323))
|
359
360
|
swp = Jettywrapper.start(jetty_params)
|
360
|
-
(File.file? swp.pid_path).
|
361
|
+
expect(File.file? swp.pid_path).to eql(true)
|
361
362
|
|
362
363
|
swp = Jettywrapper.stop(jetty_params)
|
363
|
-
(File.file? swp.pid_path).
|
364
|
+
expect(File.file? swp.pid_path).to eql(false)
|
364
365
|
end
|
365
366
|
|
366
367
|
describe "creates a pid file" do
|
@@ -368,20 +369,20 @@ require 'fileutils'
|
|
368
369
|
describe "when the environment isn't set" do
|
369
370
|
before { ENV['environment'] = nil }
|
370
371
|
it "should have the path and env in the name" do
|
371
|
-
ts.pid_file.
|
372
|
+
expect(ts.pid_file).to eql("_path_to_jetty_development.pid")
|
372
373
|
end
|
373
374
|
end
|
374
375
|
describe "when the environment is set" do
|
375
376
|
before { ENV['environment'] = 'test' }
|
376
377
|
it "should have the path and env in the name" do
|
377
|
-
ts.pid_file.
|
378
|
+
expect(ts.pid_file).to eql("_path_to_jetty_test.pid")
|
378
379
|
end
|
379
380
|
end
|
380
381
|
end
|
381
382
|
|
382
383
|
it "knows where its pid file should be written" do
|
383
384
|
ts = Jettywrapper.configure(@jetty_params)
|
384
|
-
ts.pid_dir.
|
385
|
+
expect(ts.pid_dir).to eql(File.expand_path("#{ts.base_path}/tmp/pids"))
|
385
386
|
end
|
386
387
|
|
387
388
|
it "writes a pid to a file when it is started" do
|
@@ -389,14 +390,14 @@ require 'fileutils'
|
|
389
390
|
:jetty_home => '/tmp'
|
390
391
|
}
|
391
392
|
ts = Jettywrapper.configure(jetty_params)
|
392
|
-
Jettywrapper.
|
393
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>2222))
|
393
394
|
ts.stop
|
394
|
-
ts.pid_file
|
395
|
+
expect(ts.pid_file?).to eql(false)
|
395
396
|
ts.start
|
396
|
-
ts.pid.
|
397
|
-
ts.pid_file
|
397
|
+
expect(ts.pid).to eql(2222)
|
398
|
+
expect(ts.pid_file?).to eql(true)
|
398
399
|
pid_from_file = File.open( ts.pid_path ) { |f| f.gets.to_i }
|
399
|
-
pid_from_file.
|
400
|
+
expect(pid_from_file).to eql(2222)
|
400
401
|
end
|
401
402
|
|
402
403
|
end # end of instantiation context
|
@@ -404,38 +405,38 @@ require 'fileutils'
|
|
404
405
|
context "logging" do
|
405
406
|
it "has a logger" do
|
406
407
|
ts = Jettywrapper.configure(@jetty_params)
|
407
|
-
ts.logger.
|
408
|
+
expect(ts.logger).to be_kind_of(Logger)
|
408
409
|
end
|
409
410
|
|
410
411
|
end # end of logging context
|
411
412
|
|
412
413
|
context "wrapping a task" do
|
413
414
|
it "wraps another method" do
|
414
|
-
Jettywrapper.
|
415
|
-
Jettywrapper.
|
415
|
+
allow_any_instance_of(Jettywrapper).to receive(:start).and_return(true)
|
416
|
+
allow_any_instance_of(Jettywrapper).to receive(:stop).and_return(true)
|
416
417
|
error = Jettywrapper.wrap(@jetty_params) do
|
417
418
|
end
|
418
|
-
error.
|
419
|
+
expect(error).to eql(false)
|
419
420
|
end
|
420
421
|
|
421
422
|
it "configures itself correctly when invoked via the wrap method" do
|
422
|
-
Jettywrapper.
|
423
|
-
Jettywrapper.
|
423
|
+
allow_any_instance_of(Jettywrapper).to receive(:start).and_return(true)
|
424
|
+
allow_any_instance_of(Jettywrapper).to receive(:stop).and_return(true)
|
424
425
|
error = Jettywrapper.wrap(@jetty_params) do
|
425
426
|
ts = Jettywrapper.instance
|
426
|
-
ts.quiet.
|
427
|
-
ts.jetty_home.
|
428
|
-
ts.port.
|
429
|
-
ts.solr_home.
|
430
|
-
ts.startup_wait.
|
427
|
+
expect(ts.quiet).to eq(@jetty_params[:quiet])
|
428
|
+
expect(ts.jetty_home).to eq("/path/to/jetty")
|
429
|
+
expect(ts.port).to eq(@jetty_params[:jetty_port])
|
430
|
+
expect(ts.solr_home).to eq("/path/to/solr")
|
431
|
+
expect(ts.startup_wait).to eq(0)
|
431
432
|
end
|
432
|
-
error.
|
433
|
+
expect(error).to eql(false)
|
433
434
|
end
|
434
435
|
|
435
436
|
it "captures any errors produced" do
|
436
|
-
Jettywrapper.
|
437
|
-
Jettywrapper.
|
438
|
-
Jettywrapper.instance.logger.
|
437
|
+
allow_any_instance_of(Jettywrapper).to receive(:start).and_return(true)
|
438
|
+
allow_any_instance_of(Jettywrapper).to receive(:stop).and_return(true)
|
439
|
+
expect(Jettywrapper.instance.logger).to receive(:error).with("*** Error starting jetty: this is an expected error message")
|
439
440
|
expect { error = Jettywrapper.wrap(@jetty_params) do
|
440
441
|
raise "this is an expected error message"
|
441
442
|
end }.to raise_error "this is an expected error message"
|
@@ -447,15 +448,15 @@ require 'fileutils'
|
|
447
448
|
it "inherits the current stderr/stdout in 'loud' mode" do
|
448
449
|
ts = Jettywrapper.configure(@jetty_params.merge(:quiet => false))
|
449
450
|
process = ts.process
|
450
|
-
process.io.stderr.
|
451
|
-
process.io.stdout.
|
451
|
+
expect(process.io.stderr).to eq($stderr)
|
452
|
+
expect(process.io.stdout).to eq($stdout)
|
452
453
|
end
|
453
454
|
|
454
455
|
it "redirect stderr/stdout to a log file in quiet mode" do
|
455
456
|
ts = Jettywrapper.configure(@jetty_params.merge(:quiet => true))
|
456
457
|
process = ts.process
|
457
|
-
process.io.stderr.
|
458
|
-
process.io.stdout.
|
458
|
+
expect(process.io.stderr).not_to eq($stderr)
|
459
|
+
expect(process.io.stdout).not_to eq($stdout)
|
459
460
|
end
|
460
461
|
end
|
461
462
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jettywrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-02-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: logger
|
@@ -68,20 +68,34 @@ dependencies:
|
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 3.0.0
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rubyzip
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
71
85
|
- !ruby/object:Gem::Dependency
|
72
86
|
name: rspec
|
73
87
|
requirement: !ruby/object:Gem::Requirement
|
74
88
|
requirements:
|
75
89
|
- - "~>"
|
76
90
|
- !ruby/object:Gem::Version
|
77
|
-
version: '2
|
91
|
+
version: '3.2'
|
78
92
|
type: :development
|
79
93
|
prerelease: false
|
80
94
|
version_requirements: !ruby/object:Gem::Requirement
|
81
95
|
requirements:
|
82
96
|
- - "~>"
|
83
97
|
- !ruby/object:Gem::Version
|
84
|
-
version: '2
|
98
|
+
version: '3.2'
|
85
99
|
- !ruby/object:Gem::Dependency
|
86
100
|
name: rspec-its
|
87
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,7 +159,7 @@ files:
|
|
145
159
|
- TODO.txt
|
146
160
|
- config/jetty.yml
|
147
161
|
- gemfiles/rails4.1.gemfile
|
148
|
-
- gemfiles/rails4.2.
|
162
|
+
- gemfiles/rails4.2.gemfile
|
149
163
|
- jettywrapper.gemspec
|
150
164
|
- lib/jettywrapper.rb
|
151
165
|
- lib/jettywrapper/version.rb
|
@@ -174,8 +188,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
188
|
version: 1.3.6
|
175
189
|
requirements: []
|
176
190
|
rubyforge_project:
|
177
|
-
rubygems_version: 2.
|
191
|
+
rubygems_version: 2.2.2
|
178
192
|
signing_key:
|
179
193
|
specification_version: 4
|
180
194
|
summary: Convenience tasks for working with jetty from within a ruby project.
|
181
195
|
test_files: []
|
196
|
+
has_rdoc:
|