mirror of https://github.com/apache/cloudstack.git
[NSX] Add more unit tests (#8431)
* [NSX] Add more unit tests * More tests * Fix build errors
This commit is contained in:
parent
4ce7f64ebd
commit
886c071a6c
|
|
@ -282,7 +282,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) {
|
||||
|
|
|
|||
|
|
@ -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!");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -46,11 +45,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) {
|
||||
|
|
|
|||
|
|
@ -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,77 @@ 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");
|
||||
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 +272,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 +282,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 +291,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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,11 +16,16 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.service;
|
||||
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.vpc.VpcVO;
|
||||
import com.cloud.network.vpc.dao.VpcDao;
|
||||
import com.cloud.utils.net.Ip;
|
||||
import org.apache.cloudstack.NsxAnswer;
|
||||
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.DeleteNsxNatRuleCommand;
|
||||
import org.apache.cloudstack.agent.api.DeleteNsxSegmentCommand;
|
||||
import org.apache.cloudstack.agent.api.DeleteNsxTier1GatewayCommand;
|
||||
import org.apache.cloudstack.utils.NsxControllerUtils;
|
||||
|
|
@ -29,12 +34,14 @@ 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;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
|
|
@ -48,6 +55,10 @@ public class NsxServiceImplTest {
|
|||
|
||||
AutoCloseable closeable;
|
||||
|
||||
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);
|
||||
|
|
@ -80,15 +91,72 @@ public class NsxServiceImplTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testDelete() {
|
||||
public void testDeleteNetworkOnVpc() {
|
||||
NetworkVO network = new NetworkVO();
|
||||
network.setVpcId(1L);
|
||||
VpcVO vpc = mock(VpcVO.class);
|
||||
when(vpcDao.findById(1L)).thenReturn(mock(VpcVO.class));
|
||||
NsxAnswer deleteNsxSegmentAnswer = mock(NsxAnswer.class);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxSegmentCommand.class), anyLong())).thenReturn(deleteNsxSegmentAnswer);
|
||||
when(deleteNsxSegmentAnswer.getResult()).thenReturn(true);
|
||||
|
||||
assertTrue(nsxService.deleteNetwork(1L, 3L, 5L, network));
|
||||
assertTrue(nsxService.deleteNetwork(zoneId, accountId, domainId, network));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteNetwork() {
|
||||
NetworkVO network = new NetworkVO();
|
||||
network.setVpcId(null);
|
||||
NsxAnswer deleteNsxSegmentAnswer = mock(NsxAnswer.class);
|
||||
when(deleteNsxSegmentAnswer.getResult()).thenReturn(true);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxSegmentCommand.class), anyLong())).thenReturn(deleteNsxSegmentAnswer);
|
||||
NsxAnswer deleteNsxTier1GatewayAnswer = mock(NsxAnswer.class);
|
||||
when(deleteNsxTier1GatewayAnswer.getResult()).thenReturn(true);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxTier1GatewayCommand.class), anyLong())).thenReturn(deleteNsxTier1GatewayAnswer);
|
||||
assertTrue(nsxService.deleteNetwork(zoneId, accountId, domainId, network));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateVpcSourceNatIp() {
|
||||
VpcVO vpc = mock(VpcVO.class);
|
||||
IpAddress ipAddress = mock(IpAddress.class);
|
||||
Ip ip = Mockito.mock(Ip.class);
|
||||
when(ip.addr()).thenReturn("10.1.10.10");
|
||||
when(ipAddress.getAddress()).thenReturn(ip);
|
||||
long vpcId = 1L;
|
||||
when(vpc.getAccountId()).thenReturn(accountId);
|
||||
when(vpc.getDomainId()).thenReturn(domainId);
|
||||
when(vpc.getZoneId()).thenReturn(zoneId);
|
||||
when(vpc.getId()).thenReturn(vpcId);
|
||||
NsxAnswer answer = mock(NsxAnswer.class);
|
||||
when(answer.getResult()).thenReturn(true);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(CreateOrUpdateNsxTier1NatRuleCommand.class), eq(zoneId))).thenReturn(answer);
|
||||
nsxService.updateVpcSourceNatIp(vpc, ipAddress);
|
||||
Mockito.verify(nsxControllerUtils).sendNsxCommand(any(CreateOrUpdateNsxTier1NatRuleCommand.class), eq(zoneId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateStaticNatRule() {
|
||||
long networkId = 1L;
|
||||
String networkName = "Network-Test";
|
||||
long vmId = 1L;
|
||||
String publicIp = "10.10.1.10";
|
||||
String vmIp = "192.168.1.20";
|
||||
NsxAnswer answer = Mockito.mock(NsxAnswer.class);
|
||||
when(answer.getResult()).thenReturn(true);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(CreateNsxStaticNatCommand.class), eq(zoneId))).thenReturn(answer);
|
||||
nsxService.createStaticNatRule(zoneId, domainId, accountId,
|
||||
networkId, networkName, true, vmId, publicIp, vmIp);
|
||||
Mockito.verify(nsxControllerUtils).sendNsxCommand(any(CreateNsxStaticNatCommand.class), eq(zoneId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteStaticNatRule() {
|
||||
long networkId = 1L;
|
||||
String networkName = "Network-Test";
|
||||
NsxAnswer answer = Mockito.mock(NsxAnswer.class);
|
||||
when(answer.getResult()).thenReturn(true);
|
||||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxNatRuleCommand.class), eq(zoneId))).thenReturn(answer);
|
||||
nsxService.deleteStaticNatRule(zoneId, domainId, accountId, networkId, networkName, true);
|
||||
Mockito.verify(nsxControllerUtils).sendNsxCommand(any(DeleteNsxNatRuleCommand.class), eq(zoneId));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue