net-ping 1.4.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 1.5.0 - 3-May-2011
2
+ * Added the Net::Ping::LDAP class which allows you to perform LDAP pings.
3
+ Thanks go to Paul Gallagher for adding this.
4
+ * The duration instance variable is now reset to nil on a failed ping. Again,
5
+ thanks go to Paul Gallagher.
6
+
1
7
  == 1.4.1 - 17-Mar-2011
2
8
  * Incorporated changes from Lukas Zapletal that alters the icmp tests to use
3
9
  your localhost instead of going outside the network.
data/MANIFEST CHANGED
@@ -9,6 +9,7 @@
9
9
  * examples/example_pingudp.rb
10
10
  * lib/net/ping.rb
11
11
  * lib/net/ping/icmp.rb
12
+ * lib/net/ping/ldap.rb
12
13
  * lib/net/ping/tcp.rb
13
14
  * lib/net/ping/udp.rb
14
15
  * lib/net/ping/wmi.rb
@@ -17,6 +18,7 @@
17
18
  * test/test_net_ping_external.rb
18
19
  * test/test_net_ping_http.rb
19
20
  * test/test_net_ping_icmp.rb
21
+ * test/test_net_ping_ldap.rb
20
22
  * test/test_net_ping_tcp.rb
21
23
  * test/test_net_ping_udp.rb
22
24
  * test/test_net_ping_wmi.rb
data/Rakefile CHANGED
@@ -39,6 +39,11 @@ namespace 'example' do
39
39
  task :udp do
40
40
  ruby '-Ilib examples/example_pingudp.rb'
41
41
  end
42
+
43
+ desc 'Run the ldap ping example program'
44
+ task :ldap do
45
+ ruby '-Ilib examples/example_pingldap.rb'
46
+ end
42
47
  end
43
48
 
44
49
  Rake::TestTask.new do |t|
@@ -84,6 +89,12 @@ namespace 'test' do
84
89
  t.verbose = true
85
90
  t.test_files = FileList['test/test_net_ping_wmi.rb']
86
91
  end
92
+
93
+ Rake::TestTask.new('ldap') do |t|
94
+ t.warning = true
95
+ t.verbose = true
96
+ t.test_files = FileList['test/test_net_ping_ldap.rb']
97
+ end
87
98
  end
88
99
 
89
100
  task :default => :test
data/doc/ping.txt CHANGED
@@ -43,6 +43,7 @@
43
43
  * Ping::HTTP
44
44
  * Ping::ICMP
45
45
  * Ping::WMI
46
+ * Ping::LDAP
46
47
 
47
48
  All Ping classes are children of the Ping parent class (which should
48
49
  never be instantiated directly).
@@ -135,6 +136,30 @@ Ping::WMI#ping(host, options={})
135
136
  Ping::WMI#ping?(host, options={})
136
137
  Returns whether or not the ping succeeded.
137
138
 
139
+ == Ping::LDAP
140
+ Ping::LDAP.new(uri=nil, timeout=5)
141
+ Performs a 'ping' to an LDAP server in the form of either an anonymous
142
+ or an authenticated LDAP bind.
143
+ Identical to Net::Ping.new except that, instead of a host, the first
144
+ argument is a URI.
145
+ The default +timeout+ is 5 seconds.
146
+
147
+ +uri+ string is expected to be a full URI with scheme (ldap/ldaps)
148
+ and optionally the port (else default port is assumed) e.g.
149
+ ldap://my.ldap.host.com
150
+ ldap://my.ldap.host.com:1389
151
+ ldaps://my.ldap.host.com
152
+ ldaps://my.ldap.host.com:6636
153
+
154
+ If a plain hostname is provided as the +uri+, a default port of 389 is assumed
155
+
156
+ Ping::LDAP#encryption
157
+ Set/get the encyption method. By default is nil, but may be set to :simple_tls
158
+
159
+ Ping::LDAP#username
160
+ Ping::LDAP#password
161
+ set/get the username and password for ping using and authenticated bind.
162
+
138
163
  = Common Instance Methods
139
164
  Ping#exception
