|
23 | 23 | import com.cloud.dc.dao.VlanDao; |
24 | 24 | import com.cloud.domain.dao.DomainDao; |
25 | 25 | import com.cloud.network.dao.NetworkDao; |
| 26 | +import com.cloud.offering.NetworkOffering; |
| 27 | +import com.cloud.offerings.NetworkOfferingVO; |
26 | 28 | import com.cloud.offerings.dao.NetworkOfferingDao; |
27 | 29 | import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; |
28 | 30 | import com.cloud.service.dao.ServiceOfferingDao; |
|
35 | 37 | import org.junit.Assert; |
36 | 38 | import org.junit.Test; |
37 | 39 | import org.junit.runner.RunWith; |
| 40 | +import org.mockito.ArgumentCaptor; |
38 | 41 | import org.mockito.InjectMocks; |
39 | 42 | import org.mockito.Mock; |
40 | 43 | import org.mockito.Mockito; |
41 | 44 | import org.mockito.Spy; |
42 | 45 | import org.mockito.junit.MockitoJUnitRunner; |
43 | 46 |
|
| 47 | +import java.util.HashMap; |
| 48 | +import java.util.Map; |
| 49 | + |
44 | 50 | @RunWith(MockitoJUnitRunner.class) |
45 | 51 | public class ConfigurationServerImplTest { |
46 | 52 |
|
@@ -122,4 +128,37 @@ public void testUpdateSystemvmPassword() { |
122 | 128 | //teardown |
123 | 129 | System.setProperty("user.name", realusername); |
124 | 130 | } |
| 131 | + |
| 132 | + @Test |
| 133 | + public void testCreateDefaultNetworkOfferingsSeedsIsolatedOfferingsWithEgressAllow() { |
| 134 | + Mockito.when(_networkOfferingDao.persistDefaultNetworkOffering(Mockito.any(NetworkOfferingVO.class))) |
| 135 | + .thenAnswer(invocation -> invocation.getArgument(0)); |
| 136 | + |
| 137 | + try (TransactionLegacy txn = TransactionLegacy.open("testCreateDefaultNetworkOfferings")) { |
| 138 | + configurationServer.createDefaultNetworkOfferings(); |
| 139 | + } |
| 140 | + |
| 141 | + ArgumentCaptor<NetworkOfferingVO> captor = ArgumentCaptor.forClass(NetworkOfferingVO.class); |
| 142 | + Mockito.verify(_networkOfferingDao, Mockito.atLeastOnce()).persistDefaultNetworkOffering(captor.capture()); |
| 143 | + |
| 144 | + Map<String, NetworkOfferingVO> offeringsByName = new HashMap<>(); |
| 145 | + for (NetworkOfferingVO offering : captor.getAllValues()) { |
| 146 | + offeringsByName.putIfAbsent(offering.getUniqueName(), offering); |
| 147 | + } |
| 148 | + |
| 149 | + NetworkOfferingVO isolatedSourceNatOffering = offeringsByName.get(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService); |
| 150 | + Assert.assertNotNull(isolatedSourceNatOffering); |
| 151 | + Assert.assertTrue("Built-in Isolated source-NAT offering must be seeded with egress default policy Allow on fresh installations", |
| 152 | + isolatedSourceNatOffering.isEgressDefaultPolicy()); |
| 153 | + |
| 154 | + NetworkOfferingVO isolatedOffering = offeringsByName.get(NetworkOffering.DefaultIsolatedNetworkOffering); |
| 155 | + Assert.assertNotNull(isolatedOffering); |
| 156 | + Assert.assertTrue("Built-in Isolated (no source-NAT) offering must be seeded with egress default policy Allow on fresh installations", |
| 157 | + isolatedOffering.isEgressDefaultPolicy()); |
| 158 | + |
| 159 | + NetworkOfferingVO sharedOffering = offeringsByName.get(NetworkOffering.DefaultSharedNetworkOffering); |
| 160 | + Assert.assertNotNull(sharedOffering); |
| 161 | + Assert.assertFalse("Built-in Shared offering seeding must remain unchanged", |
| 162 | + sharedOffering.isEgressDefaultPolicy()); |
| 163 | + } |
125 | 164 | } |
0 commit comments