6161import javax .xml .xpath .XPathExpressionException ;
6262import javax .xml .xpath .XPathFactory ;
6363
64- import com .cloud .utils .net .NetUtils ;
65-
66- import com .cloud .vm .VmDetailConstants ;
6764import com .google .gson .JsonObject ;
6865import com .google .gson .JsonParser ;
66+
6967import org .apache .cloudstack .api .ApiConstants .IoDriverPolicy ;
7068import org .apache .cloudstack .storage .command .AttachAnswer ;
7169import org .apache .cloudstack .storage .command .AttachCommand ;
227225import com .cloud .template .VirtualMachineTemplate .BootloaderType ;
228226import com .cloud .utils .Pair ;
229227import com .cloud .utils .exception .CloudRuntimeException ;
230- import com .cloud .utils .script . Script ;
228+ import com .cloud .utils .net . NetUtils ;
231229import com .cloud .utils .script .OutputInterpreter .OneLineParser ;
230+ import com .cloud .utils .script .Script ;
232231import com .cloud .utils .ssh .SshHelper ;
233232import com .cloud .vm .DiskProfile ;
234233import com .cloud .vm .VirtualMachine ;
235234import com .cloud .vm .VirtualMachine .PowerState ;
236235import com .cloud .vm .VirtualMachine .Type ;
236+ import com .cloud .vm .VmDetailConstants ;
237237
238238@ RunWith (MockitoJUnitRunner .class )
239239public class LibvirtComputingResourceTest {
@@ -250,6 +250,19 @@ public class LibvirtComputingResourceTest {
250250 Connect connMock ;
251251 @ Mock
252252 LibvirtDomainXMLParser parserMock ;
253+ @ Mock
254+ private DiskDef diskDef ;
255+ @ Mock
256+ private DiskTO volume ;
257+ @ Mock
258+ private KVMPhysicalDisk physicalDisk ;
259+ @ Mock
260+ private Map <String , String > details ;
261+
262+ private static final String PHYSICAL_DISK_PATH = "/path/to/disk" ;
263+ private static final int DEV_ID = 1 ;
264+ private static final DiskDef .DiskBus DISK_BUS_TYPE = DiskDef .DiskBus .VIRTIO ;
265+ private static final DiskDef .DiskBus DISK_BUS_TYPE_DATA = DiskDef .DiskBus .SCSI ;
253266
254267 @ Mock
255268 DiskTO diskToMock ;
@@ -7142,4 +7155,49 @@ public void parseCpuFeaturesTestReturnListOfCpuFeaturesAndIgnoreMultipleWhitespa
71427155 Assert .assertEquals ("-mmx" , cpuFeatures .get (2 ));
71437156 Assert .assertEquals ("hle" , cpuFeatures .get (3 ));
71447157 }
7158+
7159+ @ Test
7160+ public void defineDiskForDefaultPoolTypeSkipsForceDiskController () {
7161+ Map <String , String > details = new HashMap <>();
7162+ details .put (VmDetailConstants .KVM_SKIP_FORCE_DISK_CONTROLLER , "true" );
7163+ Mockito .when (volume .getType ()).thenReturn (Volume .Type .DATADISK );
7164+ Mockito .when (physicalDisk .getPath ()).thenReturn (PHYSICAL_DISK_PATH );
7165+ libvirtComputingResourceSpy .defineDiskForDefaultPoolType (diskDef , volume , false , false , false , physicalDisk , DEV_ID , DISK_BUS_TYPE , DISK_BUS_TYPE_DATA , details );
7166+ Mockito .verify (diskDef ).defFileBasedDisk (PHYSICAL_DISK_PATH , DEV_ID , DISK_BUS_TYPE_DATA , DiskDef .DiskFmtType .QCOW2 );
7167+ }
7168+
7169+ @ Test
7170+ public void defineDiskForDefaultPoolTypeUsesDiskBusTypeDataForDataDiskWithoutWindowsAndUefi () {
7171+ Map <String , String > details = new HashMap <>();
7172+ Mockito .when (volume .getType ()).thenReturn (Volume .Type .DATADISK );
7173+ Mockito .when (physicalDisk .getPath ()).thenReturn (PHYSICAL_DISK_PATH );
7174+ libvirtComputingResourceSpy .defineDiskForDefaultPoolType (diskDef , volume , false , false , false , physicalDisk , DEV_ID , DISK_BUS_TYPE , DISK_BUS_TYPE_DATA , details );
7175+ Mockito .verify (diskDef ).defFileBasedDisk (PHYSICAL_DISK_PATH , DEV_ID , DISK_BUS_TYPE_DATA , DiskDef .DiskFmtType .QCOW2 );
7176+ }
7177+
7178+ @ Test
7179+ public void defineDiskForDefaultPoolTypeUsesDiskBusTypeForRootDisk () {
7180+ Map <String , String > details = new HashMap <>();
7181+ Mockito .when (volume .getType ()).thenReturn (Volume .Type .ROOT );
7182+ Mockito .when (physicalDisk .getPath ()).thenReturn (PHYSICAL_DISK_PATH );
7183+ libvirtComputingResourceSpy .defineDiskForDefaultPoolType (diskDef , volume , false , false , false , physicalDisk , DEV_ID , DISK_BUS_TYPE , DISK_BUS_TYPE_DATA , details );
7184+ Mockito .verify (diskDef ).defFileBasedDisk (PHYSICAL_DISK_PATH , DEV_ID , DISK_BUS_TYPE , DiskDef .DiskFmtType .QCOW2 );
7185+ }
7186+
7187+ @ Test
7188+ public void defineDiskForDefaultPoolTypeUsesSecureBootConfiguration () {
7189+ Map <String , String > details = new HashMap <>();
7190+ Mockito .when (volume .getType ()).thenReturn (Volume .Type .ROOT );
7191+ Mockito .when (physicalDisk .getPath ()).thenReturn (PHYSICAL_DISK_PATH );
7192+ libvirtComputingResourceSpy .defineDiskForDefaultPoolType (diskDef , volume , true , true , true , physicalDisk , DEV_ID , DISK_BUS_TYPE , DISK_BUS_TYPE_DATA , details );
7193+ Mockito .verify (diskDef ).defFileBasedDisk (PHYSICAL_DISK_PATH , DEV_ID , DiskDef .DiskFmtType .QCOW2 , true );
7194+ }
7195+
7196+ @ Test
7197+ public void defineDiskForDefaultPoolTypeHandlesNullDetails () {
7198+ Mockito .when (volume .getType ()).thenReturn (Volume .Type .DATADISK );
7199+ Mockito .when (physicalDisk .getPath ()).thenReturn (PHYSICAL_DISK_PATH );
7200+ libvirtComputingResourceSpy .defineDiskForDefaultPoolType (diskDef , volume , false , false , false , physicalDisk , DEV_ID , DISK_BUS_TYPE , DISK_BUS_TYPE_DATA , null );
7201+ Mockito .verify (diskDef ).defFileBasedDisk (PHYSICAL_DISK_PATH , DEV_ID , DISK_BUS_TYPE_DATA , DiskDef .DiskFmtType .QCOW2 );
7202+ }
71457203}
0 commit comments