140
165
  Returns the error string that was set if a ping call failed. If an exception
@@ -0,0 +1,22 @@
1
+ ########################################################################
2
+ # example_pingldap.rb
3
+ #
4
+ # A short sample program demonstrating an ldap ping. You can run
5
+ # this program via the example:ldap task. Modify as you see fit.
6
+ ########################################################################
7
+ require 'net/ping/ldap'
8
+
9
+ good = 'ldap://localhost'
10
+ bad = 'ldap://example.com'
11
+
12
+ puts "== Good ping (if you have an ldap server at #{good})"
13
+
14
+ p1 = Net::Ping::LDAP.new(good)
15
+ p p1.ping?
16
+
17
+ puts "== Bad ping"
18
+
19
+ p2 = Net::Ping::LDAP.new(bad)
20
+ p p2.ping?
21
+ p p2.warning
22
+ p p2.exception
data/lib/net/ping.rb CHANGED
@@ -9,6 +9,7 @@ require File.join(File.dirname(__FILE__), 'ping/udp')
9
9
  require File.join(File.dirname(__FILE__), 'ping/icmp')
10
10
  require File.join(File.dirname(__FILE__), 'ping/external')
11
11
  require File.join(File.dirname(__FILE__), 'ping/http')
12
+ require File.join(File.dirname(__FILE__), 'ping/ldap')
12
13
 
13
14
  if Config::CONFIG['host_os'] =~ /msdos|mswin|cygwin|mingw|win32|windows/i
14
15
  require File.join(File.dirname(__FILE__), 'ping/wmi')
@@ -0,0 +1,107 @@
1
+ require File.join(File.dirname(__FILE__), 'ping')
2
+ require 'net/ldap'
3
+ require 'uri'
4
+
5
+
6
+ # The Net module serves as a namespace only.
7
+ module Net
8
+
9
+ # The Ping::LDAP class encapsulates methods for LDAP pings.
10
+ class Ping::LDAP < Ping
11
+
12
+ # uri contains the URI object for the request
13
+ #
14
+ attr_accessor :uri
15
+
16
+ # username and password may be set for ping using
17
+ # an authenticated LDAP bind
18
+ #
19
+ attr_accessor :username
20
+ attr_accessor :password
21
+
22
+ # set/get the encryption method. By default nil,
23
+ # but may be set to :simple_tls
24
+ #
25
+ attr_accessor :encryption
26
+ def encryption=(value)
27
+ @encryption = (value.is_a? Symbol) ? value : value.to_sym
28
+ end
29
+
30
+ # Creates and returns a new Ping::LDAP object.
31
+ # The default +timeout+ is 5 seconds.
32
+ #
33
+ # +uri+ string is expected to be a full URI with scheme (ldap/ldaps)
34
+ # and optionally the port (else default port is assumed) e.g.
35
+ # ldap://my.ldap.host.com
36
+ # ldap://my.ldap.host.com:1389
37
+ # ldaps://my.ldap.host.com
38
+ # ldaps://my.ldap.host.com:6636
39
+ #
40
+ # If a plain hostname is provided as the +uri+, a default port of 389 is assumed
41
+ #
42
+ def initialize(uri=nil, timeout=5)
43
+ host, port = decode_uri(uri)
44
+ super(host, port, timeout)
45
+ end
46
+
47
+ # method used to decode uri string
48
+ #
49
+ def decode_uri(value)
50
+ @uri = URI.parse(value)
51
+ if uri.scheme =~ /ldap/
52
+ p = @port = uri.port
53
+ h = @host = uri.host
54
+ @encryption = uri.scheme=='ldaps' ? :simple_tls : nil
55
+ else
56
+ h = value
57
+ p = 389
58
+ end
59
+ [h, p]
60
+ end
61
+
62
+ # constructs the LDAP configuration structure
63
+ #
64
+ def config
65
+ {
66
+ :host => uri.host,
67
+ :port => uri.port,
68
+ :encryption => encryption
69
+ }.merge(
70
+ (username && password) ?
71
+ { :auth => {:method => :simple, :username => username, :password => password} } :
72
+ { :auth => {:method => :anonymous} }
73
+ )
74
+ end
75
+
76
+ # perform ping, optionally providing the ping destination uri
77
+ #
78
+ def ping(host = nil)
79
+ decode_uri(host) if host
80
+ super(@host)
81
+
82
+ bool = false
83
+
84
+ start_time = Time.now
85
+
86
+ begin
87
+ Timeout.timeout(@timeout) do
88
+ Net::LDAP.new( config ).bind
89
+ end
90
+ rescue Net::LDAP::LdapError => e
91
+ @exception = e.message
92
+ rescue Exception => e
93
+ @exception = e.message
94
+ else
95
+ bool = true
96
+ end
97
+
98
+ # There is no duration if the ping failed
99
+ @duration = Time.now - start_time if bool
100
+
101
+ bool
102
+ end
103
+
104
+ alias ping? ping
105
+ alias pingecho ping
106
+ end
107
+ end
data/lib/net/ping/ping.rb CHANGED
@@ -10,7 +10,7 @@ module Net
10
10
  #
