5151import com .cloud .vm .UserVmVO ;
5252import com .cloud .vm .VirtualMachine .State ;
5353import com .cloud .vm .VirtualMachineManager ;
54+ import com .cloud .vm .VmDetailConstants ;
5455import com .cloud .vm .dao .UserVmDao ;
5556import com .cloud .vm .dao .VMInstanceDetailsDao ;
5657import com .cloud .vm .dao .VMInstanceDao ;
6768import org .junit .Test ;
6869import org .mockito .ArgumentCaptor ;
6970import org .mockito .Captor ;
70- import org .mockito .ArgumentMatchers ;
7171import org .mockito .Mock ;
7272import org .mockito .MockitoAnnotations ;
7373import org .mockito .Spy ;
7979import java .util .Map ;
8080
8181import static org .junit .Assert .assertEquals ;
82+ import static org .junit .Assert .assertFalse ;
83+ import static org .junit .Assert .assertTrue ;
8284import static org .mockito .ArgumentMatchers .any ;
85+ import static org .mockito .ArgumentMatchers .anyBoolean ;
8386import static org .mockito .ArgumentMatchers .anyLong ;
8487import static org .mockito .ArgumentMatchers .anyString ;
88+ import static org .mockito .ArgumentMatchers .eq ;
8589import static org .mockito .Mockito .doNothing ;
8690import static org .mockito .Mockito .doReturn ;
8791import static org .mockito .Mockito .mock ;
8892import static org .mockito .Mockito .never ;
93+ import static org .mockito .Mockito .times ;
8994import static org .mockito .Mockito .verify ;
9095import static org .mockito .Mockito .when ;
9196
@@ -225,13 +230,13 @@ public void setup() {
225230 when (_serviceOfferingDao .findById (SERVICE_OFFERING_ID )).thenReturn (serviceOffering );
226231
227232 for (ResourceDetail detail : Arrays .asList (userVmDetailCpuNumber , vmSnapshotDetailCpuNumber )) {
228- when (detail .getName ()).thenReturn ("cpuNumber" );
233+ when (detail .getName ()).thenReturn (VmDetailConstants . CPU_NUMBER );
229234 when (detail .getValue ()).thenReturn ("2" );
230235 when (detail .isDisplay ()).thenReturn (true );
231236 }
232237
233238 for (ResourceDetail detail : Arrays .asList (userVmDetailMemory , vmSnapshotDetailMemory )) {
234- when (detail .getName ()).thenReturn ("memory" );
239+ when (detail .getName ()).thenReturn (VmDetailConstants . MEMORY );
235240 when (detail .getValue ()).thenReturn ("2048" );
236241 when (detail .isDisplay ()).thenReturn (true );
237242 }
@@ -348,12 +353,12 @@ public void testUpdateUserVmServiceOfferingSameServiceOffering() {
348353 @ Test
349354 public void testUpdateUserVmServiceOfferingDifferentServiceOffering () throws ConcurrentOperationException , ResourceUnavailableException , ManagementServerException , VirtualMachineMigrationException {
350355 when (userVm .getServiceOfferingId ()).thenReturn (SERVICE_OFFERING_DIFFERENT_ID );
351- when (_userVmManager .upgradeVirtualMachine (ArgumentMatchers . eq (TEST_VM_ID ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (true );
356+ when (_userVmManager .upgradeVirtualMachine (eq (TEST_VM_ID ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (true );
352357 _vmSnapshotMgr .updateUserVmServiceOffering (userVm , vmSnapshotVO );
353358
354359 verify (_vmSnapshotMgr ).changeUserVmServiceOffering (userVm , vmSnapshotVO );
355360 verify (_vmSnapshotMgr ).getVmMapDetails (userVm );
356- verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (ArgumentMatchers . eq (userVm ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
361+ verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (eq (userVm ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
357362 }
358363
359364 @ Test
@@ -368,18 +373,18 @@ public void testGetVmMapDetails() {
368373
369374 @ Test
370375 public void testChangeUserVmServiceOffering () throws ConcurrentOperationException , ResourceUnavailableException , ManagementServerException , VirtualMachineMigrationException {
371- when (_userVmManager .upgradeVirtualMachine (ArgumentMatchers . eq (TEST_VM_ID ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (true );
376+ when (_userVmManager .upgradeVirtualMachine (eq (TEST_VM_ID ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (true );
372377 _vmSnapshotMgr .changeUserVmServiceOffering (userVm , vmSnapshotVO );
373378 verify (_vmSnapshotMgr ).getVmMapDetails (userVm );
374- verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (ArgumentMatchers . eq (userVm ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
379+ verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (eq (userVm ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
375380 }
376381
377382 @ Test (expected =CloudRuntimeException .class )
378383 public void testChangeUserVmServiceOfferingFailOnUpgradeVMServiceOffering () throws ConcurrentOperationException , ResourceUnavailableException , ManagementServerException , VirtualMachineMigrationException {
379- when (_userVmManager .upgradeVirtualMachine (ArgumentMatchers . eq (TEST_VM_ID ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (false );
384+ when (_userVmManager .upgradeVirtualMachine (eq (TEST_VM_ID ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ())).thenReturn (false );
380385 _vmSnapshotMgr .changeUserVmServiceOffering (userVm , vmSnapshotVO );
381386 verify (_vmSnapshotMgr ).getVmMapDetails (userVm );
382- verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (ArgumentMatchers . eq (userVm ), ArgumentMatchers . eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
387+ verify (_vmSnapshotMgr ).upgradeUserVmServiceOffering (eq (userVm ), eq (SERVICE_OFFERING_ID ), mapDetailsCaptor .capture ());
383388 }
384389
385390 @ Test
@@ -396,16 +401,27 @@ public void testUpgradeUserVmServiceOffering() throws ConcurrentOperationExcepti
396401
397402 @ Test
398403 public void testRevertUserVmDetailsFromVmSnapshotNotDynamicServiceOffering () {
399- _vmSnapshotMgr .revertUserVmDetailsFromVmSnapshot (vmMock , vmSnapshotVO );
404+ _vmSnapshotMgr .revertCustomServiceOfferingDetailsFromVmSnapshot (vmMock , vmSnapshotVO );
400405 verify (_vmSnapshotDetailsDao , never ()).listDetails (anyLong ());
401406 }
402407
403408 @ Test
404409 public void testRevertUserVmDetailsFromVmSnapshotDynamicServiceOffering () {
405410 when (serviceOffering .isDynamic ()).thenReturn (true );
406- _vmSnapshotMgr .revertUserVmDetailsFromVmSnapshot (vmMock , vmSnapshotVO );
411+ VMSnapshotDetailsVO uefiSnapshotDetail = new VMSnapshotDetailsVO (VM_SNAPSHOT_ID , "UEFI" , "SECURE" , true );
412+ List <VMSnapshotDetailsVO > snapshotDetailsWithUefi = Arrays .asList (
413+ vmSnapshotDetailCpuNumber , vmSnapshotDetailMemory , uefiSnapshotDetail );
414+ when (_vmSnapshotDetailsDao .listDetails (VM_SNAPSHOT_ID )).thenReturn (snapshotDetailsWithUefi );
415+
416+ _vmSnapshotMgr .revertCustomServiceOfferingDetailsFromVmSnapshot (vmMock , vmSnapshotVO );
417+
407418 verify (_vmSnapshotDetailsDao ).listDetails (VM_SNAPSHOT_ID );
408- verify (_vmInstanceDetailsDao ).saveDetails (listUserVmDetailsCaptor .capture ());
419+ verify (_vmInstanceDetailsDao , never ()).saveDetails (any ());
420+ ArgumentCaptor <String > detailNameCaptor = ArgumentCaptor .forClass (String .class );
421+ verify (_vmInstanceDetailsDao , times (2 )).addDetail (eq (TEST_VM_ID ), detailNameCaptor .capture (), anyString (), anyBoolean ());
422+ List <String > appliedNames = detailNameCaptor .getAllValues ();
423+ assertTrue (appliedNames .contains (VmDetailConstants .CPU_NUMBER ));
424+ assertTrue (appliedNames .contains (VmDetailConstants .MEMORY ));
425+ assertFalse ("UEFI must not be applied from snapshot so that existing UEFI setting is preserved" , appliedNames .contains ("UEFI" ));
409426 }
410-
411427}
0 commit comments