summaryrefslogtreecommitdiffstats
path: root/core/modules/qemu
diff options
context:
space:
mode:
authorManuel Bentele2021-11-11 12:09:31 +0100
committerManuel Bentele2021-11-11 12:09:31 +0100
commitb12bd7e5ac601406b3708bba3ee86af079762707 (patch)
treedcb12925dccb9b5c7173f7af81ba6901fa977e6b /core/modules/qemu
parentReplace leading whitespaces with tabs (diff)
downloadmltk-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')
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/pom.xml6
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java33
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java30
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationTestUtils.java4
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";