serverspec 0.2.21 → 0.2.22
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/serverspec/commands/base.rb +8 -0
- data/lib/serverspec/matchers.rb +1 -0
- data/lib/serverspec/matchers/be_reachable.rb +16 -0
- data/lib/serverspec/version.rb +1 -1
- data/spec/debian/commands_spec.rb +15 -0
- data/spec/debian/matchers_spec.rb +3 -0
- data/spec/gentoo/commands_spec.rb +17 -2
- data/spec/gentoo/matchers_spec.rb +3 -0
- data/spec/redhat/commands_spec.rb +17 -2
- data/spec/redhat/matchers_spec.rb +3 -0
- data/spec/solaris/commands_spec.rb +17 -2
- data/spec/solaris/matchers_spec.rb +3 -0
- data/spec/support/shared_matcher_examples.rb +29 -0
- metadata +3 -2
@@ -11,6 +11,14 @@ module Serverspec
|
|
11
11
|
"mount | grep -w 'on #{path}'"
|
12
12
|
end
|
13
13
|
|
14
|
+
def check_reachable host, port, proto, timeout
|
15
|
+
if port.nil?
|
16
|
+
"ping -n #{host} -w #{timeout} -c 2"
|
17
|
+
else
|
18
|
+
"nc -vvvvz#{proto[0].chr} #{host} #{port} -w #{timeout}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
14
22
|
def check_resolvable name, type
|
15
23
|
if type == "dns"
|
16
24
|
"nslookup -timeout=1 #{name}"
|
data/lib/serverspec/matchers.rb
CHANGED
@@ -2,6 +2,7 @@ require 'serverspec/matchers/be_mounted'
|
|
2
2
|
require 'serverspec/matchers/be_resolvable'
|
3
3
|
require 'serverspec/matchers/be_enabled'
|
4
4
|
require 'serverspec/matchers/be_file'
|
5
|
+
require 'serverspec/matchers/be_reachable'
|
5
6
|
require 'serverspec/matchers/be_directory'
|
6
7
|
require 'serverspec/matchers/be_installed'
|
7
8
|
require 'serverspec/matchers/be_listening'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
RSpec::Matchers.define :be_reachable do
|
2
|
+
match do |host|
|
3
|
+
proto = 'tcp'
|
4
|
+
timeout = 5
|
5
|
+
if @attr
|
6
|
+
port = @attr[:port]
|
7
|
+
proto = @attr[:proto] if @attr[:proto]
|
8
|
+
timeout = @attr[:timeout] if @attr[:timeout]
|
9
|
+
end
|
10
|
+
|
11
|
+
backend.check_reachable(example, host, port, proto, timeout)
|
12
|
+
end
|
13
|
+
chain :with do |attr|
|
14
|
+
@attr = attr
|
15
|
+
end
|
16
|
+
end
|
data/lib/serverspec/version.rb
CHANGED
@@ -15,6 +15,21 @@ describe 'check_mounted', :os => :debian do
|
|
15
15
|
it { should eq "mount | grep -w 'on /'" }
|
16
16
|
end
|
17
17
|
|
18
|
+
describe 'check_reachable', :os => :debian do
|
19
|
+
context "connect with name from /etc/services to localhost" do
|
20
|
+
subject { commands.check_reachable('localhost', 'ssh', 'tcp', 1) }
|
21
|
+
it { should eq "nc -vvvvzt localhost ssh -w 1" }
|
22
|
+
end
|
23
|
+
context "connect with ip and port 11111 and timeout of 5" do
|
24
|
+
subject { commands.check_reachable('127.0.0.1', '11111', 'udp', 5) }
|
25
|
+
it { should eq "nc -vvvvzu 127.0.0.1 11111 -w 5" }
|
26
|
+
end
|
27
|
+
context "do a ping" do
|
28
|
+
subject { commands.check_reachable('127.0.0.1', nil, 'icmp', 1) }
|
29
|
+
it { should eq "ping -n 127.0.0.1 -w 1 -c 2" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
18
33
|
describe 'check_resolvable', :os => :debian do
|
19
34
|
context "resolve localhost by hosts" do
|
20
35
|
subject { commands.check_resolvable('localhost', 'hosts') }
|
@@ -12,6 +12,9 @@ describe 'Serverspec matchers of Debian family', :os => :debian do
|
|
12
12
|
it_behaves_like 'support be_mounted.with matcher', '/'
|
13
13
|
it_behaves_like 'support be_mounted.only_with matcher', '/'
|
14
14
|
|
15
|
+
it_behaves_like 'support be_reachable matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
16
|
+
it_behaves_like 'support be_reachable.with matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
17
|
+
|
15
18
|
it_behaves_like 'support be_resolvable matcher', 'localhost'
|
16
19
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'hosts'
|
17
20
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'dns'
|
@@ -10,12 +10,27 @@ describe 'check_file', :os => :gentoo do
|
|
10
10
|
it { should eq 'test -f /etc/passwd' }
|
11
11
|
end
|
12
12
|
|
13
|
-
describe 'check_mounted', :os => :
|
13
|
+
describe 'check_mounted', :os => :gentoo do
|
14
14
|
subject { commands.check_mounted('/') }
|
15
15
|
it { should eq "mount | grep -w 'on /'" }
|
16
16
|
end
|
17
17
|
|
18
|
-
describe '
|
18
|
+
describe 'check_reachable', :os => :gentoo do
|
19
|
+
context "connect with name from /etc/services to localhost" do
|
20
|
+
subject { commands.check_reachable('localhost', 'ssh', 'tcp', 1) }
|
21
|
+
it { should eq "nc -vvvvzt localhost ssh -w 1" }
|
22
|
+
end
|
23
|
+
context "connect with ip and port 11111 and timeout of 5" do
|
24
|
+
subject { commands.check_reachable('127.0.0.1', '11111', 'udp' ,5) }
|
25
|
+
it { should eq "nc -vvvvzu 127.0.0.1 11111 -w 5" }
|
26
|
+
end
|
27
|
+
context "do a ping" do
|
28
|
+
subject { commands.check_reachable('127.0.0.1', nil, 'icmp', 1) }
|
29
|
+
it { should eq "ping -n 127.0.0.1 -w 1 -c 2" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'check_resolvable', :os => :gentoo do
|
19
34
|
context "resolve localhost by hosts" do
|
20
35
|
subject { commands.check_resolvable('localhost', 'hosts') }
|
21
36
|
it { should eq "grep -w localhost /etc/hosts" }
|
@@ -12,6 +12,9 @@ describe 'Serverspec matchers of Gentoo family', :os => :gentoo do
|
|
12
12
|
it_behaves_like 'support be_mounted.with matcher', '/'
|
13
13
|
it_behaves_like 'support be_mounted.only_with matcher', '/'
|
14
14
|
|
15
|
+
it_behaves_like 'support be_reachable matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
16
|
+
it_behaves_like 'support be_reachable.with matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
17
|
+
|
15
18
|
it_behaves_like 'support be_resolvable matcher', 'localhost'
|
16
19
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'hosts'
|
17
20
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'dns'
|
@@ -10,12 +10,27 @@ describe 'check_file', :os => :redhat do
|
|
10
10
|
it { should eq 'test -f /etc/passwd' }
|
11
11
|
end
|
12
12
|
|
13
|
-
describe 'check_mounted', :os => :
|
13
|
+
describe 'check_mounted', :os => :redhat do
|
14
14
|
subject { commands.check_mounted('/') }
|
15
15
|
it { should eq "mount | grep -w 'on /'" }
|
16
16
|
end
|
17
17
|
|
18
|
-
describe '
|
18
|
+
describe 'check_reachable', :os => :redhat do
|
19
|
+
context "connect with name from /etc/services to localhost" do
|
20
|
+
subject { commands.check_reachable('localhost', 'ssh', 'tcp', 1) }
|
21
|
+
it { should eq "nc -vvvvzt localhost ssh -w 1" }
|
22
|
+
end
|
23
|
+
context "connect with ip and port 11111 and timeout of 5" do
|
24
|
+
subject { commands.check_reachable('127.0.0.1', '11111', 'udp', 5) }
|
25
|
+
it { should eq "nc -vvvvzu 127.0.0.1 11111 -w 5" }
|
26
|
+
end
|
27
|
+
context "do a ping" do
|
28
|
+
subject { commands.check_reachable('127.0.0.1', nil, 'icmp', 1) }
|
29
|
+
it { should eq "ping -n 127.0.0.1 -w 1 -c 2" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'check_resolvable', :os => :redhat do
|
19
34
|
context "resolve localhost by hosts" do
|
20
35
|
subject { commands.check_resolvable('localhost', 'hosts') }
|
21
36
|
it { should eq "grep -w localhost /etc/hosts" }
|
@@ -13,6 +13,9 @@ describe 'Serverspec matchers of Red Hat family', :os => :redhat do
|
|
13
13
|
it_behaves_like 'support be_mounted.with matcher', '/'
|
14
14
|
it_behaves_like 'support be_mounted.only_with matcher', '/'
|
15
15
|
|
16
|
+
it_behaves_like 'support be_reachable matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
17
|
+
it_behaves_like 'support be_reachable.with matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
18
|
+
|
16
19
|
it_behaves_like 'support be_resolvable matcher', 'localhost'
|
17
20
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'hosts'
|
18
21
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'dns'
|
@@ -10,12 +10,27 @@ describe 'check_file', :os => :solaris do
|
|
10
10
|
it { should eq 'test -f /etc/passwd' }
|
11
11
|
end
|
12
12
|
|
13
|
-
describe 'check_mounted', :os => :
|
13
|
+
describe 'check_mounted', :os => :solaris do
|
14
14
|
subject { commands.check_mounted('/') }
|
15
15
|
it { should eq "mount | grep -w 'on /'" }
|
16
16
|
end
|
17
17
|
|
18
|
-
describe '
|
18
|
+
describe 'check_reachable', :os => :solaris do
|
19
|
+
context "connect with name from /etc/services to localhost" do
|
20
|
+
subject { commands.check_reachable('localhost', 'ssh', 'tcp', 1) }
|
21
|
+
it { should eq "nc -vvvvzt localhost ssh -w 1" }
|
22
|
+
end
|
23
|
+
context "connect with ip and port 11111 and timeout of 5" do
|
24
|
+
subject { commands.check_reachable('127.0.0.1', '11111', 'udp', 5) }
|
25
|
+
it { should eq "nc -vvvvzu 127.0.0.1 11111 -w 5" }
|
26
|
+
end
|
27
|
+
context "do a ping" do
|
28
|
+
subject { commands.check_reachable('127.0.0.1', nil, 'icmp', 1) }
|
29
|
+
it { should eq "ping -n 127.0.0.1 -w 1 -c 2" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'check_resolvable', :os => :solaris do
|
19
34
|
context "resolve localhost by hosts" do
|
20
35
|
subject { commands.check_resolvable('localhost', 'hosts') }
|
21
36
|
it { should eq "grep -w localhost /etc/hosts" }
|
@@ -12,6 +12,9 @@ describe 'Serverspec matchers of Solaris family', :os => :solaris do
|
|
12
12
|
it_behaves_like 'support be_mounted.with matcher', '/'
|
13
13
|
it_behaves_like 'support be_mounted.only_with matcher', '/'
|
14
14
|
|
15
|
+
it_behaves_like 'support be_reachable matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
16
|
+
it_behaves_like 'support be_reachable.with matcher', '127.0.0.1:11111', '1.1.1.1:ssh'
|
17
|
+
|
15
18
|
it_behaves_like 'support be_resolvable matcher', 'localhost'
|
16
19
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'hosts'
|
17
20
|
it_behaves_like 'support be_resolvable.by matcher', 'localhost', 'dns'
|
@@ -94,6 +94,35 @@ shared_examples_for 'support be_listening matcher' do |valid_port|
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
shared_examples_for 'support be_reachable matcher' do |valid_host|
|
98
|
+
describe 'be_reachable' do
|
99
|
+
context valid_host do
|
100
|
+
it { should be_reachable }
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'invalid-host' do
|
104
|
+
it { should_not be_reachable }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
shared_examples_for 'support be_reachable.with matcher' do |valid_host|
|
110
|
+
describe 'be_reachable.with' do
|
111
|
+
context valid_host do
|
112
|
+
it { should be_reachable.with(:proto => "icmp", :timeout=> 1) }
|
113
|
+
end
|
114
|
+
context valid_host do
|
115
|
+
it { should be_reachable.with(:proto => "tcp", :port => 22, :timeout=> 1) }
|
116
|
+
end
|
117
|
+
context valid_host do
|
118
|
+
it { should be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
119
|
+
end
|
120
|
+
context 'invalid-host' do
|
121
|
+
it { should_not be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
97
126
|
shared_examples_for 'support be_mounted matcher' do |valid_mount|
|
98
127
|
describe 'be_mounted' do
|
99
128
|
describe valid_mount do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.22
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: net-ssh
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- lib/serverspec/matchers/be_mounted.rb
|
146
146
|
- lib/serverspec/matchers/be_owned_by.rb
|
147
147
|
- lib/serverspec/matchers/be_permissive.rb
|
148
|
+
- lib/serverspec/matchers/be_reachable.rb
|
148
149
|
- lib/serverspec/matchers/be_readable.rb
|
149
150
|
- lib/serverspec/matchers/be_resolvable.rb
|
150
151
|
- lib/serverspec/matchers/be_running.rb
|