11
11
  class Ping
12
12
  # The version of the net-ping library.
13
- VERSION = '1.4.1'
13
+ VERSION = '1.5.0'
14
14
 
15
15
  # The host to ping. In the case of Ping::HTTP, this is the URI.
16
16
  attr_accessor :host
@@ -80,6 +80,7 @@ module Net
80
80
  raise ArgumentError, 'no host specified' unless host
81
81
  @exception = nil
82
82
  @warning = nil
83
+ @duration = nil
83
84
  end
84
85
 
85
86
  alias ping? ping
data/net-ping.gemspec CHANGED
@@ -3,21 +3,22 @@ require 'rbconfig'
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = 'net-ping'
6
- gem.version = '1.4.1'
6
+ gem.version = '1.5.0'
7
7
  gem.license = 'Artistic 2.0'
8
8
  gem.author = 'Daniel J. Berger'
9
9
  gem.email = 'djberg96@gmail.com'
10
10
  gem.homepage = 'http://www.rubyforge.org/projects/shards'
11
11
  gem.summary = 'A ping interface for Ruby.'
12
12
  gem.test_file = 'test/test_net_ping.rb'
13
- gem.has_rdoc = true
14
13
  gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
15
14
 
16
15
  gem.rubyforge_project = 'shards'
17
16
  gem.extra_rdoc_files = ['README', 'CHANGES', 'doc/ping.txt']
18
17
 
18
+ gem.add_dependency('net-ldap', '~> 0.2.2')
19
19
  gem.add_development_dependency('test-unit', '>= 2.1.2')
20
20
  gem.add_development_dependency('fakeweb', '>= 1.3.0')
21
+ gem.add_development_dependency('fakeldap', '~> 0.0.1')
21
22
 
22
23
  # These dependencies are for Net::Ping::External
23
24
  if File::ALT_SEPARATOR && RUBY_PLATFORM != 'java'
@@ -32,7 +33,7 @@ Gem::Specification.new do |gem|
32
33
 
33
34
  gem.description = <<-EOF
34
35
  The net-ping library provides a ping interface for Ruby. It includes
35
- separate TCP, HTTP, ICMP, UDP, WMI (for Windows) and external ping
36
+ separate TCP, HTTP, LDAP, ICMP, UDP, WMI (for Windows) and external ping
36
37
  classes.
37
38
  EOF
38
39
  end
@@ -30,7 +30,7 @@ end
30
30
 
31
31
  class TC_Net_Ping < Test::Unit::TestCase
32
32
  def test_net_ping_version
33
- assert_equal('1.4.1', Net::Ping::VERSION)
33
+ assert_equal('1.5.0', Net::Ping::VERSION)
34
34
  end
35
35
  end
36
36
 
@@ -59,6 +59,13 @@ class TC_Net_Ping_External < Test::Unit::TestCase
59
59
  assert_kind_of(Float, @pe.duration)
60
60
  end
61
61
 
