Skip to content

Commit def5f8f

Browse files
committed
Added UT in BackupManagerTest and UserVmManagerImplTest
1 parent bc7055d commit def5f8f

File tree

2 files changed

+392
-0
lines changed

2 files changed

+392
-0
lines changed

server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3907,4 +3907,129 @@ public void createVirtualMachineWithExistingSnapshot() throws ResourceUnavailabl
39073907

39083908
userVmManagerImpl.createVirtualMachine(deployVMCmd);
39093909
}
3910+
3911+
@Test
3912+
public void testAllocateVMFromBackupWithVmSettingsRestoration() throws InsufficientCapacityException, ResourceAllocationException, ResourceUnavailableException {
3913+
Long backupId = 10L;
3914+
Long vmId = 1L;
3915+
3916+
CreateVMFromBackupCmd cmd = new CreateVMFromBackupCmd();
3917+
cmd._accountService = accountService;
3918+
cmd._entityMgr = entityManager;
3919+
when(accountService.finalyzeAccountId(nullable(String.class), nullable(Long.class), nullable(Long.class), eq(true))).thenReturn(accountId);
3920+
when(accountService.getActiveAccountById(accountId)).thenReturn(account);
3921+
3922+
ReflectionTestUtils.setField(cmd, "serviceOfferingId", serviceOfferingId);
3923+
ReflectionTestUtils.setField(cmd, "templateId", templateId);
3924+
ReflectionTestUtils.setField(cmd, "backupId", backupId);
3925+
ReflectionTestUtils.setField(cmd, "zoneId", zoneId);
3926+
3927+
ServiceOfferingVO serviceOffering = mock(ServiceOfferingVO.class);
3928+
when(_serviceOfferingDao.findById(serviceOfferingId)).thenReturn(serviceOffering);
3929+
3930+
DataCenterVO zone = mock(DataCenterVO.class);
3931+
when(_dcDao.findById(zoneId)).thenReturn(zone);
3932+
3933+
BackupVO backup = mock(BackupVO.class);
3934+
when(backup.getZoneId()).thenReturn(zoneId);
3935+
when(backup.getVmId()).thenReturn(vmId);
3936+
when(backupDao.findById(backupId)).thenReturn(backup);
3937+
3938+
String vmSettingsJson = "{\"key1\":\"value1\",\"key2\":\"value2\",\"existingKey\":\"backupValue\"}";
3939+
when(backup.getDetail(ApiConstants.VM_SETTINGS)).thenReturn(vmSettingsJson);
3940+
3941+
UserVmVO userVmVO = new UserVmVO();
3942+
when(userVmDao.findByIdIncludingRemoved(vmId)).thenReturn(userVmVO);
3943+
VMTemplateVO template = mock(VMTemplateVO.class);
3944+
when(template.getFormat()).thenReturn(Storage.ImageFormat.QCOW2);
3945+
when(templateDao.findById(templateId)).thenReturn(template);
3946+
3947+
DiskOfferingVO diskOffering = mock(DiskOfferingVO.class);
3948+
VmDiskInfo rootVmDiskInfo = new VmDiskInfo(diskOffering, 10L, 1000L, 2000L);
3949+
when(backupManager.getRootDiskInfoFromBackup(backup)).thenReturn(rootVmDiskInfo);
3950+
when(backupManager.canCreateInstanceFromBackup(backupId)).thenReturn(true);
3951+
3952+
UserVmVO createdVm = mock(UserVmVO.class);
3953+
when(createdVm.getId()).thenReturn(2L);
3954+
Mockito.doReturn(createdVm).when(userVmManagerImpl).createAdvancedVirtualMachine(any(), any(), any(), any(), any(), any(), any(),
3955+
any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), nullable(Boolean.class), any(), any(), any(),
3956+
any(), any(), any(), any(), eq(true), any(), any(), any(), any());
3957+
3958+
Map<String, String> existingDetails = new HashMap<>();
3959+
existingDetails.put("existingKey", "existingValue");
3960+
when(vmInstanceDetailsDao.listDetailsKeyPairs(2L)).thenReturn(existingDetails);
3961+
3962+
UserVmVO vmVO = mock(UserVmVO.class);
3963+
when(userVmDao.findById(2L)).thenReturn(vmVO);
3964+
3965+
UserVm result = userVmManagerImpl.allocateVMFromBackup(cmd);
3966+
3967+
assertNotNull(result);
3968+
assertEquals(2L, result.getId());
3969+
3970+
verify(backup).getDetail(ApiConstants.VM_SETTINGS);
3971+
verify(vmInstanceDetailsDao).listDetailsKeyPairs(2L);
3972+
verify(userVmDao).findById(2L);
3973+
verify(userVmDao).saveDetails(any(UserVmVO.class));
3974+
}
3975+
3976+
@Test
3977+
public void testAllocateVMFromBackupWithOverrideDiskOfferingComputeOnly() throws InsufficientCapacityException, ResourceAllocationException, ResourceUnavailableException {
3978+
Long backupId = 11L;
3979+
Long vmId = 1L;
3980+
Long overrideDiskOfferingId = 5L;
3981+
3982+
CreateVMFromBackupCmd cmd = new CreateVMFromBackupCmd();
3983+
cmd._accountService = accountService;
3984+
cmd._entityMgr = entityManager;
3985+
when(accountService.finalyzeAccountId(nullable(String.class), nullable(Long.class), nullable(Long.class), eq(true))).thenReturn(accountId);
3986+
when(accountService.getActiveAccountById(accountId)).thenReturn(account);
3987+
3988+
ReflectionTestUtils.setField(cmd, "serviceOfferingId", serviceOfferingId);
3989+
ReflectionTestUtils.setField(cmd, "templateId", templateId);
3990+
ReflectionTestUtils.setField(cmd, "backupId", backupId);
3991+
ReflectionTestUtils.setField(cmd, "zoneId", zoneId);
3992+
ReflectionTestUtils.setField(cmd, "overrideDiskOfferingId", overrideDiskOfferingId);
3993+
3994+
ServiceOfferingVO serviceOffering = mock(ServiceOfferingVO.class);
3995+
when(_serviceOfferingDao.findById(serviceOfferingId)).thenReturn(serviceOffering);
3996+
3997+
DataCenterVO zone = mock(DataCenterVO.class);
3998+
when(_dcDao.findById(zoneId)).thenReturn(zone);
3999+
4000+
BackupVO backup = mock(BackupVO.class);
4001+
when(backup.getZoneId()).thenReturn(zoneId);
4002+
when(backup.getVmId()).thenReturn(vmId);
4003+
when(backupDao.findById(backupId)).thenReturn(backup);
4004+
4005+
UserVmVO userVmVO = new UserVmVO();
4006+
when(userVmDao.findByIdIncludingRemoved(vmId)).thenReturn(userVmVO);
4007+
VMTemplateVO template = mock(VMTemplateVO.class);
4008+
when(template.getFormat()).thenReturn(Storage.ImageFormat.QCOW2);
4009+
when(templateDao.findById(templateId)).thenReturn(template);
4010+
4011+
DiskOfferingVO overrideDiskOffering = mock(DiskOfferingVO.class);
4012+
when(overrideDiskOffering.isComputeOnly()).thenReturn(true);
4013+
when(diskOfferingDao.findById(overrideDiskOfferingId)).thenReturn(overrideDiskOffering);
4014+
4015+
DiskOfferingVO diskOffering = mock(DiskOfferingVO.class);
4016+
VmDiskInfo rootVmDiskInfo = new VmDiskInfo(diskOffering, 10L, 1000L, 2000L);
4017+
when(backupManager.getRootDiskInfoFromBackup(backup)).thenReturn(rootVmDiskInfo);
4018+
when(backupManager.canCreateInstanceFromBackup(backupId)).thenReturn(true);
4019+
4020+
UserVmVO createdVm = mock(UserVmVO.class);
4021+
when(createdVm.getId()).thenReturn(2L);
4022+
Mockito.doReturn(createdVm).when(userVmManagerImpl).createAdvancedVirtualMachine(any(), any(), any(), any(), any(), any(), any(),
4023+
any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), nullable(Boolean.class), any(), any(), any(),
4024+
any(), any(), any(), any(), eq(true), any(), any(), any(), any());
4025+
4026+
UserVm result = userVmManagerImpl.allocateVMFromBackup(cmd);
4027+
4028+
assertNotNull(result);
4029+
assertEquals(2L, result.getId());
4030+
4031+
verify(diskOfferingDao).findById(overrideDiskOfferingId);
4032+
verify(overrideDiskOffering).isComputeOnly();
4033+
}
4034+
39104035
}

0 commit comments

Comments
 (0)