diff options
author | mmis <michael.morris@ericsson.com> | 2018-07-20 15:28:25 +0100 |
---|---|---|
committer | mmis <michael.morris@ericsson.com> | 2018-07-25 13:16:51 +0100 |
commit | b40acf2d244058c162a8597968e59f2708e6abf4 (patch) | |
tree | d30890a123305c50e3280ebbe02742b72f226c90 /utils/src | |
parent | 02bf7de575b246c63188988072aabb36ac3b697b (diff) |
Copy policy-endpoints from drools-pdp to common
Issue-ID: POLICY-967
Change-Id: I374c155ee102c3e157c60d0a22d7191544abb76a
Signed-off-by: mmis <michael.morris@ericsson.com>
Diffstat (limited to 'utils/src')
-rw-r--r-- | utils/src/main/java/org/onap/policy/common/utils/network/NetworkUtil.java | 113 | ||||
-rw-r--r-- | utils/src/test/java/org/onap/policy/common/utils/network/NetworkUtilTest.java | 40 |
2 files changed, 153 insertions, 0 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/network/NetworkUtil.java b/utils/src/main/java/org/onap/policy/common/utils/network/NetworkUtil.java new file mode 100644 index 00000000..c9afa19e --- /dev/null +++ b/utils/src/main/java/org/onap/policy/common/utils/network/NetworkUtil.java @@ -0,0 +1,113 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.network; + +import java.io.IOException; +import java.net.ConnectException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Network Utilities + */ +public class NetworkUtil { + + public static final Logger logger = LoggerFactory.getLogger(NetworkUtil.class.getName()); + + /** + * IPv4 Wildcard IP address + */ + public static final String IPv4_WILDCARD_ADDRESS = "0.0.0.0"; + + private NetworkUtil() { + // Empty constructor + } + + /** + * try to connect to $host:$port $retries times while we are getting connection failures. + * + * @param host host + * @param port port + * @param retries number of attempts + * @return true is port is open, false otherwise + * @throws InterruptedException if execution has been interrupted + */ + public static boolean isTcpPortOpen(String host, int port, int retries, long interval) + throws InterruptedException, IOException { + int retry = 0; + while (retry < retries) { + try (Socket s = new Socket(host, port)) { + logger.debug("{}:{} connected - retries={} interval={}", host, port, retries, interval); + return true; + } catch (final ConnectException e) { + retry++; + logger.trace("{}:{} connected - retries={} interval={}", host, port, retries, interval, e); + Thread.sleep(interval); + } + } + + logger.warn("{}:{} closed = retries={} interval={}", host, port, retries, interval); + return false; + } + + /** + * gets host name + * + * @return host name + */ + public static String getHostname() { + + String hostname = System.getenv("HOSTNAME"); + if (hostname != null && !hostname.isEmpty()) { + return hostname; + } + + try { + return InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + logger.warn("cannot resolve local hostname", e); + /* continue */ + } + + return "localhost"; + } + + /** + * gets host's IP + * + * @return host IP + */ + public static String getHostIp() { + + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + logger.warn("cannot resolve local hostname", e); + /* continue */ + } + + return "127.0.0.1"; + } +} diff --git a/utils/src/test/java/org/onap/policy/common/utils/network/NetworkUtilTest.java b/utils/src/test/java/org/onap/policy/common/utils/network/NetworkUtilTest.java new file mode 100644 index 00000000..1e402d2a --- /dev/null +++ b/utils/src/test/java/org/onap/policy/common/utils/network/NetworkUtilTest.java @@ -0,0 +1,40 @@ +/*- + * ============LICENSE_START======================================================= + * policy-utils + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.network; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import java.io.IOException; + +import org.junit.Test; + +public class NetworkUtilTest { + + @Test + public void test() throws InterruptedException, IOException { + assertNotNull(NetworkUtil.IPv4_WILDCARD_ADDRESS); + assertFalse(NetworkUtil.isTcpPortOpen("localhost", 8080, 1, 5)); + assertNotNull(NetworkUtil.getHostname()); + assertNotNull(NetworkUtil.getHostIp()); + } + +} |