62
+ test "duration is unset if a bad ping follows a good ping" do
63
+ assert_nothing_raised{ @pe.ping }
64
+ assert_not_nil(@pe.duration)
65
+ assert_false(@pe.ping?(@bogus))
66
+ assert_nil(@pe.duration)
67
+ end
68
+
62
69
  test "host getter basic functionality" do
63
70
  assert_respond_to(@pe, :host)
64
71
  assert_equal('www.ruby-lang.org', @pe.host)
@@ -0,0 +1,200 @@
1
+ #################################################################################
2
+ # test_net_ping_http.rb
3
+ #
4
+ # Test case for the Net::PingHTTP class. This should be run via the 'test' or
5
+ # 'test:http' Rake task.
6
+ #################################################################################
7
+ require 'rubygems'
8
+ gem 'test-unit'
9
+
10
+ require 'test/unit'
11
+ require 'net/ping/ldap'
12
+ require 'fakeldap'
13
+
14
+ class TC_Net_Ping_LDAP < Test::Unit::TestCase
15
+ class << self
16
+ def startup
17
+ @@host = 'localhost'
18
+ @@port = 2389
19
+ @@uri = "ldap://#{@@host}:#{@@port}"
20
+ @@timeout = 30
21
+ @@cn = 'el.Daper'
22
+ @@password = 'ldappassword'
23
+
24
+ @@ldap_server = FakeLDAP::Server.new(:port => @@port)
25
+ @@ldap_server.run_tcpserver
26
+ @@ldap_server.add_user("cn=#{@@cn},ou=USERS,dc=example,dc=com", @@password)
27
+ end
28
+ def shutdown
29
+ @@ldap_server.stop
30
+ end
31
+ end
32
+ def setup
33
+ @ldap = Net::Ping::LDAP.new(@@uri, @@timeout)
34
+ @ldap.username = @@cn
35
+ @ldap.password = @@password
36
+ @bogus = 'ldap://blabfoobarurghxxxx.com' # One hopes so
37
+ @bad = Net::Ping::LDAP.new(@bogus)
38
+ end
39
+
40
+ def teardown
41
+ @ldap = nil
42
+ end
43
+
44
+ test 'ping basic functionality' do
45
+ assert_respond_to(@ldap, :ping)
46
+ assert_nothing_raised{ @ldap.ping }
47
+ end
48
+
49
+ test 'ping returns a boolean value' do
50
+ assert_boolean(@ldap.ping?)
51
+ assert_boolean(@bad.ping?)
52
+ end
53
+
54
+ test 'ping? is an alias for ping' do
55
+ assert_alias_method(@ldap, :ping?, :ping)
56
+ end
57
+
58
+ test 'pingecho is an alias for ping' do
59
+ assert_alias_method(@ldap, :pingecho, :ping)
60
+ end
61
+
62
+ test 'ping should succeed for a valid website' do
63
+ assert_true(@ldap.ping?)
64
+ end
65
+
66
+ test 'ping should fail for an invalid website' do
67
+ assert_false(@bad.ping?)
68
+ end
69
+
70
+ test 'duration basic functionality' do
71
+ assert_respond_to(@ldap, :duration)
72
+ assert_nothing_raised{ @ldap.ping }
73
+ end
74
+
75
+ test 'duration returns a float value on a successful ping' do
76
+ assert_true(@ldap.ping)
77
+ assert_kind_of(Float, @ldap.duration)
78
+ end
79
+
80
+ test 'duration is nil on an unsuccessful ping' do
81
+ assert_false(@bad.ping)
82
+ assert_nil(@ldap.duration)
83
+ end
84
+
85
+ test "duration is unset if a bad ping follows a good ping" do
86
+ assert_true{ @ldap.ping }
87
+ assert_not_nil(@ldap.duration)
88
+ assert_false(@ldap.ping?(@bogus))
89
+ assert_nil(@ldap.duration)
90
+ end
91
+
92
+ test 'host attribute basic functionality' do
93
+ assert_respond_to(@ldap, :host)
94
+ assert_respond_to(@ldap, :host=)
95
+ assert_equal(@@host, @ldap.host)
96
+ end
97
+
98
+ test 'port attribute basic functionality' do
99
+ assert_respond_to(@ldap, :port)
100
+ assert_respond_to(@ldap, :port=)
101
+ end
102
+
103
+ test 'port attribute expected value' do
104
+ assert_equal(@@port, @ldap.port)
105
+ end
106
+
107
+ test 'timeout attribute basic functionality' do
108
+ assert_respond_to(@ldap, :timeout)
109
+ assert_respond_to(@ldap, :timeout=)
110
+ end
111
+
112
+ test 'timeout attribute expected values' do
113
+ assert_equal(@@timeout, @ldap.timeout)
114
+ assert_equal(5, @bad.timeout)
115
+ end
116
+
117
+ test 'exception attribute basic functionality' do
118
+ assert_respond_to(@ldap, :exception)
119
+ assert_nil(@ldap.exception)
120
+ end
121
+
122
+ test 'exception attribute is nil if the ping is successful' do
123
+ assert_true(@ldap.ping)
124
+ assert_nil(@ldap.exception)
125
+ end
126
+
127
+ test 'exception attribute is not nil if the ping is unsuccessful' do
128
+ assert_false(@bad.ping)
129
+ assert_not_nil(@bad.exception)
130
+ end
131
+
132
+ test 'warning attribute basic functionality' do
133
+ assert_respond_to(@ldap, :warning)
134
+ assert_nil(@ldap.warning)
135
+ end
136
+
137
+ test 'uri attribute basic functionality' do
138
+ assert_respond_to(@ldap, :uri)
139
+ assert_respond_to(@ldap, :uri=)
140
+ end
141
+
142
+ test 'username attribute basic functionality' do
143
+ assert_respond_to(@ldap, :username)
144
+ assert_respond_to(@ldap, :username=)
145
+ end
146
+
147
+ test 'password attribute basic functionality' do
148
+ assert_respond_to(@ldap, :password)
149
+ assert_respond_to(@ldap, :password=)
150
+ end
151
+
152
+ test 'encryption attribute basic functionality' do
153
+ assert_respond_to(@ldap, :encryption)
154
+ assert_respond_to(@ldap, :encryption=)
155
+ end
156
+
157
+ test 'encryption defaults to nil for ldap' do
158
+ assert_nil(Net::Ping::LDAP.new('ldap://somehost.example.net').encryption)
159
+ end
160
+
161
+ test 'encryption defaults to simple_tls for ldaps' do
162
+ assert_equal(:simple_tls, Net::Ping::LDAP.new('ldaps://somehost.example.net').encryption)
163
+ end
164
+
165
+ test 'port defaults to 389 for ldap' do
166
+ assert_equal(389, Net::Ping::LDAP.new('ldap://somehost.example.net').port)
167
+ end
168
+
169
+ test 'port defaults to 636 for ldaps' do
170
+ assert_equal(636, Net::Ping::LDAP.new('ldaps://somehost.example.net').port)
171
+ end
172
+
173
+ test 'port extracted from uri if provided' do
174
+ assert_equal(12345, Net::Ping::LDAP.new('ldap://somehost.example.net:12345').port)
175
+ assert_equal(12345, Net::Ping::LDAP.new('ldaps://somehost.example.net:12345').port)
176
+ end
177
+
178
+ test 'encryption setting is forced to symbol' do
179
+ @ldap.encryption = 'simple_tls'
180
+ assert_true( @ldap.encryption.is_a? Symbol )
181
+ assert_true( @ldap.config[:encryption].is_a? Symbol )
182
+ end
183
+
184
+ test 'username/password set in config auth section' do
185
+ @ldap.username, @ldap.password = 'fred', 'derf'
186
+ assert_equal('fred', @ldap.config[:auth][:username] )
187
+ assert_equal('derf', @ldap.config[:auth][:password] )
188
+ end
189
+
190
+ test 'auth method defaults to simple if username/password set' do
191
+ @ldap.username, @ldap.password = 'fred', 'derf'
192
+ assert_equal(:simple, @ldap.config[:auth][:method] )
193
+ end
194
+
195
+ test 'if no username/password then defaults to auth anonymous' do
196
+ @ldap.username = @ldap.password = nil
197
+ assert_equal({:method => :anonymous}, @ldap.config[:auth] )
198
+ end
199
+
200
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ping
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
5
- prerelease: false
4
+ hash: 3
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
- - 4
9
- - 1
10
- version: 1.4.1
8
+ - 5
9
+ - 0
10
+ version: 1.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel J. Berger
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-17 00:00:00 -06:00
18
+ date: 2011-05-04 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: test-unit
22
+ name: net-ldap
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 19
30
+ segments:
31
+ - 0
32
+ - 2
33
+ - 2
34
+ version: 0.2.2
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: test-unit
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ">="
@@ -33,11 +49,11 @@ dependencies:
33
49
  - 2
