diff options
author | Manuel Bentele | 2021-11-11 12:09:31 +0100 |
---|---|---|
committer | Manuel Bentele | 2021-11-11 12:09:31 +0100 |
commit | b12bd7e5ac601406b3708bba3ee86af079762707 (patch) | |
tree | dcb12925dccb9b5c7173f7af81ba6901fa977e6b /core/modules/qemu | |
parent | Replace leading whitespaces with tabs (diff) | |
download | mltk-b12bd7e5ac601406b3708bba3ee86af079762707.tar.gz mltk-b12bd7e5ac601406b3708bba3ee86af079762707.tar.xz mltk-b12bd7e5ac601406b3708bba3ee86af079762707.zip |
[qemu] Mock Java file attribute access to fix CDROM transformation unit test
Diffstat (limited to 'core/modules/qemu')
4 files changed, 60 insertions, 13 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/pom.xml b/core/modules/qemu/runvirt-plugin-qemu/pom.xml index 6354a4e9..d2887cd2 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/pom.xml +++ b/core/modules/qemu/runvirt-plugin-qemu/pom.xml @@ -61,6 +61,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>4.0.0</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java index a7c3b015..95529693 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java @@ -2,6 +2,7 @@ package org.openslx.runvirt.plugin.qemu.configuration; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; @@ -53,6 +54,28 @@ public class TransformationGenericDiskCdromDevices extends TransformationGeneric } /** + * Returns attributes of a file specified by its <i>fileName</i>. + * + * @param fileName file name of the file + * @return attributes of the specified file. + */ + protected BasicFileAttributes getFileAttributes( String fileName ) + { + BasicFileAttributes fileAttrs = null; + + try { + final Path diskFilePath = Paths.get( fileName ); + fileAttrs = Files.readAttributes( diskFilePath, BasicFileAttributes.class ); + } catch ( InvalidPathException e ) { + fileAttrs = null; + } catch ( IOException e ) { + fileAttrs = null; + } + + return fileAttrs; + } + + /** * Sets the storage of a CDROM drive from a virtualization configuration. * * @param disk CDROM drive from a virtualization configuration. @@ -70,15 +93,7 @@ public class TransformationGenericDiskCdromDevices extends TransformationGeneric } else { // set disk image file as storage source of the disk CDROM drive // check before, whether the referenced file is a regular file or a block device file - final Path diskFilePath = Paths.get( fileName ); - BasicFileAttributes diskFileAttrs = null; - - // get file attributes from referenced file - try { - diskFileAttrs = Files.readAttributes( diskFilePath, BasicFileAttributes.class ); - } catch ( IOException e ) { - diskFileAttrs = null; - } + final BasicFileAttributes diskFileAttrs = this.getFileAttributes( fileName ); // set storage type according to the file attributes of the referenced file if ( diskFileAttrs != null ) { diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java index 012f132c..ebb4bd98 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java @@ -3,7 +3,10 @@ package org.openslx.runvirt.plugin.qemu.configuration; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import org.junit.jupiter.api.DisplayName; @@ -14,13 +17,36 @@ import org.openslx.libvirt.domain.device.DiskCdrom; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; import org.openslx.virtualization.configuration.transformation.TransformationException; +class TransformationGenericDiskCdromDevicesStub extends TransformationGenericDiskCdromDevices +{ + @Override + protected BasicFileAttributes getFileAttributes( String fileName ) + { + final BasicFileAttributes fileAttrs; + + if ( fileName.equals( TransformationTestUtils.DEFAULT_VM_CDROM0 ) ) { + fileAttrs = mock( BasicFileAttributes.class ); + when( fileAttrs.isRegularFile() ).thenReturn( false ); + when( fileAttrs.isOther() ).thenReturn( true ); + } else if ( fileName.equals( TransformationTestUtils.DEFAULT_VM_CDROM1 ) ) { + fileAttrs = mock( BasicFileAttributes.class ); + when( fileAttrs.isRegularFile() ).thenReturn( true ); + when( fileAttrs.isOther() ).thenReturn( false ); + } else { + fileAttrs = null; + } + + return fileAttrs; + } +} + public class TransformationGenericDiskCdromDevicesTest { @Test @DisplayName( "Test transformation of VM disk CDROM devices configuration with specified input data" ) public void testTransformationGenericDiskCdromDevices() throws TransformationException { - final TransformationGenericDiskCdromDevices transformation = new TransformationGenericDiskCdromDevices(); + final TransformationGenericDiskCdromDevices transformation = new TransformationGenericDiskCdromDevicesStub(); final Domain config = TransformationTestUtils.getDefaultDomain(); final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs(); @@ -48,7 +74,7 @@ public class TransformationGenericDiskCdromDevicesTest @DisplayName( "Test transformation of VM disk CDROM devices configuration with unspecified input data" ) public void testTransformationGenericDiskCdromDevicesNoData() throws TransformationException { - final TransformationGenericDiskCdromDevices transformation = new TransformationGenericDiskCdromDevices(); + final TransformationGenericDiskCdromDevices transformation = new TransformationGenericDiskCdromDevicesStub(); final Domain config = TransformationTestUtils.getDefaultDomain(); final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs(); diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationTestUtils.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationTestUtils.java index 5123cae1..248df102 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationTestUtils.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationTestUtils.java @@ -25,8 +25,8 @@ public class TransformationTestUtils public static final String DEFAULT_VM_HDD0 = "/mnt/vm/windows.qcow2"; public static final String DEFAULT_VM_FLOPPY0 = "/mnt/vm/floppy0.qcow2"; public static final String DEFAULT_VM_FLOPPY1 = "/mnt/vm/floppy1.qcow2"; - public static final String DEFAULT_VM_CDROM0 = "/dev/mem"; - public static final String DEFAULT_VM_CDROM1 = "/etc/passwd"; + public static final String DEFAULT_VM_CDROM0 = "/dev/sr0"; + public static final String DEFAULT_VM_CDROM1 = "/mnt/image.iso"; public static final String DEFAULT_VM_PARALLEL0 = "/dev/parport0"; public static final String DEFAULT_VM_SERIAL0 = "/dev/ttyS0"; public static final String DEFAULT_VM_MAC0 = "ca:06:29:84:f0:6d"; |