net-ping 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/net/ping/ping.rb CHANGED
@@ -10,12 +10,12 @@ module Net
10
10
  #
11
11
  class Ping
12
12
  # The version of the net-ping library.
13
- VERSION = '1.3.2'
13
+ VERSION = '1.3.3'
14
14
 
15
- # The host to ping. In the case of Ping::HTTP, this is the URI.
15
+ # The host to ping. In the case of Ping::HTTP, this is the URI.
16
16
  attr_accessor :host
17
17
 
18
- # The port to ping. This is set to the echo port (7) by default. The
18
+ # The port to ping. This is set to the echo port (7) by default. The
19
19
  # Ping::HTTP class defaults to port 80.
20
20
  #
21
21
  attr_accessor :port
data/lib/net/ping/tcp.rb CHANGED
@@ -3,81 +3,81 @@ require File.join(File.dirname(__FILE__), 'ping')
3
3
  # The Net module serves as a namespace only.
4
4
  module Net
5
5
 
6
- # With a TCP ping simply try to open a connection. If we are successful,
7
- # assume success. In either case close the connection to be polite.
8
- #
9
- class Ping::TCP < Ping
10
- @@service_check = false
6
+ # With a TCP ping simply try to open a connection. If we are successful,
7
+ # assume success. In either case close the connection to be polite.
8
+ #
9
+ class Ping::TCP < Ping
10
+ @@service_check = false
11
11
 
12
- # Returns whether or not Errno::ECONNREFUSED is considered a successful
13
- # ping. The default is false.
14
- #
15
- def self.service_check
16
- @@service_check
17
- end
12
+ # Returns whether or not Errno::ECONNREFUSED is considered a successful
13
+ # ping. The default is false.
14
+ #
15
+ def self.service_check
16
+ @@service_check
17
+ end
18
18
 
19
- # Sets whether or not an Errno::ECONNREFUSED should be considered a
20
- # successful ping.
21
- #
22
- def self.service_check=(bool)
23
- unless bool.kind_of?(TrueClass) || bool.kind_of?(FalseClass)
24
- raise ArgumentError, 'argument must be true or false'
25
- end
26
- @@service_check = bool
19
+ # Sets whether or not an Errno::ECONNREFUSED should be considered a
20
+ # successful ping.
21
+ #
22
+ def self.service_check=(bool)
23
+ unless bool.kind_of?(TrueClass) || bool.kind_of?(FalseClass)
24
+ raise ArgumentError, 'argument must be true or false'
27
25
  end
26
+ @@service_check = bool
27
+ end
28
28
 
29
- # This method attempts to ping a host and port using a TCPSocket with
30
- # the host, port and timeout values passed in the constructor. Returns
31
- # true if successful, or false otherwise.
32
- #
33
- # Note that, by default, an Errno::ECONNREFUSED return result will be
34
- # considered a failed ping. See the documentation for the
35
- # Ping::TCP.service_check= method if you wish to change this behavior.
36
- #
37
- def ping(host=@host)
38
- super(host)
29
+ # This method attempts to ping a host and port using a TCPSocket with
30
+ # the host, port and timeout values passed in the constructor. Returns
31
+ # true if successful, or false otherwise.
32
+ #
33
+ # Note that, by default, an Errno::ECONNREFUSED return result will be
34
+ # considered a failed ping. See the documentation for the
35
+ # Ping::TCP.service_check= method if you wish to change this behavior.
36
+ #
37
+ def ping(host=@host)
38
+ super(host)
39
39
 
40
- bool = false
41
- tcp = nil
42
- start_time = Time.now
40
+ bool = false
41
+ tcp = nil
42
+ start_time = Time.now
43
43
 
44
- begin
45
- Timeout.timeout(@timeout){
46
- begin
47
- tcp = TCPSocket.new(host, @port)
48
- rescue Errno::ECONNREFUSED => err
49
- if @@service_check
50
- bool = true
51
- else
52
- @exception = err
53
- end
54
- rescue Exception => err
55
- @exception = err
56
- else
57
- bool = true
58
- end
59
- }
60
- rescue Timeout::Error => err
44
+ begin
45
+ Timeout.timeout(@timeout){
46
+ begin
47
+ tcp = TCPSocket.new(host, @port)
48
+ rescue Errno::ECONNREFUSED => err
49
+ if @@service_check
50
+ bool = true
51
+ else
52
+ @exception = err
53
+ end
54
+ rescue Exception => err
61
55
  @exception = err
62
- ensure
63
- tcp.close if tcp
64
- end
56
+ else
57
+ bool = true
58
+ end
59
+ }
60
+ rescue Timeout::Error => err
61
+ @exception = err
62
+ ensure
63
+ tcp.close if tcp
64
+ end
65
65
 
