Skip to content

Commit a32e7bc

Browse files
author
Daman Arora
committed
add unit tests
1 parent 2afdd6b commit a32e7bc

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

server/src/test/java/com/cloud/storage/snapshot/SnapshotManagerImplTest.java

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.cloud.storage.SnapshotPolicyVO;
3131
import com.cloud.storage.SnapshotVO;
3232
import com.cloud.storage.VolumeVO;
33+
import com.cloud.server.TaggedResourceService;
3334
import com.cloud.storage.dao.SnapshotDao;
3435
import com.cloud.storage.dao.SnapshotPolicyDao;
3536
import com.cloud.storage.dao.SnapshotZoneDao;
@@ -44,6 +45,7 @@
4445

4546
import com.cloud.utils.db.SearchBuilder;
4647
import com.cloud.utils.db.SearchCriteria;
48+
import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd;
4749
import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd;
4850
import org.apache.cloudstack.context.CallContext;
4951
import org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult;
@@ -100,6 +102,10 @@ public class SnapshotManagerImplTest {
100102
VolumeDao volumeDao;
101103
@Mock
102104
SnapshotPolicyDao snapshotPolicyDao;
105+
@Mock
106+
SnapshotScheduler snapshotScheduler;
107+
@Mock
108+
TaggedResourceService taggedResourceService;
103109
@InjectMocks
104110
SnapshotManagerImpl snapshotManager = new SnapshotManagerImpl();
105111

@@ -108,6 +114,8 @@ public void setUp() {
108114
snapshotManager._snapshotPolicyDao = snapshotPolicyDao;
109115
snapshotManager._volsDao = volumeDao;
110116
snapshotManager._accountMgr = accountManager;
117+
snapshotManager._snapSchedMgr = snapshotScheduler;
118+
snapshotManager.taggedResourceService = taggedResourceService;
111119
}
112120

113121
@After
@@ -520,4 +528,88 @@ public void testListSnapshotPolicies_RootAdmin() {
520528
Assert.assertEquals(1, result.first().size());
521529
Assert.assertEquals(Integer.valueOf(1), result.second());
522530
}
531+
532+
@Test
533+
public void testDeleteSnapshotPoliciesForRemovedVolume() {
534+
Long policyId = 1L;
535+
Long volumeId = 10L;
536+
Long accountId = 2L;
537+
538+
DeleteSnapshotPoliciesCmd cmd = Mockito.mock(DeleteSnapshotPoliciesCmd.class);
539+
Mockito.when(cmd.getId()).thenReturn(policyId);
540+
Mockito.when(cmd.getIds()).thenReturn(null);
541+
542+
Account caller = Mockito.mock(Account.class);
543+
Mockito.when(caller.getId()).thenReturn(accountId);
544+
CallContext.register(Mockito.mock(User.class), caller);
545+
546+
SnapshotPolicyVO policyVO = Mockito.mock(SnapshotPolicyVO.class);
547+
Mockito.when(policyVO.getId()).thenReturn(policyId);
548+
Mockito.when(policyVO.getVolumeId()).thenReturn(volumeId);
549+
Mockito.when(policyVO.getUuid()).thenReturn("policy-uuid");
550+
Mockito.when(snapshotPolicyDao.findById(policyId)).thenReturn(policyVO);
551+
552+
// Volume is removed (expunged) but findByIdIncludingRemoved should still return it
553+
VolumeVO volumeVO = Mockito.mock(VolumeVO.class);
554+
Mockito.when(volumeDao.findByIdIncludingRemoved(volumeId)).thenReturn(volumeVO);
555+
556+
Mockito.when(snapshotPolicyDao.remove(policyId)).thenReturn(true);
557+
558+
boolean result = snapshotManager.deleteSnapshotPolicies(cmd);
559+
560+
Assert.assertTrue(result);
561+
Mockito.verify(volumeDao).findByIdIncludingRemoved(volumeId);
562+
Mockito.verify(snapshotScheduler).removeSchedule(volumeId, policyId);
563+
Mockito.verify(snapshotPolicyDao).remove(policyId);
564+
}
565+
566+
@Test(expected = InvalidParameterValueException.class)
567+
public void testDeleteSnapshotPoliciesNoPolicyId() {
568+
DeleteSnapshotPoliciesCmd cmd = Mockito.mock(DeleteSnapshotPoliciesCmd.class);
569+
Mockito.when(cmd.getId()).thenReturn(null);
570+
Mockito.when(cmd.getIds()).thenReturn(null);
571+
572+
snapshotManager.deleteSnapshotPolicies(cmd);
573+
}
574+
575+
@Test(expected = InvalidParameterValueException.class)
576+
public void testDeleteSnapshotPoliciesPolicyNotFound() {
577+
Long policyId = 1L;
578+
579+
DeleteSnapshotPoliciesCmd cmd = Mockito.mock(DeleteSnapshotPoliciesCmd.class);
580+
Mockito.when(cmd.getId()).thenReturn(policyId);
581+
Mockito.when(cmd.getIds()).thenReturn(null);
582+
583+
Mockito.when(snapshotPolicyDao.findById(policyId)).thenReturn(null);
584+
585+
snapshotManager.deleteSnapshotPolicies(cmd);
586+
}
587+
588+
@Test(expected = InvalidParameterValueException.class)
589+
public void testDeleteSnapshotPoliciesVolumeNotFound() {
590+
Long policyId = 1L;
591+
Long volumeId = 10L;
592+
593+
DeleteSnapshotPoliciesCmd cmd = Mockito.mock(DeleteSnapshotPoliciesCmd.class);
594+
Mockito.when(cmd.getId()).thenReturn(policyId);
595+
Mockito.when(cmd.getIds()).thenReturn(null);
596+
597+
SnapshotPolicyVO policyVO = Mockito.mock(SnapshotPolicyVO.class);
598+
Mockito.when(policyVO.getVolumeId()).thenReturn(volumeId);
599+
Mockito.when(snapshotPolicyDao.findById(policyId)).thenReturn(policyVO);
600+
601+
// Volume doesn't exist at all (even when including removed)
602+
Mockito.when(volumeDao.findByIdIncludingRemoved(volumeId)).thenReturn(null);
603+
604+
snapshotManager.deleteSnapshotPolicies(cmd);
605+
}
606+
607+
@Test(expected = InvalidParameterValueException.class)
608+
public void testDeleteSnapshotPoliciesManualPolicyId() {
609+
DeleteSnapshotPoliciesCmd cmd = Mockito.mock(DeleteSnapshotPoliciesCmd.class);
610+
Mockito.when(cmd.getId()).thenReturn(Snapshot.MANUAL_POLICY_ID);
611+
Mockito.when(cmd.getIds()).thenReturn(null);
612+
613+
snapshotManager.deleteSnapshotPolicies(cmd);
614+
}
523615
}

0 commit comments

Comments
 (0)