|
27 | 27 | import java.net.URI; |
28 | 28 | import java.util.ArrayList; |
29 | 29 | import java.util.Arrays; |
| 30 | +import java.util.Collections; |
30 | 31 | import java.util.HashMap; |
31 | 32 | import java.util.List; |
32 | 33 | import java.util.Map; |
|
35 | 36 | import com.cloud.exception.InsufficientVirtualNetworkCapacityException; |
36 | 37 | import com.cloud.network.IpAddressManager; |
37 | 38 | import com.cloud.utils.Pair; |
| 39 | +import org.apache.cloudstack.extension.Extension; |
38 | 40 | import org.apache.cloudstack.extension.ExtensionHelper; |
| 41 | +import org.apache.cloudstack.framework.extensions.network.NetworkExtensionElement; |
39 | 42 | import org.junit.Assert; |
40 | 43 | import org.junit.Before; |
41 | 44 | import org.junit.Test; |
42 | 45 | import org.junit.runner.RunWith; |
43 | 46 | import org.junit.runners.JUnit4; |
| 47 | +import org.springframework.test.util.ReflectionTestUtils; |
44 | 48 | import org.mockito.ArgumentMatchers; |
45 | 49 | import org.mockito.MockedStatic; |
46 | 50 | import org.mockito.Mockito; |
|
69 | 73 | import com.cloud.network.dao.PhysicalNetworkVO; |
70 | 74 | import com.cloud.network.dao.RouterNetworkDao; |
71 | 75 | import com.cloud.network.element.DhcpServiceProvider; |
| 76 | +import com.cloud.network.element.NetworkElement; |
72 | 77 | import com.cloud.network.guru.GuestNetworkGuru; |
73 | 78 | import com.cloud.network.guru.NetworkGuru; |
74 | 79 | import com.cloud.network.vpc.VpcManager; |
@@ -106,6 +111,7 @@ public class NetworkOrchestratorTest extends TestCase { |
106 | 111 | private String guruName = "GuestNetworkGuru"; |
107 | 112 | private String dhcpProvider = "VirtualRouter"; |
108 | 113 | private NetworkGuru guru = mock(NetworkGuru.class); |
| 114 | + private NetworkExtensionElement networkExtensionElement; |
109 | 115 |
|
110 | 116 | NetworkOfferingVO networkOffering = mock(NetworkOfferingVO.class); |
111 | 117 |
|
@@ -137,6 +143,8 @@ public void setUp() { |
137 | 143 | testOrchestrator._ipAddrMgr = mock(IpAddressManager.class); |
138 | 144 | testOrchestrator._entityMgr = mock(EntityManager.class); |
139 | 145 | testOrchestrator.extensionHelper = mock(ExtensionHelper.class); |
| 146 | + networkExtensionElement = mock(NetworkExtensionElement.class); |
| 147 | + ReflectionTestUtils.setField(testOrchestrator, "networkExtensionElement", networkExtensionElement); |
140 | 148 | DhcpServiceProvider provider = mock(DhcpServiceProvider.class); |
141 | 149 |
|
142 | 150 | Map<Network.Capability, String> capabilities = new HashMap<Network.Capability, String>(); |
@@ -1012,4 +1020,63 @@ public void testImportNicWithIP4Address() throws Exception { |
1012 | 1020 | assertEquals("testtag", nicProfile.getName()); |
1013 | 1021 | } |
1014 | 1022 | } |
| 1023 | + |
| 1024 | + // ----------------------------------------------------------------------- |
| 1025 | + // Tests for getNetworkElementsIncludingExtensions |
| 1026 | + // ----------------------------------------------------------------------- |
| 1027 | + |
| 1028 | + @Test |
| 1029 | + public void getNetworkElementsIncludingExtensionsReturnsBaseListWhenNoExtensions() { |
| 1030 | + when(testOrchestrator.extensionHelper.listExtensionsByType(Extension.Type.NetworkOrchestrator)) |
| 1031 | + .thenReturn(Collections.emptyList()); |
| 1032 | + |
| 1033 | + DhcpServiceProvider dhcpProvider = mock(DhcpServiceProvider.class); |
| 1034 | + List<NetworkElement> elements = new ArrayList<>(List.of(dhcpProvider)); |
| 1035 | + testOrchestrator.networkElements = elements; |
| 1036 | + |
| 1037 | + @SuppressWarnings("unchecked") |
| 1038 | + List<NetworkElement> result = |
| 1039 | + (List<NetworkElement>) ReflectionTestUtils |
| 1040 | + .invokeMethod(testOrchestrator, "getNetworkElementsIncludingExtensions"); |
| 1041 | + assertNotNull(result); |
| 1042 | + assertEquals(elements.size(), result.size()); |
| 1043 | + } |
| 1044 | + |
| 1045 | + @Test |
| 1046 | + public void getNetworkElementsIncludingExtensionsAddsExtensionElements() { |
| 1047 | + Extension ext = mock(Extension.class); |
| 1048 | + when(ext.getName()).thenReturn("my-net-ext"); |
| 1049 | + when(testOrchestrator.extensionHelper.listExtensionsByType(Extension.Type.NetworkOrchestrator)) |
| 1050 | + .thenReturn(List.of(ext)); |
| 1051 | + |
| 1052 | + NetworkExtensionElement extElement = mock(NetworkExtensionElement.class); |
| 1053 | + when(networkExtensionElement.withProviderName("my-net-ext")).thenReturn(extElement); |
| 1054 | + |
| 1055 | + DhcpServiceProvider dhcpProvider = mock(DhcpServiceProvider.class); |
| 1056 | + testOrchestrator.networkElements = new ArrayList<>(List.of(dhcpProvider)); |
| 1057 | + |
| 1058 | + @SuppressWarnings("unchecked") |
| 1059 | + List<NetworkElement> result = |
| 1060 | + (List<NetworkElement>) ReflectionTestUtils |
| 1061 | + .invokeMethod(testOrchestrator, "getNetworkElementsIncludingExtensions"); |
| 1062 | + assertNotNull(result); |
| 1063 | + assertEquals(2, result.size()); |
| 1064 | + assertTrue(result.contains(extElement)); |
| 1065 | + } |
| 1066 | + |
| 1067 | + @Test |
| 1068 | + public void getNetworkElementsIncludingExtensionsReturnsBaseListWhenExtensionHelperReturnsNull() { |
| 1069 | + when(testOrchestrator.extensionHelper.listExtensionsByType(Extension.Type.NetworkOrchestrator)) |
| 1070 | + .thenReturn(null); |
| 1071 | + |
| 1072 | + DhcpServiceProvider dhcpProvider = mock(DhcpServiceProvider.class); |
| 1073 | + testOrchestrator.networkElements = new ArrayList<>(List.of(dhcpProvider)); |
| 1074 | + |
| 1075 | + @SuppressWarnings("unchecked") |
| 1076 | + List<NetworkElement> result = |
| 1077 | + (List<NetworkElement>) ReflectionTestUtils |
| 1078 | + .invokeMethod(testOrchestrator, "getNetworkElementsIncludingExtensions"); |
| 1079 | + assertNotNull(result); |
| 1080 | + assertEquals(1, result.size()); |
| 1081 | + } |
1015 | 1082 | } |
0 commit comments