66
- # There is no duration if the ping failed
67
- @duration = Time.now - start_time if bool
66
+ # There is no duration if the ping failed
67
+ @duration = Time.now - start_time if bool
68
68
 
69
- bool
70
- end
69
+ bool
70
+ end
71
71
 
72
- alias ping? ping
73
- alias pingecho ping
72
+ alias ping? ping
73
+ alias pingecho ping
74
74
 
75
- # Class method aliases. DEPRECATED.
76
- class << self
77
- alias econnrefused service_check
78
- alias econnrefused= service_check=
79
- alias ecr service_check
80
- alias ecr= service_check=
81
- end
82
- end
75
+ # Class method aliases. DEPRECATED.
76
+ class << self
77
+ alias econnrefused service_check
78
+ alias econnrefused= service_check=
79
+ alias ecr service_check
80
+ alias ecr= service_check=
81
+ end
82
+ end
83
83
  end
data/lib/net/ping/udp.rb CHANGED
@@ -3,117 +3,117 @@ require File.join(File.dirname(__FILE__), 'ping')
3
3
  # The Net module serves as a namespace only.
4
4
  module Net
5
5
 
6
- # The Ping::UDP class encapsulates methods for UDP pings.
7
- class Ping::UDP < Ping
8
- @@service_check = true
6
+ # The Ping::UDP class encapsulates methods for UDP pings.
7
+ class Ping::UDP < Ping
8
+ @@service_check = true
9
9
 
10
- # Returns whether or not the connect behavior should enforce remote
11
- # service availability as well as reachability. The default is true.
12
- #
13
- def self.service_check
14
- @@service_check
15
- end
10
+ # Returns whether or not the connect behavior should enforce remote
11
+ # service availability as well as reachability. The default is true.
12
+ #
13
+ def self.service_check
14
+ @@service_check
15
+ end
16
16
 
17
- # Set whether or not the connect behavior should enforce remote
18
- # service availability as well as reachability. If set to false
19
- # then Errno::ECONNREFUSED or Errno::ECONNRESET will be considered
20
- # a successful ping, meaning no actual data handshaking is required.
21
- # By default, if either of those errors occurs it is considered a failed
22
- # ping.
23
- #
24
- def self.service_check=(bool)
25
- unless bool.kind_of?(TrueClass) || bool.kind_of?(FalseClass)
26
- raise ArgumentError, 'argument must be true or false'
27
- end
28
- @@service_check = bool
17
+ # Set whether or not the connect behavior should enforce remote
18
+ # service availability as well as reachability. If set to false
19
+ # then Errno::ECONNREFUSED or Errno::ECONNRESET will be considered
20
+ # a successful ping, meaning no actual data handshaking is required.
21
+ # By default, if either of those errors occurs it is considered a failed
22
+ # ping.
23
+ #
24
+ def self.service_check=(bool)
25
+ unless bool.kind_of?(TrueClass) || bool.kind_of?(FalseClass)
26
+ raise ArgumentError, 'argument must be true or false'
29
27
  end
28
+ @@service_check = bool
29
+ end
30
30
 
31
- # The maximum data size that can be sent in a UDP ping.
32
- MAX_DATA = 64
31
+ # The maximum data size that can be sent in a UDP ping.
32
+ MAX_DATA = 64
33
33
 
34
- # The data to send to the remote host. By default this is 'ping'.
35
- # This should be MAX_DATA size characters or less.
36
- #
37
- attr_reader :data
34
+ # The data to send to the remote host. By default this is 'ping'.
35
+ # This should be MAX_DATA size characters or less.
36
+ #
37
+ attr_reader :data
38
38
 
