gesund 0.0.3 → 0.0.4
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 +7 -0
- data/.bundle/.gitignore +3 -0
- data/.bundle/config +2 -2
- data/.gitignore +0 -1
- data/Gemfile.lock +23 -17
- data/README.md +2 -0
- data/lib/gesund/cli.rb +13 -3
- data/lib/gesund/output/rack.rb +5 -2
- data/lib/gesund/version.rb +1 -1
- data/spec/lib/gesund/check_spec.rb +7 -7
- data/spec/lib/gesund/checks/directory_spec.rb +6 -6
- data/spec/lib/gesund/checks/file_spec.rb +6 -6
- data/spec/lib/gesund/checks/link_spec.rb +14 -14
- data/spec/lib/gesund/version_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- metadata +14 -29
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6c31ddd62325ecea471dc6327c57dc78511045fe
|
4
|
+
data.tar.gz: 804cce6293fdac061676f97404d60c6e500c14a0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3889e58bb2ccf066b00b01edb88e2eba233a55359ae161e85004c58ccd94ecfca0192fad68d35fd970a3f4b4a44340e17bc0cbd24de96799efe10976b7a2cc27
|
7
|
+
data.tar.gz: 4a22688827c4a36b0e326d39a5b477f73c5928f6c0f79baa90f9951c05c27d19a3ffcd1af42c855d52bf01a6651601c93bc8ec4bb49bd8b1cbf95fbd97c72403
|
data/.bundle/.gitignore
ADDED
data/.bundle/config
CHANGED
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,30 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gesund (0.0.
|
4
|
+
gesund (0.0.4)
|
5
5
|
rack
|
6
6
|
thor
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
diff-lcs (1.2.
|
12
|
-
|
11
|
+
diff-lcs (1.2.5)
|
12
|
+
docile (1.1.5)
|
13
|
+
multi_json (1.10.1)
|
13
14
|
rack (1.5.2)
|
14
|
-
rake (10.
|
15
|
-
rspec (
|
16
|
-
rspec-core (~>
|
17
|
-
rspec-expectations (~>
|
18
|
-
rspec-mocks (~>
|
19
|
-
rspec-core (
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
15
|
+
rake (10.3.2)
|
16
|
+
rspec (3.1.0)
|
17
|
+
rspec-core (~> 3.1.0)
|
18
|
+
rspec-expectations (~> 3.1.0)
|
19
|
+
rspec-mocks (~> 3.1.0)
|
20
|
+
rspec-core (3.1.2)
|
21
|
+
rspec-support (~> 3.1.0)
|
22
|
+
rspec-expectations (3.1.0)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.1.0)
|
25
|
+
rspec-mocks (3.1.0)
|
26
|
+
rspec-support (~> 3.1.0)
|
27
|
+
rspec-support (3.1.0)
|
28
|
+
simplecov (0.9.0)
|
29
|
+
docile (~> 1.1.0)
|
30
|
+
multi_json
|
31
|
+
simplecov-html (~> 0.8.0)
|
32
|
+
simplecov-html (0.8.0)
|
33
|
+
thor (0.19.1)
|
28
34
|
|
29
35
|
PLATFORMS
|
30
36
|
ruby
|
data/README.md
CHANGED
data/lib/gesund/cli.rb
CHANGED
@@ -13,11 +13,21 @@ module Gesund
|
|
13
13
|
Gesund::Output::Text.new(checks)
|
14
14
|
end
|
15
15
|
|
16
|
+
# http://rubydoc.info/github/rack/rack/master/Rack/Server#initialize-instance_method
|
17
|
+
option :port, :type => :numeric, :aliases => [:'-p'], :default => 9998, :desc => 'the port to bind to'
|
18
|
+
option :host, :type => :string, :aliases => [:'-h'], :default => '0.0.0.0', :desc => 'the host address to bind to'
|
19
|
+
option :daemonize, :type => :boolean, :aliases => [:'-d'], :default => false, :desc => 'if true, the server will daemonize itself (fork, detach, etc)'
|
20
|
+
option :pid, :type => :string, :default => nil, :desc => 'path to write a pid file after daemonize'
|
21
|
+
option :accesslog, :type => :string, :default => nil, :desc => 'webrick acess log options'
|
22
|
+
option :debug, :type => :boolean, :default => false, :desc => 'turn on debug output'
|
23
|
+
option :warn, :type => :boolean, :default => true, :desc => 'turn on warnings'
|
16
24
|
desc "http", "Starts a web server that answers to requests with results of checks from Gesundfile"
|
17
25
|
def http
|
18
|
-
|
19
|
-
|
20
|
-
|
26
|
+
opts = {}.merge(options)
|
27
|
+
if gesundfile = opts.delete(:gesundfile)
|
28
|
+
checks = Gesund::Dsl.evaluate(File.expand_path(gesundfile))
|
29
|
+
end
|
30
|
+
Gesund::Output::Rack.start(checks, opts)
|
21
31
|
end
|
22
32
|
|
23
33
|
end
|
data/lib/gesund/output/rack.rb
CHANGED
@@ -2,10 +2,13 @@ require "rack"
|
|
2
2
|
|
3
3
|
module Gesund::Output
|
4
4
|
class Rack
|
5
|
-
def self.start(checks)
|
5
|
+
def self.start(checks, options={})
|
6
6
|
app = self.new
|
7
7
|
app.checks = checks
|
8
|
-
|
8
|
+
# http://rubydoc.info/github/rack/rack/master/Rack/Server#initialize-instance_method
|
9
|
+
options[:Port] = options.delete 'port'
|
10
|
+
options[:Host] = options.delete 'host'
|
11
|
+
::Rack::Server.start({ :app => app }.merge(options))
|
9
12
|
end
|
10
13
|
|
11
14
|
attr_accessor :checks
|
data/lib/gesund/version.rb
CHANGED
@@ -4,31 +4,31 @@ describe "Gesund::Check module" do
|
|
4
4
|
let(:dummy_check) { Class.new.extend Gesund::Check }
|
5
5
|
let(:headers) { {"Content-Type" => "text/plain"} }
|
6
6
|
it "has an accessor named success" do
|
7
|
-
dummy_check.
|
7
|
+
expect(dummy_check).to respond_to :call
|
8
8
|
end
|
9
9
|
it "has an accessor named message" do
|
10
|
-
dummy_check.
|
10
|
+
expect(dummy_check).to respond_to :message
|
11
11
|
end
|
12
12
|
it "returns status 200 on healthy checks" do
|
13
13
|
dummy_check.success = true
|
14
14
|
dummy_check.message = "something is healthy"
|
15
|
-
dummy_check.call.
|
15
|
+
expect(dummy_check.call).to be == [200, headers, ["something is healthy"]]
|
16
16
|
end
|
17
17
|
it "returns status 500 on sick checks" do
|
18
18
|
dummy_check.success = false
|
19
19
|
dummy_check.message = "something is sick"
|
20
|
-
dummy_check.call.
|
20
|
+
expect(dummy_check.call).to be == [500, headers, ["something is sick"]]
|
21
21
|
end
|
22
22
|
it "returns status 500 on empty messages" do
|
23
23
|
dummy_check.success = true
|
24
|
-
dummy_check.call.
|
24
|
+
expect(dummy_check.call).to be == [500, headers, ["Class is broken!"]]
|
25
25
|
end
|
26
26
|
it "fails when fail is called" do
|
27
27
|
dummy_check.fail("booo!")
|
28
|
-
dummy_check.call.
|
28
|
+
expect(dummy_check.call).to be == [500, headers, ["booo!"]]
|
29
29
|
end
|
30
30
|
it "passes when pass is called" do
|
31
31
|
dummy_check.pass("yey!")
|
32
|
-
dummy_check.call.
|
32
|
+
expect(dummy_check.call).to be == [200, headers, ["yey!"]]
|
33
33
|
end
|
34
34
|
end
|
@@ -2,15 +2,15 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Gesund::Checks::Directory do
|
4
4
|
it "sets success to false when arg is not a directory" do
|
5
|
-
File.
|
5
|
+
expect(File).to receive(:directory?) { false }
|
6
6
|
chk = described_class.new("somedir")
|
7
|
-
chk.success.
|
8
|
-
chk.message.
|
7
|
+
expect(chk.success).to equal(false)
|
8
|
+
expect(chk.message).to match "Directory somedir is not a directory"
|
9
9
|
end
|
10
10
|
it "sets success to true when arg is a directory" do
|
11
|
-
File.
|
11
|
+
expect(File).to receive(:directory?) { true }
|
12
12
|
chk = described_class.new("somedir")
|
13
|
-
chk.success.
|
14
|
-
chk.message.
|
13
|
+
expect(chk.success).to equal(true)
|
14
|
+
expect(chk.message).to match "Directory somedir is a directory"
|
15
15
|
end
|
16
16
|
end
|
@@ -3,13 +3,13 @@ require "spec_helper"
|
|
3
3
|
describe Gesund::Checks::File do
|
4
4
|
subject { Gesund::Checks::File.new('somefile') }
|
5
5
|
it "sets success as true when file is a file" do
|
6
|
-
File.
|
7
|
-
subject.success.
|
8
|
-
subject.message.
|
6
|
+
expect(File).to receive(:file?) { true }
|
7
|
+
expect(subject.success).to equal(true)
|
8
|
+
expect(subject.message).to match "File somefile is a file"
|
9
9
|
end
|
10
10
|
it "sets success to false when file is not a file" do
|
11
|
-
File.
|
12
|
-
subject.success.
|
13
|
-
subject.message.
|
11
|
+
expect(File).to receive(:file?) { false }
|
12
|
+
expect(subject.success).to equal(false)
|
13
|
+
expect(subject.message).to match "File somefile is not a file"
|
14
14
|
end
|
15
15
|
end
|
@@ -2,29 +2,29 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Gesund::Checks::Link do
|
4
4
|
it "sets success to false when arg is not a symlink" do
|
5
|
-
File.
|
5
|
+
expect(File).to receive(:symlink?) { false }
|
6
6
|
chk = described_class.new("somelink-xxx")
|
7
|
-
chk.success.
|
8
|
-
chk.message.
|
7
|
+
expect(chk.success).to equal(false)
|
8
|
+
expect(chk.message).to match "Symbolic link somelink-xxx is not a symlink"
|
9
9
|
end
|
10
10
|
it "sets success to true when arg is a symlink" do
|
11
|
-
File.
|
11
|
+
expect(File).to receive(:symlink?) { true }
|
12
12
|
chk = described_class.new("somelink-xxx")
|
13
|
-
chk.success.
|
14
|
-
chk.message.
|
13
|
+
expect(chk.success).to equal(true)
|
14
|
+
expect(chk.message).to match "Symbolic link somelink-xxx is a symlink"
|
15
15
|
end
|
16
16
|
it "sets success to false when arg does not target target" do
|
17
|
-
File.
|
18
|
-
File.
|
17
|
+
expect(File).to receive(:symlink?) { true }
|
18
|
+
expect(File).to receive(:readlink) { "wrongtarget" }
|
19
19
|
chk = described_class.new("somelink-xxx", "xxx")
|
20
|
-
chk.success.
|
21
|
-
chk.message.
|
20
|
+
expect(chk.success).to equal(false)
|
21
|
+
expect(chk.message).to match "Symbolic link somelink-xxx is not targetting xxx"
|
22
22
|
end
|
23
23
|
it "sets success to true when arg targets target" do
|
24
|
-
File.
|
25
|
-
File.
|
24
|
+
expect(File).to receive(:symlink?) { true }
|
25
|
+
expect(File).to receive(:readlink) { "xxx" }
|
26
26
|
chk = described_class.new("somelink-xxx", "xxx")
|
27
|
-
chk.success.
|
28
|
-
chk.message.
|
27
|
+
expect(chk.success).to equal(true)
|
28
|
+
expect(chk.message).to match "Symbolic link somelink-xxx is targetting xxx"
|
29
29
|
end
|
30
30
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -11,10 +11,11 @@ SimpleCov.start do
|
|
11
11
|
add_filter 'bundle'
|
12
12
|
end
|
13
13
|
RSpec.configure do |config|
|
14
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
15
14
|
config.run_all_when_everything_filtered = true
|
16
15
|
config.filter_run :focus
|
17
16
|
|
17
|
+
config.raise_errors_for_deprecations!
|
18
|
+
|
18
19
|
# Run specs in random order to surface order dependencies. If you find an
|
19
20
|
# order dependency and want to debug it, you can fix the order by providing
|
20
21
|
# the seed, which is printed after each run.
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gesund
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Evgeny Zislis
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-09-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,49 +27,43 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rack
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: thor
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: Gesund is a simple health checker.
|
@@ -83,6 +74,7 @@ executables:
|
|
83
74
|
extensions: []
|
84
75
|
extra_rdoc_files: []
|
85
76
|
files:
|
77
|
+
- .bundle/.gitignore
|
86
78
|
- .bundle/config
|
87
79
|
- .gitignore
|
88
80
|
- .rspec
|
@@ -125,33 +117,26 @@ files:
|
|
125
117
|
homepage: ''
|
126
118
|
licenses:
|
127
119
|
- MIT
|
120
|
+
metadata: {}
|
128
121
|
post_install_message:
|
129
122
|
rdoc_options: []
|
130
123
|
require_paths:
|
131
124
|
- lib
|
132
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
126
|
requirements:
|
135
|
-
- -
|
127
|
+
- - '>='
|
136
128
|
- !ruby/object:Gem::Version
|
137
129
|
version: '0'
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
hash: -987443717623063982
|
141
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
131
|
requirements:
|
144
|
-
- -
|
132
|
+
- - '>='
|
145
133
|
- !ruby/object:Gem::Version
|
146
134
|
version: '0'
|
147
|
-
segments:
|
148
|
-
- 0
|
149
|
-
hash: -987443717623063982
|
150
135
|
requirements: []
|
151
136
|
rubyforge_project:
|
152
|
-
rubygems_version:
|
137
|
+
rubygems_version: 2.0.14
|
153
138
|
signing_key:
|
154
|
-
specification_version:
|
139
|
+
specification_version: 4
|
155
140
|
summary: Health checker for services and state.
|
156
141
|
test_files:
|
157
142
|
- spec/lib/gesund/check_runner_spec.rb
|