This is an automated email from the ASF dual-hosted git repository.

zhaoqingran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b44a9529 [Improve] add IpDomainUtil & IntervaiExpressionUtil unit 
test (#2204)
5b44a9529 is described below

commit 5b44a9529883b80ba4070b5817680cbf7dc71ab3
Author: YuLuo <[email protected]>
AuthorDate: Fri Jul 5 09:51:50 2024 +0800

    [Improve] add IpDomainUtil & IntervaiExpressionUtil unit test (#2204)
    
    Signed-off-by: yuluo-yx <[email protected]>
    Co-authored-by: Logic <[email protected]>
---
 .../common/util/IntervalExpressionUtil.java        |  6 +-
 .../apache/hertzbeat/common/util/IpDomainUtil.java | 14 ++--
 .../common/util/IntervalExpressionUtilTest.java    | 49 ++++++++++++--
 .../hertzbeat/common/util/IpDomainUtilTest.java    | 76 +++++++++++++++++++++-
 4 files changed, 127 insertions(+), 18 deletions(-)

diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/util/IntervalExpressionUtil.java
 
b/common/src/main/java/org/apache/hertzbeat/common/util/IntervalExpressionUtil.java
index 21901f874..4fffd2112 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/util/IntervalExpressionUtil.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/util/IntervalExpressionUtil.java
@@ -49,7 +49,7 @@ public final class IntervalExpressionUtil {
      * @return true-yes false-no
      */
     public static boolean validNumberIntervalExpress(Double numberValue, 
String expression) {
-        if (expression == null || "".equals(expression)) {
+        if (expression == null || expression.isEmpty()) {
             return true;
         }
         if (numberValue == null) {
@@ -64,12 +64,12 @@ public final class IntervalExpressionUtil {
                 }
                 Double[] doubleValues = new Double[2];
                 if (NEGATIVE.equals(values[0])) {
-                    doubleValues[0] = Double.MIN_VALUE;
+                    doubleValues[0] = Double.NEGATIVE_INFINITY;
                 } else {
                     doubleValues[0] = Double.parseDouble(values[0]);
                 }
                 if (POSITIVE.equals(values[1])) {
-                    doubleValues[1] = Double.MAX_VALUE;
+                    doubleValues[1] = Double.POSITIVE_INFINITY;
                 } else {
                     doubleValues[1] = Double.parseDouble(values[1]);
                 }
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java 
b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
index 21d8d57de..886a5200e 100644
--- a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
+++ b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
@@ -29,7 +29,7 @@ import org.apache.http.conn.util.InetAddressUtils;
 import org.springframework.util.StringUtils;
 
 /**
- * ipv4 ipv6 domain util
+ * ipv4 ipv6 domain util.
  */
 @Slf4j
 public final class IpDomainUtil {
@@ -40,7 +40,7 @@ public final class IpDomainUtil {
     private static final String LOCALHOST = "localhost";
 
     /**
-     * HTTP header schema
+     * HTTP header schema.
      */
     private static final Pattern DOMAIN_SCHEMA = 
Pattern.compile("^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://){1}[^\\s]*");
 
@@ -48,7 +48,7 @@ public final class IpDomainUtil {
     }
 
     /**
-     * whether it is ip or domain
+     * whether it is ip or domain.
      * @param ipDomain ip domain string
      * @return true-yes false-no
      */
@@ -70,7 +70,7 @@ public final class IpDomainUtil {
     }
 
     /**
-     * if domain or ip has http / https schema
+     * if domain or ip has http / https schema.
      * @param domainIp host
      * @return true or false
      */
@@ -82,7 +82,7 @@ public final class IpDomainUtil {
     }
 
     /**
-     * get localhost IP
+     * get localhost IP.
      * @return ip
      */
     public static String getLocalhostIp() {
@@ -108,7 +108,7 @@ public final class IpDomainUtil {
     }
     
     /**
-     *
+     * check IP address type.
      * @param ipDomain ip domain
      * @return IP address type
      */
@@ -120,7 +120,7 @@ public final class IpDomainUtil {
     }
     
     /**
-     * get current local host name
+     * get current local host name.
      * @return hostname
      */
     public static String getCurrentHostName() {
diff --git 
a/common/src/test/java/org/apache/hertzbeat/common/util/IntervalExpressionUtilTest.java
 
b/common/src/test/java/org/apache/hertzbeat/common/util/IntervalExpressionUtilTest.java
index c6abaf34d..91c8e0314 100644
--- 
a/common/src/test/java/org/apache/hertzbeat/common/util/IntervalExpressionUtilTest.java
+++ 
b/common/src/test/java/org/apache/hertzbeat/common/util/IntervalExpressionUtilTest.java
@@ -17,19 +17,54 @@
 
 package org.apache.hertzbeat.common.util;
 
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Test case for {@link IntervalExpressionUtil}
  */
 class IntervalExpressionUtilTest {
 
-    @BeforeEach
-    void setUp() {
-    }
+       @Test
+       public void testValidNumberIntervalExpress() {
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(5.0, null));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(5.0, ""));
+
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(null, "(3,7)"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(5.0, "(3,7)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(3.0, "(3,7)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(7.0, "(3,7)"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(3.0, "[3,7]"));
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(7.0, "[3,7]"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(2.0, "[3,7]"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(8.0, "[3,7]"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(3.0, "[3,7)"));
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(6.9999, "[3,7)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(7.0, "[3,7)"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(4.0, "(3,7]"));
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(7.0, "(3,7]"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(3.0, "(3,7]"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(-1000.0, 
"(-∞,5)"));
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(-1.0, "(-∞,5)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(5.0, "(-∞,5)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(10.0, "(-∞,5)"));
+
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(1000.0, "(5,+∞)"));
+               
assertTrue(IntervalExpressionUtil.validNumberIntervalExpress(10.0, "(5,+∞)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(5.0, "(5,+∞)"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(0.0, "(5,+∞)"));
+
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(5.0, "(3,7"));
+               
assertFalse(IntervalExpressionUtil.validNumberIntervalExpress(5.0, 
"[3,7)3,7]"));
+       }
 
-    @Test
-    void validNumberIntervalExpress() {
-    }
 }
diff --git 
a/common/src/test/java/org/apache/hertzbeat/common/util/IpDomainUtilTest.java 
b/common/src/test/java/org/apache/hertzbeat/common/util/IpDomainUtilTest.java
index 4e182a91a..a711d6515 100644
--- 
a/common/src/test/java/org/apache/hertzbeat/common/util/IpDomainUtilTest.java
+++ 
b/common/src/test/java/org/apache/hertzbeat/common/util/IpDomainUtilTest.java
@@ -17,9 +17,24 @@
 
 package org.apache.hertzbeat.common.util;
 
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import org.apache.hertzbeat.common.constants.CollectorConstants;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 /**
  * Test case for {@link IpDomainUtil}
@@ -56,4 +71,63 @@ class IpDomainUtilTest {
         assertFalse(IpDomainUtil.isHasSchema("www.baidu.com"));
         assertFalse(IpDomainUtil.isHasSchema("https_www.baidu.com"));
     }
+
+    @Test
+    void testGetLocalhostIp() throws SocketException {
+
+        // Success
+        InetAddress mockedInetAddress = mock(Inet4Address.class);
+        when(mockedInetAddress.getHostAddress()).thenReturn("192.168.1.100");
+
+        NetworkInterface mockedNetworkInterface = mock(NetworkInterface.class);
+        when(mockedNetworkInterface.isLoopback()).thenReturn(false);
+        when(mockedNetworkInterface.isVirtual()).thenReturn(false);
+        when(mockedNetworkInterface.isUp()).thenReturn(true);
+
+        Enumeration<InetAddress> inetAddresses = 
Collections.enumeration(Collections.singletonList(mockedInetAddress));
+        
when(mockedNetworkInterface.getInetAddresses()).thenReturn(inetAddresses);
+
+        Enumeration<NetworkInterface> successNetworkInterfaces = 
Collections.enumeration(Collections.singletonList(mockedNetworkInterface));
+
+        try (MockedStatic<NetworkInterface> mockedStaticNetworkInterface = 
Mockito.mockStatic(NetworkInterface.class)) {
+            
mockedStaticNetworkInterface.when(NetworkInterface::getNetworkInterfaces).thenReturn(successNetworkInterfaces);
+            String localhostIp = IpDomainUtil.getLocalhostIp();
+
+            assertEquals("192.168.1.100", localhostIp);
+        }
+
+        // no network interface
+        Enumeration<NetworkInterface> noNetworkIFNetworkInterfaces = 
Collections.enumeration(Collections.emptyList());
+
+        try (MockedStatic<NetworkInterface> mockedStaticNetworkInterface = 
Mockito.mockStatic(NetworkInterface.class)) {
+            
mockedStaticNetworkInterface.when(NetworkInterface::getNetworkInterfaces).thenReturn(noNetworkIFNetworkInterfaces);
+            String localhostIp = IpDomainUtil.getLocalhostIp();
+
+            assertNull(localhostIp);
+        }
+
+        // throw exception
+        try (MockedStatic<NetworkInterface> mockedStaticNetworkInterface = 
Mockito.mockStatic(NetworkInterface.class)) {
+            
mockedStaticNetworkInterface.when(NetworkInterface::getNetworkInterfaces).thenThrow(new
 RuntimeException("Test exception"));
+            String localhostIp = IpDomainUtil.getLocalhostIp();
+
+            assertNull(localhostIp);
+        }
+
+    }
+
+    @Test
+    void testCheckIpAddressType() {
+
+        assertEquals(CollectorConstants.IPV4, 
IpDomainUtil.checkIpAddressType("192.168.1.1"));
+        assertEquals(CollectorConstants.IPV4, 
IpDomainUtil.checkIpAddressType("127.0.0.1"));
+
+        assertEquals(CollectorConstants.IPV6, 
IpDomainUtil.checkIpAddressType("2001:0db8:85a3:0000:0000:8a2e:0370:7334"));
+        assertEquals(CollectorConstants.IPV6, 
IpDomainUtil.checkIpAddressType("::1"));
+
+        assertEquals(CollectorConstants.IPV4, 
IpDomainUtil.checkIpAddressType(""));
+        assertEquals(CollectorConstants.IPV4, 
IpDomainUtil.checkIpAddressType(null));
+        assertEquals(CollectorConstants.IPV4, 
IpDomainUtil.checkIpAddressType("invalid-ip"));
+
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to