34
50
  version: 2.1.2
35
51
  type: :development
36
- version_requirements: *id001
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  name: fakeweb
39
55
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ">="
@@ -49,8 +65,24 @@ dependencies:
49
65
  - 0
50
66
  version: 1.3.0
51
67
  type: :development
52
- version_requirements: *id002
53
- description: " The net-ping library provides a ping interface for Ruby. It includes\n separate TCP, HTTP, ICMP, UDP, WMI (for Windows) and external ping\n classes.\n"
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: fakeldap
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 29
78
+ segments:
79
+ - 0
80
+ - 0
81
+ - 1
82
+ version: 0.0.1
83
+ type: :development
84
+ version_requirements: *id004
85
+ description: " The net-ping library provides a ping interface for Ruby. It includes\n separate TCP, HTTP, LDAP, ICMP, UDP, WMI (for Windows) and external ping\n classes.\n"
54
86
  email: djberg96@gmail.com
55
87
  executables: []
56
88
 
@@ -61,31 +93,34 @@ extra_rdoc_files:
61
93
  - CHANGES
62
94
  - doc/ping.txt
63
95
  files:
64
- - CHANGES
96
+ - Rakefile
97
+ - README
65
98
  - doc/ping.txt
66
- - examples/example_pingexternal.rb
67
- - examples/example_pinghttp.rb
68
- - examples/example_pingtcp.rb
69
- - examples/example_pingudp.rb
99
+ - lib/net/ping.rb
70
100
  - lib/net/ping/external.rb
