Skip to content

Commit e770a9a

Browse files
committed
add test for NsxGuestNetworkGuru
1 parent 8bf232c commit e770a9a

File tree

2 files changed

+134
-13
lines changed

2 files changed

+134
-13
lines changed

plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ public class NsxGuestNetworkGuru extends GuestNetworkGuru implements NetworkMigr
5858
@Inject
5959
NsxControllerUtils nsxControllerUtils;
6060
@Inject
61-
DataCenterDao zoneDao;
62-
@Inject
6361
AccountDao accountDao;
6462

6563
public NsxGuestNetworkGuru() {
@@ -128,7 +126,7 @@ public Network design(NetworkOffering offering, DeploymentPlan plan, Network use
128126
implemented.setBroadcastUri(Networks.BroadcastDomainType.NSX.toUri("nsx"));
129127
try {
130128
long zoneId = network.getDataCenterId();
131-
DataCenter zone = zoneDao.findById(zoneId);
129+
DataCenter zone = _dcDao.findById(zoneId);
132130
if (isNull(zone)) {
133131
throw new CloudRuntimeException(String.format("Failed to find zone with id: %s", zoneId));
134132
}
@@ -169,16 +167,6 @@ public Network implement(Network network, NetworkOffering offering, DeployDestin
169167
implemented.setName(network.getName());
170168
}
171169
implemented.setBroadcastUri(Networks.BroadcastDomainType.NSX.toUri("nsx"));
172-
// try {
173-
// long zoneId = network.getDataCenterId();
174-
// DataCenter zone = zoneDao.findById(zoneId);
175-
// if (isNull(zone)) {
176-
// throw new CloudRuntimeException(String.format("Failed to find zone with id: %s", zoneId));
177-
// }
178-
// createNsxSegment(implemented, zone);
179-
// } catch (Exception ex) {
180-
// throw new CloudRuntimeException("unable to create NSX network " + network.getUuid() + "due to: " + ex.getMessage());
181-
// }
182170
return implemented;
183171
}
184172

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package org.apache.cloudstack.service;
2+
3+
import com.cloud.dc.DataCenter;
4+
import com.cloud.dc.DataCenterVO;
5+
import com.cloud.dc.dao.DataCenterDao;
6+
import com.cloud.deploy.DeploymentPlan;
7+
import com.cloud.network.Network;
8+
import com.cloud.network.NetworkModel;
9+
import com.cloud.network.Networks;
10+
import com.cloud.network.dao.PhysicalNetworkDao;
11+
import com.cloud.network.dao.PhysicalNetworkVO;
12+
import com.cloud.network.vpc.VpcVO;
13+
import com.cloud.network.vpc.dao.VpcDao;
14+
import com.cloud.offering.NetworkOffering;
15+
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
16+
import com.cloud.user.Account;
17+
import com.cloud.user.AccountVO;
18+
import com.cloud.user.dao.AccountDao;
19+
import org.apache.cloudstack.NsxAnswer;
20+
import org.apache.cloudstack.agent.api.CreateNsxSegmentCommand;
21+
import org.apache.cloudstack.agent.api.NsxCommand;
22+
import org.junit.After;
23+
import org.junit.Before;
24+
import org.junit.Test;
25+
import org.junit.runner.RunWith;
26+
import org.mockito.ArgumentMatchers;
27+
import org.mockito.Mock;
28+
import org.mockito.Mockito;
29+
import org.mockito.MockitoAnnotations;
30+
import org.mockito.junit.MockitoJUnitRunner;
31+
import org.springframework.test.util.ReflectionTestUtils;
32+
33+
import java.util.List;
34+
35+
import static org.junit.Assert.assertNotNull;
36+
import static org.junit.Assert.assertSame;
37+
import static org.mockito.ArgumentMatchers.any;
38+
import static org.mockito.ArgumentMatchers.anyLong;
39+
import static org.mockito.Mockito.*;
40+
41+
@RunWith(MockitoJUnitRunner.class)
42+
public class NsxGuestNetworkGuruTest {
43+
44+
@Mock
45+
PhysicalNetworkDao physicalNetworkDao;
46+
@Mock
47+
DataCenterDao dcDao;
48+
@Mock
49+
VpcDao vpcDao;
50+
@Mock
51+
NetworkOfferingServiceMapDao networkOfferingServiceMapDao;
52+
@Mock
53+
NsxControllerUtils nsxControllerUtils;
54+
@Mock
55+
DataCenterDao zoneDao;
56+
@Mock
57+
AccountDao accountDao;
58+
@Mock
59+
PhysicalNetworkVO physicalNetwork;
60+
@Mock
61+
DataCenterVO dataCenterVO;
62+
@Mock
63+
NetworkOffering offering;
64+
@Mock
65+
DeploymentPlan plan;
66+
@Mock
67+
Network network;
68+
@Mock
69+
Account account;
70+
@Mock
71+
VpcVO vpcVO;
72+
@Mock
73+
NetworkModel networkModel;
74+
75+
NsxGuestNetworkGuru guru;
76+
AutoCloseable closeable;
77+
78+
@Before
79+
public void setUp() {
80+
closeable = MockitoAnnotations.openMocks(this);
81+
guru = new NsxGuestNetworkGuru();
82+
ReflectionTestUtils.setField(guru, "_physicalNetworkDao", physicalNetworkDao);
83+
ReflectionTestUtils.setField(guru, "_dcDao", dcDao);
84+
ReflectionTestUtils.setField(guru, "_networkModel", networkModel);
85+
ReflectionTestUtils.setField(guru, "_vpcDao", vpcDao);
86+
87+
guru.networkOfferingServiceMapDao = networkOfferingServiceMapDao;
88+
guru.nsxControllerUtils = nsxControllerUtils;
89+
guru.accountDao = accountDao;
90+
91+
Mockito.when(dataCenterVO.getNetworkType()).thenReturn(DataCenter.NetworkType.Advanced);
92+
93+
when(physicalNetwork.getIsolationMethods()).thenReturn(List.of("NSX"));
94+
95+
when(offering.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
96+
when(offering.getGuestType()).thenReturn(Network.GuestType.Isolated);
97+
when(offering.getId()).thenReturn(1L);
98+
99+
when(plan.getDataCenterId()).thenReturn(1L);
100+
when(plan.getPhysicalNetworkId()).thenReturn(1L);
101+
102+
when(vpcDao.findById(anyLong())).thenReturn(vpcVO);
103+
104+
when(vpcVO.getName()).thenReturn("VPC01");
105+
106+
when(account.getAccountId()).thenReturn(1L);
107+
when(accountDao.findById(anyLong())).thenReturn(mock(AccountVO.class));
108+
109+
Mockito.when(networkOfferingServiceMapDao.isProviderForNetworkOffering(offering.getId(), Network.Provider.Nsx)).thenReturn(
110+
true);
111+
}
112+
113+
@After
114+
public void tearDown() throws Exception {
115+
closeable.close();
116+
}
117+
118+
@Test
119+
public void testNsxNetworkDesign() {
120+
when(physicalNetworkDao.findById(ArgumentMatchers.anyLong())).thenReturn(physicalNetwork);
121+
when(dcDao.findById(ArgumentMatchers.anyLong())).thenReturn(dataCenterVO);
122+
when(nsxControllerUtils.sendNsxCommand(any(CreateNsxSegmentCommand.class), anyLong())).thenReturn(
123+
new NsxAnswer(new NsxCommand(nullable(String.class), nullable(Long.class), nullable(String.class), nullable(Long.class)), true, ""));
124+
125+
Network designedNetwork = guru.design(offering, plan, network, "", 1L, account);
126+
verify(nsxControllerUtils, times(1)).sendNsxCommand(any(CreateNsxSegmentCommand.class), anyLong());
127+
assertNotNull(designedNetwork);
128+
assertSame(Networks.BroadcastDomainType.NSX, designedNetwork.getBroadcastDomainType());
129+
assertSame(Network.State.Allocated, designedNetwork.getState());
130+
131+
132+
}
133+
}

0 commit comments

Comments
 (0)