39
- # Creates and returns a new Ping::UDP object. This is effectively
40
- # identical to its superclass constructor.
41
- #
42
- def initialize(host=nil, port=nil, timeout=5)
43
- @data = 'ping'
39
+ # Creates and returns a new Ping::UDP object. This is effectively
40
+ # identical to its superclass constructor.
41
+ #
42
+ def initialize(host=nil, port=nil, timeout=5)
43
+ @data = 'ping'
44
44
 
45
- super(host, port, timeout)
45
+ super(host, port, timeout)
46
46
 
47
- @bind_host = nil
48
- @bind_port = nil
49
- end
47
+ @bind_host = nil
48
+ @bind_port = nil
49
+ end
50
50
 
51
- # Sets the data string sent to the remote host. This value cannot have
52
- # a size greater than MAX_DATA.
53
- #
54
- def data=(string)
55
- if string.size > MAX_DATA
56
- err = "cannot set data string larger than #{MAX_DATA} characters"
57
- raise ArgumentError, err
58
- end
51
+ # Sets the data string sent to the remote host. This value cannot have
52
+ # a size greater than MAX_DATA.
53
+ #
54
+ def data=(string)
55
+ if string.size > MAX_DATA
56
+ err = "cannot set data string larger than #{MAX_DATA} characters"
57
+ raise ArgumentError, err
58
+ end
59
59
 
60
- @data = string
61
- end
60
+ @data = string
61
+ end
62
62
 
63
- # Associates the local end of the UDP connection with the given +host+
64
- # and +port+. This is essentially a wrapper for UDPSocket#bind.
65
- #
66
- def bind(host, port)
67
- @bind_host = host
68
- @bind_port = port
69
- end
63
+ # Associates the local end of the UDP connection with the given +host+
64
+ # and +port+. This is essentially a wrapper for UDPSocket#bind.
65
+ #
66
+ def bind(host, port)
67
+ @bind_host = host
68
+ @bind_port = port
69
+ end
70
70
 
71
- # Sends a simple text string to the host and checks the return string. If
72
- # the string sent and the string returned are a match then the ping was
73
- # successful and true is returned. Otherwise, false is returned.
74
- #
75
- def ping(host = @host)
76
- super(host)
71
+ # Sends a simple text string to the host and checks the return string. If
72
+ # the string sent and the string returned are a match then the ping was
73
+ # successful and true is returned. Otherwise, false is returned.
74
+ #
75
+ def ping(host = @host)
76
+ super(host)
77
77
 
78
- bool = false
79
- udp = UDPSocket.open
80
- array = []
78
+ bool = false
79
+ udp = UDPSocket.open
80
+ array = []
81
81
 
82
- if @bind_host
83
- udp.bind(@bind_host, @bind_port)
84
- end
82
+ if @bind_host
83
+ udp.bind(@bind_host, @bind_port)
84
+ end
85
85
 
86
- start_time = Time.now
86
+ start_time = Time.now
87
87
 
88
- begin
89
- Timeout.timeout(@timeout){
90
- udp.connect(host, @port)
91
- udp.send(@data, 0)
92
- array = udp.recvfrom(MAX_DATA)
93
- }
94
- rescue Errno::ECONNREFUSED, Errno::ECONNRESET => err
95
- if @@service_check
96
- @exception = err
97
- else
98
- bool = true
99
- end
100
- rescue Exception => err
101
- @exception = err
102
- else
103
- if array[0] == @data
104
- bool = true
105
- end
106
- ensure
107
- udp.close if udp
108
- end
88
+ begin
89
+ Timeout.timeout(@timeout){
90
+ udp.connect(host, @port)
91
+ udp.send(@data, 0)
92
+ array = udp.recvfrom(MAX_DATA)
93
+ }
94
+ rescue Errno::ECONNREFUSED, Errno::ECONNRESET => err
95
+ if @@service_check
96
+ @exception = err
97
+ else
98
+ bool = true
99
+ end
100
+ rescue Exception => err
101
+ @exception = err
102
+ else
103
+ if array[0] == @data
104
+ bool = true
105
+ end
106
+ ensure
107
+ udp.close if udp
108
+ end
109
109
 
110
- # There is no duration if the ping failed
111
- @duration = Time.now - start_time if bool
110
+ # There is no duration if the ping failed
111
+ @duration = Time.now - start_time if bool
112
112
 
