jettywrapper 2.0.0 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|