shamrock 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -0
- data/lib/shamrock/service.rb +27 -8
- data/lib/shamrock/version.rb +1 -1
- data/lib/shamrock.rb +1 -2
- data/spec/shamrock/service_spec.rb +19 -6
- metadata +2 -4
- data/lib/shamrock/port.rb +0 -9
- data/spec/shamrock/port_spec.rb +0 -9
data/.travis.yml
ADDED
data/lib/shamrock/service.rb
CHANGED
@@ -1,22 +1,33 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
1
3
|
module Shamrock
|
2
4
|
class Service
|
3
5
|
|
4
6
|
attr_reader :port, :url
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
PORT_RANGE = 9220..9260
|
9
|
+
|
10
|
+
DEFAULT_OPTIONS = {
|
11
|
+
handler: Rack::Handler::WEBrick,
|
12
|
+
monitor: Shamrock::Monitor
|
13
|
+
}
|
9
14
|
|
15
|
+
def initialize(rack_app, options = {})
|
10
16
|
@rack_app = rack_app
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@
|
17
|
+
|
18
|
+
options = DEFAULT_OPTIONS.merge(options)
|
19
|
+
|
20
|
+
@handler = options[:handler]
|
21
|
+
@logger = logger
|
22
|
+
|
23
|
+
@port = options[:port] || random_port
|
24
|
+
@url = "http://localhost:#{port}"
|
25
|
+
@monitor = options[:monitor].new(Http.new(url))
|
15
26
|
end
|
16
27
|
|
17
28
|
def start
|
18
29
|
@thread = Thread.new do
|
19
|
-
@handler.run(@rack_app, Port: port
|
30
|
+
@handler.run(@rack_app, Port: port, Logger: @logger)
|
20
31
|
end
|
21
32
|
|
22
33
|
@monitor.wait_until_ready
|
@@ -28,6 +39,14 @@ module Shamrock
|
|
28
39
|
|
29
40
|
private
|
30
41
|
|
42
|
+
def logger
|
43
|
+
defined? Rails ? Rails.logger : Logger.new(STDOUT)
|
44
|
+
end
|
45
|
+
|
46
|
+
def random_port
|
47
|
+
Random.rand(PORT_RANGE)
|
48
|
+
end
|
49
|
+
|
31
50
|
def server_name
|
32
51
|
@rack_app.class.name
|
33
52
|
end
|
data/lib/shamrock/version.rb
CHANGED
data/lib/shamrock.rb
CHANGED
@@ -5,20 +5,33 @@ describe Shamrock::Service do
|
|
5
5
|
@rack_app = proc {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}
|
6
6
|
end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
describe "initialization" do
|
9
|
+
it "should use a specific port if one is given in the initializer" do
|
10
|
+
service = Shamrock::Service.new(@rack_app, port: 8080)
|
11
|
+
service.port.should == 8080
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should assign a random port of none is given to initializer" do
|
15
|
+
service = Shamrock::Service.new(@rack_app)
|
16
|
+
service.port.should_not be_nil
|
11
17
|
end
|
12
18
|
end
|
13
19
|
|
14
20
|
describe "#start" do
|
21
|
+
# In-line the service startup for this test
|
22
|
+
class Shamrock::Service::Thread
|
23
|
+
def initialize(&block)
|
24
|
+
yield
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
15
28
|
it "should start the server" do
|
16
29
|
monitor = mock('monitor', wait_until_ready: true)
|
17
30
|
monitor_class = mock('monitor class', new: monitor)
|
18
31
|
|
19
32
|
handler = mock('handler')
|
20
|
-
service = Shamrock::Service.new(@rack_app, handler, monitor_class)
|
21
|
-
handler.should_receive(:run).with(@rack_app, Port: service.port
|
33
|
+
service = Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class)
|
34
|
+
handler.should_receive(:run).with(@rack_app, Port: service.port, Logger: anything)
|
22
35
|
service.start
|
23
36
|
end
|
24
37
|
|
@@ -29,7 +42,7 @@ describe Shamrock::Service do
|
|
29
42
|
monitor.should_receive(:wait_until_ready).once
|
30
43
|
|
31
44
|
handler = mock('handler', run: true)
|
32
|
-
Shamrock::Service.new(@rack_app, handler, monitor_class).start
|
45
|
+
Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class).start
|
33
46
|
end
|
34
47
|
end
|
35
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shamrock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -85,6 +85,7 @@ extra_rdoc_files: []
|
|
85
85
|
files:
|
86
86
|
- .gitignore
|
87
87
|
- .rspec
|
88
|
+
- .travis.yml
|
88
89
|
- Gemfile
|
89
90
|
- LICENSE
|
90
91
|
- README.md
|
@@ -92,13 +93,11 @@ files:
|
|
92
93
|
- lib/shamrock.rb
|
93
94
|
- lib/shamrock/http.rb
|
94
95
|
- lib/shamrock/monitor.rb
|
95
|
-
- lib/shamrock/port.rb
|
96
96
|
- lib/shamrock/service.rb
|
97
97
|
- lib/shamrock/version.rb
|
98
98
|
- shamrock.gemspec
|
99
99
|
- spec/shamrock/http_spec.rb
|
100
100
|
- spec/shamrock/monitor_spec.rb
|
101
|
-
- spec/shamrock/port_spec.rb
|
102
101
|
- spec/shamrock/service_spec.rb
|
103
102
|
- spec/spec_helper.rb
|
104
103
|
homepage: http://github.com/jsl/shamrock
|
@@ -128,6 +127,5 @@ summary: Facilitates setting up stub services in your application
|
|
128
127
|
test_files:
|
129
128
|
- spec/shamrock/http_spec.rb
|
130
129
|
- spec/shamrock/monitor_spec.rb
|
131
|
-
- spec/shamrock/port_spec.rb
|
132
130
|
- spec/shamrock/service_spec.rb
|
133
131
|
- spec/spec_helper.rb
|
data/lib/shamrock/port.rb
DELETED