71
- - lib/net/ping/http.rb
72
101
  - lib/net/ping/icmp.rb
102
+ - lib/net/ping/wmi.rb
103
+ - lib/net/ping/udp.rb
73
104
  - lib/net/ping/ping.rb
105
+ - lib/net/ping/ldap.rb
106
+ - lib/net/ping/http.rb
74
107
  - lib/net/ping/tcp.rb
75
- - lib/net/ping/udp.rb
76
- - lib/net/ping/wmi.rb
77
- - lib/net/ping.rb
78
- - MANIFEST
79
108
  - net-ping.gemspec
80
- - Rakefile
81
- - README
82
- - test/test_net_ping.rb
83
- - test/test_net_ping_external.rb
109
+ - CHANGES
110
+ - examples/example_pinghttp.rb
111
+ - examples/example_pingldap.rb
112
+ - examples/example_pingexternal.rb
113
+ - examples/example_pingtcp.rb
114
+ - examples/example_pingudp.rb
115
+ - test/test_net_ping_ldap.rb
84
116
  - test/test_net_ping_http.rb
85
117
  - test/test_net_ping_icmp.rb
86
- - test/test_net_ping_tcp.rb
87
118
  - test/test_net_ping_udp.rb
88
119
  - test/test_net_ping_wmi.rb
120
+ - test/test_net_ping_external.rb
121
+ - test/test_net_ping_tcp.rb
122
+ - test/test_net_ping.rb
123
+ - MANIFEST
89
124
  has_rdoc: true
90
125
  homepage: http://www.rubyforge.org/projects/shards
91
126
  licenses:
@@ -116,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
151
  requirements: []
117
152
 
118
153
  rubyforge_project: shards
119
- rubygems_version: 1.3.7
154
+ rubygems_version: 1.6.2
120
155
  signing_key:
121
156
  specification_version: 3
122
157
  summary: A ping interface for Ruby.