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

nvazquez pushed a commit to branch nsx-unit-tests-coverage-inc
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 9e307474d79ff1655cd0bb504a1aaacf5e821883
Author: nvazquez <nicovazque...@gmail.com>
AuthorDate: Tue Jan 2 15:09:39 2024 -0300

    [NSX] Add more unit tests
---
 .../apache/cloudstack/service/NsxApiClient.java    |   2 +-
 .../cloudstack/utils/NsxControllerUtils.java       |   5 +-
 .../org/apache/cloudstack/utils/NsxHelper.java     |   6 -
 .../cloudstack/resource/NsxResourceTest.java       | 136 +++++++++++---
 .../cloudstack/utils/NsxControllerUtilsTest.java   | 198 +++++++++++++++++++++
 5 files changed, 315 insertions(+), 32 deletions(-)

diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java
index 5a3cf48aa04..50b0dae3396 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java
@@ -289,7 +289,7 @@ public class NsxApiClient {
         return types;
     }
 
-    public void createTier1Gateway(String name, String tier0Gateway, String 
edgeCluster, boolean sourceNatEnabled) {
+    public void createTier1Gateway(String name, String tier0Gateway, String 
edgeCluster, boolean sourceNatEnabled) throws CloudRuntimeException {
         String tier0GatewayPath = TIER_0_GATEWAY_PATH_PREFIX + tier0Gateway;
         Tier1 tier1 = getTier1Gateway(name);
         if (tier1 != null) {
diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxControllerUtils.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxControllerUtils.java
index eec19e3e075..7a4d5cfcc8b 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxControllerUtils.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxControllerUtils.java
@@ -36,9 +36,9 @@ public class NsxControllerUtils {
     private static final Logger s_logger = 
Logger.getLogger(NsxControllerUtils.class);
 
     @Inject
-    AgentManager agentMgr;
+    private AgentManager agentMgr;
     @Inject
-    NsxProviderDao nsxProviderDao;
+    private NsxProviderDao nsxProviderDao;
 
     public static String getNsxNatRuleId(long domainId, long accountId, long 
dataCenterId, long resourceId, boolean isForVpc) {
         String resourcePrefix = isForVpc ? "V" : "N";
@@ -50,7 +50,6 @@ public class NsxControllerUtils {
     }
 
     public NsxAnswer sendNsxCommand(NsxCommand cmd, long zoneId) throws 
IllegalArgumentException {
-
         NsxProviderVO nsxProviderVO = nsxProviderDao.findByZoneId(zoneId);
         if (nsxProviderVO == null) {
             s_logger.error("No NSX controller was found!");
diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxHelper.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxHelper.java
index 1d1dd033928..54df6a11dc9 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxHelper.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/utils/NsxHelper.java
@@ -24,7 +24,6 @@ import com.cloud.network.vpc.VpcVO;
 import com.cloud.user.Account;
 import org.apache.cloudstack.agent.api.CreateNsxDhcpRelayConfigCommand;
 import org.apache.cloudstack.agent.api.CreateNsxSegmentCommand;
-import org.apache.cloudstack.agent.api.CreateNsxTier1GatewayCommand;
 import org.apache.cloudstack.agent.api.CreateOrUpdateNsxTier1NatRuleCommand;
 
 import java.util.List;
@@ -43,11 +42,6 @@ public class NsxHelper {
                 networkVO.getVpcId(), vpcName, networkVO.getId(), 
networkVO.getName(), networkVO.getGateway(), networkVO.getCidr());
     }
 
-    public static CreateNsxTier1GatewayCommand 
createNsxTier1GatewayCommand(DomainVO domain, Account account, DataCenter zone,
-                                                                            
Long networkResourceId, String networkResourceName, boolean isResourceVpc) {
-        return new CreateNsxTier1GatewayCommand(domain.getId(), 
account.getId(), zone.getId(), networkResourceId, networkResourceName, 
isResourceVpc, false);
-    }
-
     public static CreateOrUpdateNsxTier1NatRuleCommand 
createOrUpdateNsxNatRuleCommand(long domainId, long accountId, long zoneId,
                                                                                
        String tier1Gateway, String action, String ipAddress,
                                                                                
        String natRuleId) {
diff --git 
a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/resource/NsxResourceTest.java
 
b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/resource/NsxResourceTest.java
index e47da0ce9e6..c9b8fd1d27d 100644
--- 
a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/resource/NsxResourceTest.java
+++ 
b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/resource/NsxResourceTest.java
@@ -17,6 +17,7 @@
 package org.apache.cloudstack.resource;
 
 import com.cloud.network.dao.NetworkVO;
+import com.cloud.utils.exception.CloudRuntimeException;
 import com.vmware.nsx.model.TransportZone;
 import com.vmware.nsx.model.TransportZoneListResult;
 import com.vmware.nsx_policy.model.EnforcementPoint;
@@ -31,18 +32,21 @@ import 
org.apache.cloudstack.agent.api.CreateNsxPortForwardRuleCommand;
 import org.apache.cloudstack.agent.api.CreateNsxSegmentCommand;
 import org.apache.cloudstack.agent.api.CreateNsxStaticNatCommand;
 import org.apache.cloudstack.agent.api.CreateNsxTier1GatewayCommand;
+import org.apache.cloudstack.agent.api.CreateOrUpdateNsxTier1NatRuleCommand;
 import 
org.apache.cloudstack.agent.api.DeleteNsxDistributedFirewallRulesCommand;
 import org.apache.cloudstack.agent.api.DeleteNsxNatRuleCommand;
 import org.apache.cloudstack.agent.api.DeleteNsxSegmentCommand;
 import org.apache.cloudstack.agent.api.DeleteNsxTier1GatewayCommand;
 import org.apache.cloudstack.agent.api.NsxCommand;
 import org.apache.cloudstack.service.NsxApiClient;
+import org.apache.cloudstack.utils.NsxControllerUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.mockito.junit.MockitoJUnitRunner;
 
@@ -51,9 +55,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertThrows;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -72,12 +80,22 @@ public class NsxResourceTest {
     @Mock
     TransportZoneListResult transportZoneListResult;
 
+    private static final String transportZone = "Overlay";
+    private static final String tier0Gateway = "Tier0-GW01";
+    private static final String edgeCluster = "EdgeCluster";
+
+    private static final long domainId = 1L;
+    private static final long accountId = 2L;
+    private static final long zoneId = 1L;
+
     @Before
     public void setup() {
         closeable = MockitoAnnotations.openMocks(this);
         nsxResource = new NsxResource();
         nsxResource.nsxApiClient = nsxApi;
-        nsxResource.transportZone = "Overlay";
+        nsxResource.transportZone = transportZone;
+        nsxResource.tier0Gateway = tier0Gateway;
+        nsxResource.edgeCluster = edgeCluster;
     }
 
     @After
@@ -94,9 +112,9 @@ public class NsxResourceTest {
         params.put("hostname", "host1");
         params.put("username", "admin");
         params.put("password", "password");
-        params.put("tier0Gateway", "Tier0-GW01");
-        params.put("edgeCluster", "EdgeCluster");
-        params.put("transportZone", "Overlay");
+        params.put("tier0Gateway", tier0Gateway);
+        params.put("edgeCluster", edgeCluster);
+        params.put("transportZone", transportZone);
         params.put("port", "443");
 
         Assert.assertTrue(nsxResource.configure("nsx", params));
@@ -111,22 +129,39 @@ public class NsxResourceTest {
 
     @Test
     public void testCreateNsxTier1Gateway() {
-        NsxCommand command = new CreateNsxTier1GatewayCommand(1L, 2L,
-                1L, 3L, "VPC01", true, false);
-
+        NsxCommand command = new CreateNsxTier1GatewayCommand(domainId, 
accountId, zoneId,
+                3L, "VPC01", true, false);
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
         assertTrue(answer.getResult());
     }
 
     @Test
-    public void testDeleteTier1Gateway() {
-        NsxCommand command = new DeleteNsxTier1GatewayCommand(1L, 1L,
-                1L, 2L, "VPC01", true);
+    public void testCreateNsxTier1GatewayError() {
+        NsxCommand command = new CreateNsxTier1GatewayCommand(domainId, 
accountId, zoneId,
+                3L, "VPC01", true, false);
+        Mockito.doThrow(new CloudRuntimeException("ERROR"))
+                .when(nsxApi).createTier1Gateway(anyString(), anyString(), 
anyString(), anyBoolean());
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
 
+    @Test
+    public void testDeleteTier1Gateway() {
+        NsxCommand command = new DeleteNsxTier1GatewayCommand(domainId, 
accountId, zoneId,
+                2L, "VPC01", true);
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
         assertTrue(answer.getResult());
     }
 
+    @Test
+    public void testDeleteTier1GatewayError() {
+        NsxCommand command = new DeleteNsxTier1GatewayCommand(domainId, 
accountId, zoneId,
+                2L, "VPC01", true);
+        Mockito.doThrow(new 
CloudRuntimeException("ERROR")).when(nsxApi).deleteTier1Gateway(anyString());
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
+
     @Test
     public void testCreateNsxSegment() {
         NetworkVO tierNetwork = new NetworkVO();
@@ -137,10 +172,10 @@ public class NsxResourceTest {
         List<Site> siteList = List.of(site);
         EnforcementPoint enforcementPoint = mock(EnforcementPoint.class);
         List<EnforcementPoint> enforcementPointList = 
List.of(enforcementPoint);
-        List<TransportZone> transportZoneList = List.of(new 
TransportZone.Builder().setDisplayName("Overlay").build());
+        List<TransportZone> transportZoneList = List.of(new 
TransportZone.Builder().setDisplayName(transportZone).build());
 
-        NsxCommand command = new CreateNsxSegmentCommand(1L, 1L,
-                1L, 2L, "VPC01", 3L, "Web", "10.10.10.1", "10.10.10.0/24");
+        NsxCommand command = new CreateNsxSegmentCommand(domainId, accountId, 
zoneId,
+                2L, "VPC01", 3L, "Web", "10.10.10.1", "10.10.10.0/24");
 
         when(nsxApi.getSites()).thenReturn(siteListResult);
         when(siteListResult.getResults()).thenReturn(siteList);
@@ -157,33 +192,82 @@ public class NsxResourceTest {
         assertTrue(answer.getResult());
     }
 
+    @Test
+    public void testCreateNsxSegmentEmptySites() {
+        when(nsxApi.getSites()).thenReturn(null);
+        CreateNsxSegmentCommand command = 
Mockito.mock(CreateNsxSegmentCommand.class);
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
+
+    @Test
+    public void testCreateNsxSegmentEmptyEnforcementPoints() {
+        Site site = mock(Site.class);
+        List<Site> siteList = List.of(site);
+        when(nsxApi.getSites()).thenReturn(siteListResult);
+        when(siteListResult.getResults()).thenReturn(siteList);
+        when(siteList.get(0).getId()).thenReturn("site1");
+        when(nsxApi.getEnforcementPoints(anyString())).thenReturn(null);
+        CreateNsxSegmentCommand command = 
Mockito.mock(CreateNsxSegmentCommand.class);
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
+
+    @Test
+    public void testCreateNsxSegmentEmptyTransportZones() {
+        Site site = mock(Site.class);
+        List<Site> siteList = List.of(site);
+        when(nsxApi.getSites()).thenReturn(siteListResult);
+        when(siteListResult.getResults()).thenReturn(siteList);
+        when(siteList.get(0).getId()).thenReturn("site1");
+        EnforcementPoint enforcementPoint = mock(EnforcementPoint.class);
+        List<EnforcementPoint> enforcementPointList = 
List.of(enforcementPoint);
+        
when(enforcementPointListResult.getResults()).thenReturn(enforcementPointList);
+        
when(enforcementPointList.get(0).getPath()).thenReturn("enforcementPointPath");
+        when(nsxApi.getTransportZones()).thenReturn(null);
+        CreateNsxSegmentCommand command = 
Mockito.mock(CreateNsxSegmentCommand.class);
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
+
     @Test
     public void testDeleteNsxSegment() {
         NetworkVO tierNetwork = new NetworkVO();
         tierNetwork.setName("tier1");
-        DeleteNsxSegmentCommand command = new DeleteNsxSegmentCommand(1L, 1L, 
1L, 3L, "VPC01", 2L, "Web");
-
+        DeleteNsxSegmentCommand command = new 
DeleteNsxSegmentCommand(domainId, accountId, zoneId,
+                3L, "VPC01", 2L, "Web");
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
         assertTrue(answer.getResult());
     }
 
+    @Test
+    public void testDeleteNsxSegmentError() {
+        NetworkVO tierNetwork = new NetworkVO();
+        tierNetwork.setName("tier1");
+        DeleteNsxSegmentCommand command = new 
DeleteNsxSegmentCommand(domainId, accountId, zoneId,
+                3L, "VPC01", 2L, "Web");
+        doThrow(new 
CloudRuntimeException("ERROR")).when(nsxApi).deleteSegment(anyLong(), 
anyLong(), anyLong(), anyLong(), anyLong(), anyString());
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertFalse(answer.getResult());
+    }
+
     @Test
     public void testCreateStaticNat() {
-        CreateNsxStaticNatCommand cmd = new CreateNsxStaticNatCommand(1L, 1L, 
1L, 3L, "VPC01", true, 2L, "10.1.12.10", "172.30.20.12");
+        CreateNsxStaticNatCommand cmd = new 
CreateNsxStaticNatCommand(domainId, accountId, zoneId, 3L, "VPC01", true, 2L, 
"10.1.12.10", "172.30.20.12");
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
     }
 
     @Test
     public void testCreatePortForwardRule() {
-        CreateNsxPortForwardRuleCommand cmd = new 
CreateNsxPortForwardRuleCommand(1L, 1L, 1L, 3L, "VPC01", true, 2L, 5L, 
"10.1.12.10", "172.30.20.12", "2222", "22", "tcp");
+        CreateNsxPortForwardRuleCommand cmd = new 
CreateNsxPortForwardRuleCommand(domainId, accountId, zoneId, 3L, "VPC01", true, 
2L, 5L, "10.1.12.10", "172.30.20.12", "2222", "22", "tcp");
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
     }
 
     @Test
     public void testDeleteNsxNatRule() {
-        DeleteNsxNatRuleCommand cmd = new DeleteNsxNatRuleCommand(1L, 1L, 1L, 
3L, "VPC01", true, 2L, 5L, "22", "tcp");
+        DeleteNsxNatRuleCommand cmd = new DeleteNsxNatRuleCommand(domainId, 
accountId, zoneId, 3L, "VPC01", true, 2L, 5L, "22", "tcp");
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
     }
@@ -193,7 +277,7 @@ public class NsxResourceTest {
         List<NsxLoadBalancerMember> loadBalancerMembers = List.of(new 
NsxLoadBalancerMember(
                 1L, "172.30.20.12", 6443
         ));
-        CreateNsxLoadBalancerRuleCommand cmd = new 
CreateNsxLoadBalancerRuleCommand(1L, 1L, 1L,
+        CreateNsxLoadBalancerRuleCommand cmd = new 
CreateNsxLoadBalancerRuleCommand(domainId, accountId, zoneId,
                 3L, "VPC01", true, loadBalancerMembers, 1L, "6443", "6443", 
"RoundRobin", "TCP");
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
@@ -203,7 +287,7 @@ public class NsxResourceTest {
     @Test
     public void testCreateNsxDistributedFirewallRule() {
         List<NsxNetworkRule> networkRules = List.of(new NsxNetworkRule());
-        CreateNsxDistributedFirewallRulesCommand cmd = new 
CreateNsxDistributedFirewallRulesCommand(1L, 1L, 1L,
+        CreateNsxDistributedFirewallRulesCommand cmd = new 
CreateNsxDistributedFirewallRulesCommand(domainId, accountId, zoneId,
                 3L, 1L, networkRules);
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
@@ -212,11 +296,19 @@ public class NsxResourceTest {
     @Test
     public void testDeleteNsxDistributedFirewallRule() {
         List<NsxNetworkRule> networkRules = List.of(new NsxNetworkRule());
-        DeleteNsxDistributedFirewallRulesCommand cmd = new 
DeleteNsxDistributedFirewallRulesCommand(1L, 1L, 1L,
+        DeleteNsxDistributedFirewallRulesCommand cmd = new 
DeleteNsxDistributedFirewallRulesCommand(domainId, accountId, zoneId,
                 3L, 1L, networkRules);
         NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(cmd);
         assertTrue(answer.getResult());
     }
 
-
+    @Test
+    public void testCreateTier1NatRule() {
+        long vpcId = 5L;
+        String tier1GatewayName = 
NsxControllerUtils.getTier1GatewayName(domainId, accountId, zoneId, vpcId, 
true);
+        CreateOrUpdateNsxTier1NatRuleCommand command = new 
CreateOrUpdateNsxTier1NatRuleCommand(domainId, accountId, zoneId,
+                tier1GatewayName, "SNAT", "10.1.10.10", "natRuleId");
+        NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
+        assertTrue(answer.getResult());
+    }
 }
diff --git 
a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/utils/NsxControllerUtilsTest.java
 
b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/utils/NsxControllerUtilsTest.java
new file mode 100644
index 00000000000..58d7cfc4787
--- /dev/null
+++ 
b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/utils/NsxControllerUtilsTest.java
@@ -0,0 +1,198 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you 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.
+package org.apache.cloudstack.utils;
+
+import com.cloud.agent.AgentManager;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.network.dao.NsxProviderDao;
+import com.cloud.network.element.NsxProviderVO;
+import org.apache.cloudstack.NsxAnswer;
+import org.apache.cloudstack.agent.api.NsxCommand;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.Spy;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class NsxControllerUtilsTest {
+
+    private static final long domainId = 2L;
+    private static final long accountId = 10L;
+    private static final long zoneId = 1L;
+    private static final long nsxProviderHostId = 1L;
+
+    private static final String commonPrefix = String.format("D%s-A%s-Z%s", 
domainId, accountId, zoneId);
+
+    @Mock
+    private NsxProviderDao nsxProviderDao;
+    @Mock
+    private AgentManager agentMgr;
+
+    @Spy
+    @InjectMocks
+    private NsxControllerUtils nsxControllerUtils = new NsxControllerUtils();
+
+    @Mock
+    private NsxProviderVO nsxProviderVO;
+
+    @Before
+    public void setup() {
+        
Mockito.when(nsxProviderDao.findByZoneId(zoneId)).thenReturn(nsxProviderVO);
+        Mockito.when(nsxProviderVO.getHostId()).thenReturn(nsxProviderHostId);
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void testSendCommandAnswerFailure() {
+        NsxCommand cmd = Mockito.mock(NsxCommand.class);
+        Mockito.when(nsxProviderDao.findByZoneId(zoneId)).thenReturn(null);
+        nsxControllerUtils.sendNsxCommand(cmd, zoneId);
+    }
+
+    @Test(expected = InvalidParameterValueException.class)
+    public void testSendCommandNoNsxProvider() {
+        NsxCommand cmd = Mockito.mock(NsxCommand.class);
+        Mockito.when(agentMgr.easySend(nsxProviderHostId, 
cmd)).thenReturn(null);
+        nsxControllerUtils.sendNsxCommand(cmd, zoneId);
+    }
+
+    @Test
+    public void testSendCommand() {
+        NsxCommand cmd = Mockito.mock(NsxCommand.class);
+        NsxAnswer answer = Mockito.mock(NsxAnswer.class);
+        Mockito.when(answer.getResult()).thenReturn(true);
+        Mockito.when(agentMgr.easySend(nsxProviderHostId, 
cmd)).thenReturn(answer);
+        NsxAnswer nsxAnswer = nsxControllerUtils.sendNsxCommand(cmd, zoneId);
+        Assert.assertNotNull(nsxAnswer);
+    }
+
+    @Test
+    public void testGetNsxNatRuleIdForVpc() {
+        long vpcId = 5L;
+        String nsxNatRuleId = NsxControllerUtils.getNsxNatRuleId(domainId, 
accountId, zoneId, vpcId, true);
+        String ruleIdPart = String.format("V%s-NAT", vpcId);
+        String expected = String.format("%s-%s", commonPrefix, ruleIdPart);
+        Assert.assertEquals(expected, nsxNatRuleId);
+    }
+
+    @Test
+    public void testGetNsxNatRuleIdForNetwork() {
+        long networkId = 5L;
+        String nsxNatRuleId = NsxControllerUtils.getNsxNatRuleId(domainId, 
accountId, zoneId, networkId, false);
+        String ruleIdPart = String.format("N%s-NAT", networkId);
+        String expected = String.format("%s-%s", commonPrefix, ruleIdPart);
+        Assert.assertEquals(expected, nsxNatRuleId);
+    }
+
+    @Test
+    public void testGetNsxSegmentIdForVpcNetwork() {
+        long vpcId = 5L;
+        long networkId = 2L;
+        String nsxSegmentName = NsxControllerUtils.getNsxSegmentId(domainId, 
accountId, zoneId, vpcId, networkId);
+        String segmentPart = String.format("V%s-S%s", vpcId, networkId);
+        String expected = String.format("%s-%s", commonPrefix, segmentPart);
+        Assert.assertEquals(expected, nsxSegmentName);
+    }
+
+    @Test
+    public void testGetNsxSegmentIdForNonVpcNetwork() {
+        Long vpcId = null;
+        long networkId = 2L;
+        String nsxSegmentName = NsxControllerUtils.getNsxSegmentId(domainId, 
accountId, zoneId, vpcId, networkId);
+        String segmentPart = String.format("S%s", networkId);
+        String expected = String.format("%s-%s", commonPrefix, segmentPart);
+        Assert.assertEquals(expected, nsxSegmentName);
+    }
+
+    @Test
+    public void testGetNsxDistributedFirewallPolicyRuleIdForVpcNetwork() {
+        long vpcId = 5L;
+        long networkId = 2L;
+        long ruleId = 1L;
+        String nsxSegmentName = NsxControllerUtils.getNsxSegmentId(domainId, 
accountId, zoneId, vpcId, networkId);
+        String expected = String.format("%s-R%s", nsxSegmentName, ruleId);
+        Assert.assertEquals(expected, 
NsxControllerUtils.getNsxDistributedFirewallPolicyRuleId(nsxSegmentName, 
ruleId));
+    }
+
+    @Test
+    public void testGetTier1GatewayNameForVpcNetwork() {
+        long networkOnVpcId = 5L;
+        String networkPart = String.format("V%s", networkOnVpcId);
+        String expected = String.format("%s-%s", commonPrefix, networkPart);
+        Assert.assertEquals(expected, 
NsxControllerUtils.getTier1GatewayName(domainId, accountId, zoneId, 
networkOnVpcId, true));
+    }
+
+    @Test
+    public void testGetTier1GatewayNameForNetwork() {
+        long networkId = 5L;
+        String networkPart = String.format("N%s", networkId);
+        String expected = String.format("%s-%s", commonPrefix, networkPart);
+        Assert.assertEquals(expected, 
NsxControllerUtils.getTier1GatewayName(domainId, accountId, zoneId, networkId, 
false));
+    }
+
+    @Test
+    public void testGetNsxDhcpRelayConfigIdForVpcNetwork() {
+        long vpcId = 5L;
+        long networkId = 2L;
+        String relayPart = String.format("V%s-S%s-Relay", vpcId, networkId);
+        String expected = String.format("%s-%s", commonPrefix, relayPart);
+        String dhcpRelayConfigId = 
NsxControllerUtils.getNsxDhcpRelayConfigId(zoneId, domainId, accountId, vpcId, 
networkId);
+        Assert.assertEquals(expected, dhcpRelayConfigId);
+    }
+
+    @Test
+    public void testGetNsxDhcpRelayConfigIdForNetwork() {
+        Long vpcId = null;
+        long networkId = 2L;
+        String relayPart = String.format("S%s-Relay", networkId);
+        String expected = String.format("%s-%s", commonPrefix, relayPart);
+        String dhcpRelayConfigId = 
NsxControllerUtils.getNsxDhcpRelayConfigId(zoneId, domainId, accountId, vpcId, 
networkId);
+        Assert.assertEquals(expected, dhcpRelayConfigId);
+    }
+
+    @Test
+    public void testGetStaticNatRuleNameForVpc() {
+        long vpcId = 5L;
+        String rulePart = String.format("V%s-STATICNAT", vpcId);
+        String expected = String.format("%s-%s", commonPrefix, rulePart);
+        String staticNatRuleName = 
NsxControllerUtils.getStaticNatRuleName(domainId, accountId, zoneId, vpcId, 
true);
+        Assert.assertEquals(expected, staticNatRuleName);
+    }
+
+    @Test
+    public void testGetStaticNatRuleNameForNetwork() {
+        long network = 5L;
+        String rulePart = String.format("N%s-STATICNAT", network);
+        String expected = String.format("%s-%s", commonPrefix, rulePart);
+        String staticNatRuleName = 
NsxControllerUtils.getStaticNatRuleName(domainId, accountId, zoneId, network, 
false);
+        Assert.assertEquals(expected, staticNatRuleName);
+    }
+
+    @Test
+    public void testGetPortForwardRuleName() {
+        long vpcId = 5L;
+        long ruleId = 2L;
+        String rulePart = String.format("V%s-PF%s", vpcId, ruleId);
+        String expected = String.format("%s-%s", commonPrefix, rulePart);
+        String portForwardRuleName = 
NsxControllerUtils.getPortForwardRuleName(domainId, accountId, zoneId, vpcId, 
ruleId, true);
+        Assert.assertEquals(expected, portForwardRuleName);
+    }
+}

Reply via email to