public class IsReachable extends ProjectComponent implements Condition
Test for a host being reachable using ICMP "ping" packets & echo operations. Ping packets are very reliable for assessing reachability in a LAN or WAN, but they do not get through any well-configured firewall. Echo (port 7) may.
This condition turns unknown host exceptions into false conditions. This is because on a laptop, DNS is one of the first services lost when the network goes; you are implicitly offline.
If a URL is supplied instead of a host, the hostname is extracted and used in the test--all other parts of the URL are discarded.
The test may not work through firewalls; that is, something may be reachable using a protocol such as HTTP, while the lower level ICMP packets get dropped on the floor. Similarly, a host may be detected as reachable with ICMP, but not reachable on other ports (i.e. port 80), because of firewalls.
Requires Java 5+ to work properly. On Java 1.4, if a hostname can be resolved, the destination is assumed to be reachable.
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_TIMEOUT
The default timeout.
|
static String |
ERROR_BAD_TIMEOUT
Error when invalid timeout value is defined
|
static String |
ERROR_BAD_URL
Error message when an invalid url is used.
|
static String |
ERROR_BOTH_TARGETS
Error message when url and host are specified.
|
static String |
ERROR_NO_HOST_IN_URL
Error message when no hostname in url.
|
static String |
ERROR_NO_HOSTNAME
Error when no hostname is defined
|
static String |
ERROR_ON_NETWORK
Network error message is seen.
|
static String |
METHOD_NAME
The method name to look for in InetAddress
|
static String |
MSG_NO_REACHABLE_TEST
Error message when no reachably test avail.
|
Constructor and Description |
---|
IsReachable() |
Modifier and Type | Method and Description |
---|---|
boolean |
eval()
Evaluate the condition.
|
void |
setHost(String host)
Set the host to ping.
|
void |
setTimeout(int timeout)
Set the timeout for the reachability test in seconds.
|
void |
setUrl(String url)
Set the URL from which to extract the hostname.
|
clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject
public static final int DEFAULT_TIMEOUT
public static final String ERROR_BAD_TIMEOUT
public static final String ERROR_BAD_URL
public static final String ERROR_BOTH_TARGETS
public static final String ERROR_NO_HOST_IN_URL
public static final String ERROR_NO_HOSTNAME
public static final String ERROR_ON_NETWORK
public static final String METHOD_NAME
public static final String MSG_NO_REACHABLE_TEST
public boolean eval() throws BuildException
eval
in interface Condition
BuildException
- if an error occurspublic void setHost(String host)
host
- the host to ping.public void setTimeout(int timeout)
timeout
- the timeout in seconds.public void setUrl(String url)
url
- a URL object.