113
- bool
114
- end
113
+ bool
114
+ end
115
115
 
116
- alias ping? ping
117
- alias pingecho ping
118
- end
116
+ alias ping? ping
117
+ alias pingecho ping
118
+ end
119
119
  end
data/net-ping.gemspec CHANGED
@@ -2,35 +2,37 @@ require 'rubygems'
2
2
  require 'rbconfig'
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.name = 'net-ping'
6
- gem.version = '1.3.2'
7
- gem.license = 'Artistic 2.0'
8
- gem.author = 'Daniel J. Berger'
9
- gem.email = 'djberg96@gmail.com'
10
- gem.homepage = 'http://www.rubyforge.org/projects/shards'
11
- gem.summary = 'A ping interface for Ruby.'
12
- gem.test_file = 'test/test_net_ping.rb'
13
- gem.has_rdoc = true
14
- gem.files = Dir['**/*'].reject{ |f| f.include?('CVS') }
5
+ gem.name = 'net-ping'
6
+ gem.version = '1.3.3'
7
+ gem.license = 'Artistic 2.0'
8
+ gem.author = 'Daniel J. Berger'
9
+ gem.email = 'djberg96@gmail.com'
10
+ gem.homepage = 'http://www.rubyforge.org/projects/shards'
11
+ gem.summary = 'A ping interface for Ruby.'
12
+ gem.test_file = 'test/test_net_ping.rb'
13
+ gem.has_rdoc = true
14
+ gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
15
15
 
16
- gem.rubyforge_project = 'shards'
17
- gem.extra_rdoc_files = ['README', 'CHANGES', 'doc/ping.txt']
16
+ gem.rubyforge_project = 'shards'
17
+ gem.extra_rdoc_files = ['README', 'CHANGES', 'doc/ping.txt']
18
18
 
19
- gem.add_development_dependency('test-unit', '>= 2.0.3')
19
+ gem.add_development_dependency('test-unit', '>= 2.0.9')
20
20
 
21
- # These dependencies are for Net::Ping::External
22
- if Config::CONFIG['host_os'] =~ /mswin|dos|win32|cygwin|mingw/i
23
- gem.platform = Gem::Platform::CURRENT
24
- gem.add_dependency('windows-pr', '>= 1.0.8')
21
+ # These dependencies are for Net::Ping::External
22
+ if Config::CONFIG['host_os'] =~ /mswin|dos|win32|cygwin|mingw/i &&
23
+ RUBY_PLATFORM != 'java'
24
+ then
25
+ gem.platform = Gem::Platform::CURRENT
26
+ gem.add_dependency('windows-pr', '>= 1.0.8')
25
27
 
26
- if RUBY_VERSION.to_f < 1.9
27
- gem.add_dependency('win32-open3', '>= 0.3.1')
28
- end
29
- end
28
+ if RUBY_VERSION.to_f < 1.9
29
+ gem.add_dependency('win32-open3', '>= 0.3.1')
30
+ end
31
+ end
30
32
 
31
- gem.description = <<-EOF
32
- The net-ping library provides a ping interface for Ruby. It includes
33
- separate TCP, HTTP, ICMP, UDP, WMI (for Windows) and external ping
34
- classes.
35
- EOF
33
+ gem.description = <<-EOF
34
+ 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
+ classes.
37
+ EOF
36
38
  end
@@ -10,9 +10,17 @@ require 'test_net_ping_tcp'
10
10
  require 'test_net_ping_udp'
11
11
 
12
12
  if Process.euid == 0
13
- require 'test_net_ping_icmp'
13
+ require 'test_net_ping_icmp'
14
14
  end
15
15
 
16
- if Config::CONFIG['host_os'] =~ /mswin|win32|dos|cygwin|mingw/i
17
- require 'test_net_ping_wmi'
16
+ if Config::CONFIG['host_os'] =~ /mswin|win32|dos|cygwin|mingw/i &&
17
+ RUBY_PLATFORM != 'java'
18
+ then
19
+ require 'test_net_ping_wmi'
20
+ end
21
+
22
+ class TC_Net_Ping < Test::Unit::TestCase
23
+ def test_net_ping_version
24
+ assert_equal('1.3.3', Net::Ping::VERSION)
25
+ end
18
26
  end