|
35 | 35 | import java.util.UUID; |
36 | 36 | import java.util.concurrent.ExecutionException; |
37 | 37 |
|
| 38 | +import com.cloud.event.EventTypes; |
| 39 | +import com.cloud.event.UsageEventUtils; |
38 | 40 | import com.cloud.service.ServiceOfferingVO; |
39 | 41 | import com.cloud.service.dao.ServiceOfferingDao; |
40 | 42 | import org.apache.cloudstack.acl.ControlledEntity; |
|
69 | 71 | import org.mockito.Mock; |
70 | 72 | import org.mockito.Mockito; |
71 | 73 | import org.mockito.Spy; |
72 | | -import org.mockito.runners.MockitoJUnitRunner; |
| 74 | +import org.powermock.api.mockito.PowerMockito; |
| 75 | +import org.powermock.core.classloader.annotations.PowerMockIgnore; |
| 76 | +import org.powermock.core.classloader.annotations.PrepareForTest; |
| 77 | +import org.powermock.modules.junit4.PowerMockRunner; |
73 | 78 | import org.springframework.test.util.ReflectionTestUtils; |
74 | 79 |
|
75 | 80 | import com.cloud.api.query.dao.ServiceOfferingJoinDao; |
|
109 | 114 | import com.cloud.vm.snapshot.VMSnapshotVO; |
110 | 115 | import com.cloud.vm.snapshot.dao.VMSnapshotDao; |
111 | 116 |
|
112 | | -@RunWith(MockitoJUnitRunner.class) |
| 117 | +@RunWith(PowerMockRunner.class) |
| 118 | +@PowerMockIgnore("javax.management.*") |
113 | 119 | public class VolumeApiServiceImplTest { |
114 | 120 |
|
115 | 121 | @Spy |
116 | 122 | @InjectMocks |
117 | | - private VolumeApiServiceImpl volumeApiServiceImpl; |
| 123 | + private VolumeApiServiceImpl volumeApiServiceImpl = new VolumeApiServiceImpl(); |
118 | 124 | @Mock |
119 | 125 | private SnapshotManager snapshotManagerMock; |
120 | 126 | @Mock |
@@ -189,6 +195,10 @@ public class VolumeApiServiceImplTest { |
189 | 195 | private long vmInstanceMockId = 1123l; |
190 | 196 | private long volumeSizeMock = 456789921939l; |
191 | 197 |
|
| 198 | + private long diskOfferingMockId = 100203L; |
| 199 | + |
| 200 | + private long offeringMockId = 31902L; |
| 201 | + |
192 | 202 | @Before |
193 | 203 | public void setup() throws InterruptedException, ExecutionException { |
194 | 204 | Mockito.lenient().doReturn(volumeMockId).when(volumeDataStoreVoMock).getVolumeId(); |
@@ -1245,4 +1255,68 @@ private void prepareAndRunIsNewDiskOfferingTheSameAndCustomServiceOffering(long |
1245 | 1255 | boolean result = volumeApiServiceImpl.isNewDiskOfferingTheSameAndCustomServiceOffering(existingDiskOffering, newDiskOffering); |
1246 | 1256 | Assert.assertEquals(expectedResult, result); |
1247 | 1257 | } |
| 1258 | + |
| 1259 | + @Test |
| 1260 | + @PrepareForTest(UsageEventUtils.class) |
| 1261 | + public void publishVolumeCreationUsageEventTestNullDiskOfferingId() { |
| 1262 | + Mockito.doReturn(null).when(volumeVoMock).getDiskOfferingId(); |
| 1263 | + PowerMockito.mockStatic(UsageEventUtils.class); |
| 1264 | + |
| 1265 | + volumeApiServiceImpl.publishVolumeCreationUsageEvent(volumeVoMock); |
| 1266 | + |
| 1267 | + PowerMockito.verifyStatic(UsageEventUtils.class); |
| 1268 | + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), volumeVoMock.getId(), volumeVoMock.getName(), |
| 1269 | + null, volumeVoMock.getTemplateId(), volumeVoMock.getSize(), Volume.class.getName(), volumeVoMock.getUuid(), volumeVoMock.isDisplay()); |
| 1270 | + |
| 1271 | + } |
| 1272 | + |
| 1273 | + @Test |
| 1274 | + @PrepareForTest(UsageEventUtils.class) |
| 1275 | + public void publishVolumeCreationUsageEventTestNullDiskOfferingVo() { |
| 1276 | + Mockito.doReturn(diskOfferingMockId).when(volumeVoMock).getDiskOfferingId(); |
| 1277 | + Mockito.doReturn(null).when(_diskOfferingDao).findById(diskOfferingMockId); |
| 1278 | + PowerMockito.mockStatic(UsageEventUtils.class); |
| 1279 | + |
| 1280 | + volumeApiServiceImpl.publishVolumeCreationUsageEvent(volumeVoMock); |
| 1281 | + |
| 1282 | + PowerMockito.verifyStatic(UsageEventUtils.class); |
| 1283 | + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), volumeVoMock.getId(), volumeVoMock.getName(), |
| 1284 | + null, volumeVoMock.getTemplateId(), volumeVoMock.getSize(), Volume.class.getName(), volumeVoMock.getUuid(), volumeVoMock.isDisplay()); |
| 1285 | + |
| 1286 | + } |
| 1287 | + |
| 1288 | + @Test |
| 1289 | + @PrepareForTest(UsageEventUtils.class) |
| 1290 | + public void publishVolumeCreationUsageEventTestDiskOfferingVoTypeNotDisk() { |
| 1291 | + Mockito.doReturn(diskOfferingMockId).when(volumeVoMock).getDiskOfferingId(); |
| 1292 | + Mockito.doReturn(newDiskOfferingMock).when(_diskOfferingDao).findById(diskOfferingMockId); |
| 1293 | + Mockito.doReturn(true).when(newDiskOfferingMock).isComputeOnly(); |
| 1294 | + |
| 1295 | + PowerMockito.mockStatic(UsageEventUtils.class); |
| 1296 | + |
| 1297 | + volumeApiServiceImpl.publishVolumeCreationUsageEvent(volumeVoMock); |
| 1298 | + |
| 1299 | + PowerMockito.verifyStatic(UsageEventUtils.class); |
| 1300 | + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), volumeVoMock.getId(), volumeVoMock.getName(), |
| 1301 | + null, volumeVoMock.getTemplateId(), volumeVoMock.getSize(), Volume.class.getName(), volumeVoMock.getUuid(), volumeVoMock.isDisplay()); |
| 1302 | + |
| 1303 | + } |
| 1304 | + |
| 1305 | + @Test |
| 1306 | + @PrepareForTest(UsageEventUtils.class) |
| 1307 | + public void publishVolumeCreationUsageEventTestOfferingIdNotNull() { |
| 1308 | + Mockito.doReturn(diskOfferingMockId).when(volumeVoMock).getDiskOfferingId(); |
| 1309 | + Mockito.doReturn(newDiskOfferingMock).when(_diskOfferingDao).findById(diskOfferingMockId); |
| 1310 | + Mockito.doReturn(false).when(newDiskOfferingMock).isComputeOnly(); |
| 1311 | + Mockito.doReturn(offeringMockId).when(newDiskOfferingMock).getId(); |
| 1312 | + |
| 1313 | + PowerMockito.mockStatic(UsageEventUtils.class); |
| 1314 | + |
| 1315 | + volumeApiServiceImpl.publishVolumeCreationUsageEvent(volumeVoMock); |
| 1316 | + |
| 1317 | + PowerMockito.verifyStatic(UsageEventUtils.class); |
| 1318 | + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), volumeVoMock.getId(), volumeVoMock.getName(), |
| 1319 | + offeringMockId, volumeVoMock.getTemplateId(), volumeVoMock.getSize(), Volume.class.getName(), volumeVoMock.getUuid(), volumeVoMock.isDisplay()); |
| 1320 | + |
| 1321 | + } |
1248 | 1322 | } |
0 commit comments