[NSX] Add more unit tests

This commit is contained in:
nvazquez 2024-01-02 15:09:39 -03:00
parent 7fa33a0831
commit 9e307474d7
No known key found for this signature in database
GPG Key ID: 656E1BCC8CB54F84
5 changed files with 315 additions and 32 deletions

View File

@ -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) {

View File

@ -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!");

View File

@ -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) {

View File

@ -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());
}
}

View File

@ -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);
}
}