You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sh...@apache.org on 2022/12/30 11:11:56 UTC

[cloudstack] 01/01: Merge remote-tracking branch 'apache/4.17' into main

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

shwstppr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 194b0b4610b18985c9fc9d08bb4986dd669f0ae0
Merge: 97c7a0743cc d5f01005416
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Fri Dec 30 16:27:43 2022 +0530

    Merge remote-tracking branch 'apache/4.17' into main

 .../java/com/cloud/network/NetworkModelImpl.java   |  2 +-
 .../main/java/com/cloud/utils/net/NetUtils.java    |  6 +--
 .../java/com/cloud/utils/net/NetUtilsTest.java     | 52 ++++++++++++++++++++++
 3 files changed, 55 insertions(+), 5 deletions(-)

diff --cc utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
index 2fa8496a235,4c716501863..53e2e3ae376
--- a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
@@@ -33,13 -33,15 +33,17 @@@ import static org.junit.Assert.assertTr
  
  import java.math.BigInteger;
  import java.net.InetAddress;
 +import java.net.NetworkInterface;
 +import java.net.SocketException;
  import java.net.UnknownHostException;
+ import java.util.ArrayList;
+ import java.util.List;
+ import java.util.Set;
  import java.util.SortedSet;
  import java.util.TreeSet;
+ import java.util.stream.Collectors;
  
 -import org.apache.log4j.Logger;
 +import org.junit.Assert;
  import org.junit.Test;
  
  import com.cloud.utils.exception.CloudRuntimeException;
@@@ -47,17 -49,11 +51,19 @@@ import com.cloud.utils.net.NetUtils.Sup
  import com.googlecode.ipv6.IPv6Address;
  import com.googlecode.ipv6.IPv6Network;
  
 -public class NetUtilsTest {
 +import org.junit.runner.RunWith;
 +import org.mockito.Mockito;
 +import org.powermock.api.mockito.PowerMockito;
 +import org.powermock.core.classloader.annotations.PowerMockIgnore;
 +import org.powermock.core.classloader.annotations.PrepareForTest;
 +import org.powermock.modules.junit4.PowerMockRunner;
 +
  
 -    private static final Logger s_logger = Logger.getLogger(NetUtilsTest.class);
 +@RunWith(PowerMockRunner.class)
 +@PowerMockIgnore({"jdk.xml.internal.*", "javax.xml.parsers.*", "org.xml.sax.*", "org.w3c.dom.*"})
 +public class NetUtilsTest {
+     private static final String WIDE_SHARED_NET_CIDR_IP = "10.20.0.0";
+     private static final List<String> WIDE_SHARED_NET_USED_IPS = List.of("10.20.0.22", "10.20.1.22", "10.20.2.22");
  
      @Test
      public void testGetRandomIpFromCidrWithSize24() throws Exception {
@@@ -750,47 -748,49 +756,93 @@@
          assertEquals("255.255.240.0", NetUtils.cidr2Netmask("169.254.240.0/20"));
      }
  
+     private void runTestGetAllIpsFromCidr(int cidrSize, int maxIps, boolean usedIpPresent, int resultSize) {
+         Set<Long> usedIps = new TreeSet<>();
+         if (usedIpPresent) {
+             for (String ip : WIDE_SHARED_NET_USED_IPS) {
+                 usedIps.add(NetUtils.ip2Long(ip));
+             }
+         }
+         Set<Long> result = NetUtils.getAllIpsFromCidr(WIDE_SHARED_NET_CIDR_IP, cidrSize, usedIps, maxIps);
+         assertNotNull(result);
+         assertEquals(resultSize, result.size());
+         if (usedIpPresent) {
+             for (String ip : WIDE_SHARED_NET_USED_IPS) {
+                 assertFalse(result.contains(NetUtils.ip2Long(ip)));
+             }
+         }
+     }
+ 
+     @Test
+     public void testGetAllIpsFromCidrNoneUsedNoLimit() {
+         runTestGetAllIpsFromCidr(22, -1, false, 1022);
+     }
+ 
+     @Test
+     public void testGetAllIpsFromCidrNoneUsedLimit() {
+         runTestGetAllIpsFromCidr(22, 255, false, 255);
+     }
+ 
+     @Test
+     public void testGetAllIpsFromCidrNoneUsedLessLimit() {
+         runTestGetAllIpsFromCidr(22, 10, false, 10);
+     }
+ 
+ 
+     @Test
+     public void testGetAllIpsFromCidrUsedNoLimit() {
+         runTestGetAllIpsFromCidr(22, -1, true, 1022 - WIDE_SHARED_NET_USED_IPS.size());
+     }
+ 
+     @Test
+     public void testGetAllIpsFromCidrUsedLimit() {
+         runTestGetAllIpsFromCidr(22, 50, true, 50);
+         List<String> usedIpsInRange = new ArrayList<>(WIDE_SHARED_NET_USED_IPS);
+         usedIpsInRange = usedIpsInRange.stream().filter(x -> x.startsWith("10.20.0.")).collect(Collectors.toList());
+         runTestGetAllIpsFromCidr(24, 255, true, 254 - usedIpsInRange.size());
+     }
++
 +    @Test
 +    public void getNetworkInterfaceTestReturnNullWhenStringIsNull() {
 +        NetworkInterface result = NetUtils.getNetworkInterface(null);
 +        Assert.assertNull(result);
 +    }
 +
 +    @Test
 +    public void getNetworkInterfaceTestReturnNullWhenStringIsEmpty() {
 +        NetworkInterface result = NetUtils.getNetworkInterface("     ");
 +        Assert.assertNull(result);
 +    }
 +
 +    @Test
 +    @PrepareForTest(NetUtils.class)
 +    public void getNetworkInterfaceTestReturnNullWhenGetByNameReturnsNull() throws SocketException {
 +        PowerMockito.mockStatic(NetworkInterface.class);
 +        PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(null);
 +        NetworkInterface result = NetUtils.getNetworkInterface("  test   ");
 +
 +        Assert.assertNull(result);
 +    }
 +
 +    @Test
 +    @PrepareForTest(NetUtils.class)
 +    public void getNetworkInterfaceTestReturnNullWhenGetByNameThrowsException() throws SocketException {
 +        PowerMockito.mockStatic(NetworkInterface.class);
 +        PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenThrow(SocketException.class);
 +        NetworkInterface result = NetUtils.getNetworkInterface("  test   ");
 +
 +        Assert.assertNull(result);
 +    }
 +
 +    @Test
 +    @PrepareForTest(NetUtils.class)
 +    public void getNetworkInterfaceTestReturnInterfaceReturnedByGetByName() throws SocketException {
 +        NetworkInterface expected = PowerMockito.mock(NetworkInterface.class);
 +        PowerMockito.mockStatic(NetworkInterface.class);
 +        PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(expected);
 +
 +        NetworkInterface result = NetUtils.getNetworkInterface("  test   ");
 +
 +        Assert.assertEquals(expected, result);
 +    }
  }