3434
3535import java .util .ArrayList ;
3636import java .util .Arrays ;
37+ import java .util .Collections ;
3738import java .util .List ;
3839import java .util .UUID ;
3940
41+ import com .cloud .storage .Volume ;
42+ import com .cloud .storage .VolumeVO ;
43+ import com .cloud .storage .dao .VolumeDao ;
4044import org .apache .cloudstack .api .command .admin .host .CancelHostAsDegradedCmd ;
4145import org .apache .cloudstack .api .command .admin .host .DeclareHostAsDegradedCmd ;
4246import org .apache .cloudstack .framework .config .dao .ConfigurationDao ;
@@ -98,6 +102,8 @@ public class ResourceManagerImplTest {
98102 private VMInstanceDao vmInstanceDao ;
99103 @ Mock
100104 private ConfigurationDao configurationDao ;
105+ @ Mock
106+ private VolumeDao volumeDao ;
101107
102108 @ Spy
103109 @ InjectMocks
@@ -119,6 +125,13 @@ public class ResourceManagerImplTest {
119125 @ Mock
120126 private GetVncPortCommand getVncPortCommandVm2 ;
121127
128+ @ Mock
129+ private VolumeVO rootDisk1 ;
130+ @ Mock
131+ private VolumeVO rootDisk2 ;
132+ @ Mock
133+ private VolumeVO dataDisk ;
134+
122135 @ Mock
123136 private Connection sshConnection ;
124137
@@ -138,6 +151,10 @@ public class ResourceManagerImplTest {
138151 private static String vm2VncAddress = "10.2.2.2" ;
139152 private static int vm2VncPort = 5901 ;
140153
154+ private static long poolId = 1L ;
155+ private List <VolumeVO > rootDisks ;
156+ private List <VolumeVO > dataDisks ;
157+
141158 @ Before
142159 public void setup () throws Exception {
143160 MockitoAnnotations .initMocks (this );
@@ -179,6 +196,11 @@ public void setup() throws Exception {
179196 willReturn (new SSHCmdHelper .SSHCmdResult (0 ,"" ,"" ));
180197
181198 when (configurationDao .getValue (ResourceManager .KvmSshToAgentEnabled .key ())).thenReturn ("true" );
199+
200+ rootDisks = Arrays .asList (rootDisk1 , rootDisk2 );
201+ dataDisks = Collections .singletonList (dataDisk );
202+ when (volumeDao .findByPoolId (poolId )).thenReturn (rootDisks );
203+ when (volumeDao .findByPoolId (poolId , Volume .Type .DATADISK )).thenReturn (dataDisks );
182204 }
183205
184206 @ Test
@@ -527,4 +549,33 @@ private HostVO createDummyHost(Status hostStatus) {
527549 return new HostVO (1L , "host01" , Host .Type .Routing , "192.168.1.1" , "255.255.255.0" , null , null , null , null , null , null , null , null , null , null , UUID .randomUUID ().toString (),
528550 hostStatus , "1.0" , null , null , 1L , null , 0 , 0 , null , 0 , null );
529551 }
552+
553+ @ Test
554+ public void testDestroyLocalStoragePoolVolumesBothRootDisksAndDataDisks () {
555+ resourceManager .destroyLocalStoragePoolVolumes (poolId );
556+ verify (volumeDao , times (rootDisks .size () + dataDisks .size ()))
557+ .updateAndRemoveVolume (any (VolumeVO .class ));
558+ }
559+
560+ @ Test
561+ public void testDestroyLocalStoragePoolVolumesOnlyRootDisks () {
562+ when (volumeDao .findByPoolId (poolId , Volume .Type .DATADISK )).thenReturn (null );
563+ resourceManager .destroyLocalStoragePoolVolumes (poolId );
564+ verify (volumeDao , times (rootDisks .size ())).updateAndRemoveVolume (any (VolumeVO .class ));
565+ }
566+
567+ @ Test
568+ public void testDestroyLocalStoragePoolVolumesOnlyDataDisks () {
569+ when (volumeDao .findByPoolId (poolId )).thenReturn (null );
570+ resourceManager .destroyLocalStoragePoolVolumes (poolId );
571+ verify (volumeDao , times (dataDisks .size ())).updateAndRemoveVolume (any (VolumeVO .class ));
572+ }
573+
574+ @ Test
575+ public void testDestroyLocalStoragePoolVolumesNoDisks () {
576+ when (volumeDao .findByPoolId (poolId )).thenReturn (null );
577+ when (volumeDao .findByPoolId (poolId , Volume .Type .DATADISK )).thenReturn (null );
578+ resourceManager .destroyLocalStoragePoolVolumes (poolId );
579+ verify (volumeDao , never ()).updateAndRemoveVolume (any (VolumeVO .class ));
580+ }
530581}
0 commit comments