summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2021-05-26 11:32:54 +0200
committerManuel Bentele2021-05-26 11:32:54 +0200
commit985b51d7a308ce468105b2c38a293e9f4bd1f48e (patch)
tree2cbaba0115351635b59ad3119da744137682da9f
parent[qemu] Rename term 'filter' in test classes to match 'transformation' (diff)
downloadmltk-985b51d7a308ce468105b2c38a293e9f4bd1f48e.tar.gz
mltk-985b51d7a308ce468105b2c38a293e9f4bd1f48e.tar.xz
mltk-985b51d7a308ce468105b2c38a293e9f4bd1f48e.zip
[qemu] Add unit tests for Libvirt configuration transformations
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgs.java2
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevices.java27
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java22
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java16
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java6
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java17
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java2
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java6
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java4
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/AppTest.java8
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpuTest.java12
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java60
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevicesTest.java61
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevicesTest.java61
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevicesTest.java58
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemoryTest.java12
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericNameTest.java12
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevicesTest.java53
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuidTest.java12
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitectureTest.java102
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevicesTest.java69
21 files changed, 596 insertions, 26 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgs.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgs.java
index eb7c8739..1fe342b1 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgs.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgs.java
@@ -373,7 +373,7 @@ public class CommandLineArgs
VM_SERIAL0 ( 'q', "vmserial0", true, "Device for the first serial port interface" ),
VM_MAC0 ( 'a', "vmmac0", true, "MAC address for the first network interface" ),
VM_FSSRC0 ( 't', "vmfssrc0", true, "Source directory for first file system passthrough (shared folder)" ),
- VM_FSTGT0 ( 'u', "vmfstgt0", true, "Target directory for first file system passthrough (shared folder)" ),
+ VM_FSTGT0 ( 'e', "vmfstgt0", true, "Target directory for first file system passthrough (shared folder)" ),
VM_FSSRC1 ( 'v', "vmfssrc1", true, "Source directory for second file system passthrough (shared folder)" ),
VM_FSTGT1 ( 'w', "vmfstgt1", true, "Target directory for second file system passthrough (shared folder)" );
// @formatter:on
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 066af763..643c40ed 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
@@ -3,10 +3,10 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import java.util.ArrayList;
import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Disk.BusType;
import org.openslx.libvirt.domain.device.Disk.StorageType;
import org.openslx.libvirt.domain.device.DiskCdrom;
import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
-import org.openslx.virtualization.configuration.VirtualizationConfigurationQemu;
import org.openslx.virtualization.configuration.VirtualizationConfigurationQemuUtils;
import org.openslx.virtualization.configuration.transformation.TransformationException;
import org.openslx.virtualization.configuration.transformation.TransformationGeneric;
@@ -60,11 +60,28 @@ public class TransformationGenericDiskCdromDevices extends TransformationGeneric
final ArrayList<DiskCdrom> devices = config.getDiskCdromDevices();
final DiskCdrom disk = VirtualizationConfigurationQemuUtils.getArrayIndex( devices, index );
- if ( disk != null ) {
+ if ( disk == null ) {
+ if ( fileName != null ) {
+ // CDROM drive does not exist, so create new CDROM drive
+ final DiskCdrom newDisk = config.addDiskCdromDevice();
+ newDisk.setBusType( BusType.SATA );
+ String targetDevName = VirtualizationConfigurationQemuUtils.createAlphabeticalDeviceName( "sd", index );
+ newDisk.setTargetDevice( targetDevName );
+
+ if ( fileName.isEmpty() ) {
+ // remove storage source if empty string is specified to emulate an empty CDROM drive
+ newDisk.removeStorage();
+ } else {
+ // set disk image file as storage source of the disk CDROM drive
+ newDisk.setStorage( StorageType.FILE, fileName );
+ }
+ }
+ } else {
+ // CDROM drive exists, so update existing CDROM drive
if ( fileName == null ) {
- // do not remove disk CDROM drive, but set local physical drive as input source
- disk.setStorage( StorageType.BLOCK, VirtualizationConfigurationQemu.CDROM_DEFAULT_PHYSICAL_DRIVE );
- } else if ( fileName.equals( "" ) ) {
+ // remove disk storage device if disk image file name is not set
+ disk.remove();
+ } else if ( fileName.isEmpty() ) {
// remove storage source if empty string is specified to emulate an empty CDROM drive
disk.removeStorage();
} else {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java
index 87b0eb5c..fe3d3c34 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevices.java
@@ -3,6 +3,7 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import java.util.ArrayList;
import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Disk.BusType;
import org.openslx.libvirt.domain.device.Disk.StorageType;
import org.openslx.libvirt.domain.device.DiskFloppy;
import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
@@ -58,12 +59,27 @@ public class TransformationGenericDiskFloppyDevices extends TransformationGeneri
final ArrayList<DiskFloppy> devices = config.getDiskFloppyDevices();
final DiskFloppy disk = VirtualizationConfigurationQemuUtils.getArrayIndex( devices, index );
- if ( disk != null ) {
+ if ( disk == null ) {
+ if ( fileName != null ) {
+ // floppy device does not exist, so create new floppy device
+ final DiskFloppy newDisk = config.addDiskFloppyDevice();
+ newDisk.setBusType( BusType.FDC );
+ String targetDevName = VirtualizationConfigurationQemuUtils.createAlphabeticalDeviceName( "fd", index );
+ newDisk.setTargetDevice( targetDevName );
+
+ if ( fileName.isEmpty() ) {
+ newDisk.removeStorage();
+ } else {
+ newDisk.setStorage( StorageType.FILE, fileName );
+ }
+ }
+ } else {
+ // floppy device exists, so update existing floppy device
if ( fileName == null ) {
- // remove disk floppy device if disk image file name is not set
disk.remove();
+ } else if ( fileName.isEmpty() ) {
+ disk.removeStorage();
} else {
- // set image file of disk storage if disk floppy device is available
disk.setStorage( StorageType.FILE, fileName );
}
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java
index 30c26cae..9bd1edbb 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskStorageDevices.java
@@ -3,7 +3,9 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import java.util.ArrayList;
import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Disk.BusType;
import org.openslx.libvirt.domain.device.Disk.StorageType;
+import org.openslx.libvirt.domain.device.DiskFloppy;
import org.openslx.libvirt.domain.device.DiskStorage;
import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
import org.openslx.virtualization.configuration.VirtualizationConfigurationQemuUtils;
@@ -61,8 +63,18 @@ public class TransformationGenericDiskStorageDevices extends TransformationGener
final ArrayList<DiskStorage> devices = config.getDiskStorageDevices();
final DiskStorage disk = VirtualizationConfigurationQemuUtils.getArrayIndex( devices, index );
- if ( disk != null ) {
- if ( fileName == null ) {
+ if ( disk == null ) {
+ if ( fileName != null && !fileName.isEmpty() ) {
+ // storage device does not exist, so create new storage device
+ final DiskFloppy newDisk = config.addDiskFloppyDevice();
+ newDisk.setBusType( BusType.VIRTIO );
+ String targetDevName = VirtualizationConfigurationQemuUtils.createAlphabeticalDeviceName( "vd", index );
+ newDisk.setTargetDevice( targetDevName );
+ newDisk.setStorage( StorageType.FILE, fileName );
+ }
+ } else {
+ // storage device exists, so update existing storage device
+ if ( fileName == null || fileName.isEmpty() ) {
// remove disk storage device if disk image file name is not set
disk.remove();
} else {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java
index 88939302..a4f77b0d 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevices.java
@@ -66,7 +66,7 @@ public class TransformationGenericFileSystemDevices extends TransformationGeneri
if ( fileSystem == null ) {
// check if file system device source directory is specified
- if ( source != null && target != null ) {
+ if ( source != null && !source.isEmpty() && target != null && !target.isEmpty() ) {
// file system device does not exist, so create new file system device
final FileSystem newFileSystem = config.addFileSystemDevice();
newFileSystem.setType( Type.MOUNT );
@@ -75,7 +75,7 @@ public class TransformationGenericFileSystemDevices extends TransformationGeneri
newFileSystem.setTarget( target );
}
} else {
- if ( source == null || target == null ) {
+ if ( source == null || source.isEmpty() || target == null || target.isEmpty() ) {
// remove file system device since device source or target is not specified
fileSystem.remove();
} else {
@@ -100,7 +100,7 @@ public class TransformationGenericFileSystemDevices extends TransformationGeneri
// remove all additional file system devices
final ArrayList<FileSystem> devices = config.getFileSystemDevices();
- for ( int i = 1; i < devices.size(); i++ ) {
+ for ( int i = 2; i < devices.size(); i++ ) {
devices.get( i ).remove();
}
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java
index ab44b784..6cf12ce2 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevices.java
@@ -4,7 +4,11 @@ import java.util.ArrayList;
import org.openslx.libvirt.domain.Domain;
import org.openslx.libvirt.domain.device.Interface;
+import org.openslx.libvirt.domain.device.InterfaceBridge;
+import org.openslx.libvirt.domain.device.Interface.Model;
+import org.openslx.libvirt.domain.device.Interface.Type;
import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationQemu;
import org.openslx.virtualization.configuration.VirtualizationConfigurationQemuUtils;
import org.openslx.virtualization.configuration.transformation.TransformationException;
import org.openslx.virtualization.configuration.transformation.TransformationGeneric;
@@ -59,8 +63,17 @@ public class TransformationGenericInterfaceDevices extends TransformationGeneric
final ArrayList<Interface> devices = config.getInterfaceDevices();
final Interface device = VirtualizationConfigurationQemuUtils.getArrayIndex( devices, index );
- if ( device != null ) {
- if ( macAddress == null ) {
+ if ( device == null ) {
+ if ( macAddress != null && !macAddress.isEmpty() ) {
+ // create network interface if it does not exists
+ final InterfaceBridge newDevice = config.addInterfaceBridgeDevice();
+ newDevice.setType( Type.BRIDGE );
+ newDevice.setModel( Model.VIRTIO );
+ newDevice.setMacAddress( macAddress );
+ newDevice.setSource( VirtualizationConfigurationQemu.NETWORK_BRIDGE_NAT_DEFAULT );
+ }
+ } else {
+ if ( macAddress == null || macAddress.isEmpty() ) {
// remove network interface device if MAC address is not set
device.remove();
} else {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java
index dff86132..08d43ef0 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevices.java
@@ -68,7 +68,7 @@ public class TransformationGenericParallelDevices extends TransformationGeneric<
newDevice.setSource( fileName );
}
} else {
- if ( fileName == null ) {
+ if ( fileName == null || fileName.isEmpty() ) {
// remove device since device file is not specified
device.remove();
} else {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java
index 0c32a3b3..f507237d 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitecture.java
@@ -42,9 +42,9 @@ public class TransformationSpecificQemuArchitecture
*
* @param hypervisor Libvirt/QEMU hypervisor.
*/
- public TransformationSpecificQemuArchitecture( LibvirtHypervisorQemu hypervisor )
+ public TransformationSpecificQemuArchitecture( LibvirtHypervisorQemu virtualizer )
{
- super( TransformationSpecificQemuArchitecture.NAME, hypervisor );
+ super( TransformationSpecificQemuArchitecture.NAME, virtualizer );
}
/**
@@ -68,7 +68,7 @@ public class TransformationSpecificQemuArchitecture
* @throws TransformationException failed to query and return the capabilities of the
* Libvirt/QEMU hypervisor.
*/
- private Capabilities getCapabilities() throws TransformationException
+ protected Capabilities getCapabilities() throws TransformationException
{
// retrieve capabilities from QEMU hypervisor only once
if ( this.capabilities == null ) {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java
index 1cd3c9b0..30f60289 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevices.java
@@ -81,14 +81,14 @@ public class TransformationSpecificQemuSerialDevices
if ( device == null ) {
// check if device file name is specified
- if ( fileName != null ) {
+ if ( fileName != null && !fileName.isEmpty() ) {
// serial port device is not available, so create new serial port device
final Serial newDevice = config.addSerialDevice();
newDevice.setType( Type.DEV );
newDevice.setSource( fileName );
}
} else {
- if ( fileName == null ) {
+ if ( fileName == null || fileName.isEmpty() ) {
// remove serial port device if device file name is not set
device.remove();
} else {
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/AppTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/AppTest.java
index a7929ab0..1db1525b 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/AppTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/AppTest.java
@@ -63,7 +63,7 @@ public class AppTest
assertTrue( shortHelpOptionCorrectOutput.contains( App.APP_DESC ) );
// test that no error was logged and output is available
- assertEquals( 2093, shortHelpOptionCorrectOutput.length() );
+ assertEquals( 2160, shortHelpOptionCorrectOutput.length() );
assertEquals( 0, shortHelpOptionCorrectErrOutput.length() );
}
@@ -91,7 +91,7 @@ public class AppTest
assertTrue( longHelpOptionCorrectOutput.contains( App.APP_DESC ) );
// test that no error was logged and output is available
- assertEquals( 2093, longHelpOptionCorrectOutput.length() );
+ assertEquals( 2160, longHelpOptionCorrectOutput.length() );
assertEquals( 0, longHelpOptionCorrectErrOutput.length() );
}
@@ -119,7 +119,7 @@ public class AppTest
assertTrue( shortHelpOptionIncorrectOutput.contains( App.APP_DESC ) );
// test that error was logged and output is available
- assertEquals( 2093, shortHelpOptionIncorrectOutput.length() );
+ assertEquals( 2160, shortHelpOptionIncorrectOutput.length() );
assertEquals( 0, shortHelpOptionIncorrectErrOutput.length() );
}
@@ -147,7 +147,7 @@ public class AppTest
assertTrue( longHelpOptionIncorrectOutput.contains( App.APP_DESC ) );
// test that error was logged and output is available
- assertEquals( 2093, longHelpOptionIncorrectOutput.length() );
+ assertEquals( 2160, longHelpOptionIncorrectOutput.length() );
assertEquals( 0, longHelpOptionIncorrectErrOutput.length() );
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpuTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpuTest.java
index 260adcc1..7e93513b 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpuTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericCpuTest.java
@@ -2,6 +2,7 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -31,4 +32,15 @@ public class TransformationGenericCpuTest
assertEquals( CpuMode.HOST_PASSTHROUGH, config.getCpuMode() );
assertEquals( CpuCheck.PARTIAL, config.getCpuCheck() );
}
+
+ @Test
+ @DisplayName( "Test transformation of VM CPU configuration with unspecified input data" )
+ public void testTransformationGenericCpuNoData() throws TransformationException
+ {
+ final TransformationGenericCpu transformation = new TransformationGenericCpu();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, args ) );
+ }
}
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
new file mode 100644
index 00000000..842e30e6
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskCdromDevicesTest.java
@@ -0,0 +1,60 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Disk.StorageType;
+import org.openslx.libvirt.domain.device.DiskCdrom;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+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 Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<DiskCdrom> devicesBeforeTransformation = config.getDiskCdromDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+ final DiskCdrom cdromDeviceBeforeTransformation = devicesBeforeTransformation.get( 0 );
+ assertEquals( StorageType.FILE, cdromDeviceBeforeTransformation.getStorageType() );
+ assertNotEquals( TransformationTestUtils.DEFAULT_VM_CDROM0, cdromDeviceBeforeTransformation.getStorageSource() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<DiskCdrom> devicesAfterTransformation = config.getDiskCdromDevices();
+ assertEquals( 2, devicesAfterTransformation.size() );
+ final DiskCdrom cdromDevice1AfterTransformation = devicesAfterTransformation.get( 0 );
+ final DiskCdrom cdromDevice2AfterTransformation = devicesAfterTransformation.get( 1 );
+ assertEquals( StorageType.FILE, cdromDevice1AfterTransformation.getStorageType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_CDROM0, cdromDevice1AfterTransformation.getStorageSource() );
+ assertEquals( StorageType.FILE, cdromDevice2AfterTransformation.getStorageType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_CDROM1, cdromDevice2AfterTransformation.getStorageSource() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM disk CDROM devices configuration with unspecified input data" )
+ public void testTransformationGenericDiskCdromDevicesNoData() throws TransformationException
+ {
+ final TransformationGenericDiskCdromDevices transformation = new TransformationGenericDiskCdromDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<DiskCdrom> devicesBeforeTransformation = config.getDiskCdromDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<DiskCdrom> devicesAfterTransformation = config.getDiskCdromDevices();
+ assertEquals( 0, devicesAfterTransformation.size() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevicesTest.java
new file mode 100644
index 00000000..d4678f4f
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericDiskFloppyDevicesTest.java
@@ -0,0 +1,61 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Disk.StorageType;
+import org.openslx.libvirt.domain.device.DiskFloppy;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class TransformationGenericDiskFloppyDevicesTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM disk floppy devices configuration with specified input data" )
+ public void testTransformationGenericDiskFloppyDevices() throws TransformationException
+ {
+ final TransformationGenericDiskFloppyDevices transformation = new TransformationGenericDiskFloppyDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<DiskFloppy> devicesBeforeTransformation = config.getDiskFloppyDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+ final DiskFloppy floppyDeviceBeforeTransformation = devicesBeforeTransformation.get( 0 );
+ assertEquals( StorageType.FILE, floppyDeviceBeforeTransformation.getStorageType() );
+ assertNotEquals( TransformationTestUtils.DEFAULT_VM_FLOPPY0,
+ floppyDeviceBeforeTransformation.getStorageSource() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<DiskFloppy> devicesAfterTransformation = config.getDiskFloppyDevices();
+ assertEquals( 2, devicesAfterTransformation.size() );
+ final DiskFloppy floppyDevice1AfterTransformation = devicesAfterTransformation.get( 0 );
+ final DiskFloppy floppyDevice2AfterTransformation = devicesAfterTransformation.get( 1 );
+ assertEquals( StorageType.FILE, floppyDevice1AfterTransformation.getStorageType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FLOPPY0, floppyDevice1AfterTransformation.getStorageSource() );
+ assertEquals( StorageType.FILE, floppyDevice2AfterTransformation.getStorageType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FLOPPY1, floppyDevice2AfterTransformation.getStorageSource() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM disk floppy devices configuration with unspecified input data" )
+ public void testTransformationGenericDiskFloppyDevicesNoData() throws TransformationException
+ {
+ final TransformationGenericDiskFloppyDevices transformation = new TransformationGenericDiskFloppyDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<DiskFloppy> devicesBeforeTransformation = config.getDiskFloppyDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<DiskFloppy> devicesAfterTransformation = config.getDiskFloppyDevices();
+ assertEquals( 0, devicesAfterTransformation.size() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevicesTest.java
new file mode 100644
index 00000000..38a07e38
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericFileSystemDevicesTest.java
@@ -0,0 +1,61 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.FileSystem;
+import org.openslx.libvirt.domain.device.FileSystem.AccessMode;
+import org.openslx.libvirt.domain.device.FileSystem.Type;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class TransformationGenericFileSystemDevicesTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM file system devices configuration with specified input data" )
+ public void testTransformationGenericFileSystemDevices() throws TransformationException
+ {
+ final TransformationGenericFileSystemDevices transformation = new TransformationGenericFileSystemDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<FileSystem> devicesBeforeTransformation = config.getFileSystemDevices();
+ assertEquals( 0, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<FileSystem> devicesAfterTransformation = config.getFileSystemDevices();
+ assertEquals( 2, devicesAfterTransformation.size() );
+ final FileSystem fs1AfterTransformation = devicesAfterTransformation.get( 0 );
+ final FileSystem fs2AfterTransformation = devicesAfterTransformation.get( 1 );
+ assertEquals( Type.MOUNT, fs1AfterTransformation.getType() );
+ assertEquals( AccessMode.MAPPED, fs1AfterTransformation.getAccessMode() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FSSRC0, fs1AfterTransformation.getSource() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FSTGT0, fs1AfterTransformation.getTarget() );
+ assertEquals( Type.MOUNT, fs2AfterTransformation.getType() );
+ assertEquals( AccessMode.MAPPED, fs2AfterTransformation.getAccessMode() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FSSRC1, fs2AfterTransformation.getSource() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_FSTGT1, fs2AfterTransformation.getTarget() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM file system devices configuration with unspecified input data" )
+ public void testTransformationGenericFileSystemDevicesNoData() throws TransformationException
+ {
+ final TransformationGenericFileSystemDevices transformation = new TransformationGenericFileSystemDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<FileSystem> devicesBeforeTransformation = config.getFileSystemDevices();
+ assertEquals( 0, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<FileSystem> devicesAfterTransformation = config.getFileSystemDevices();
+ assertEquals( 0, devicesAfterTransformation.size() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevicesTest.java
new file mode 100644
index 00000000..6257e98f
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericInterfaceDevicesTest.java
@@ -0,0 +1,58 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Interface;
+import org.openslx.libvirt.domain.device.Interface.Model;
+import org.openslx.libvirt.domain.device.Interface.Type;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationQemu;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class TransformationGenericInterfaceDevicesTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM network interface devices configuration with specified input data" )
+ public void testTransformationGenericInterfaceDevices() throws TransformationException
+ {
+ final TransformationGenericInterfaceDevices transformation = new TransformationGenericInterfaceDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<Interface> devicesBeforeTransformation = config.getInterfaceDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Interface> devicesAfterTransformation = config.getInterfaceDevices();
+ assertEquals( 1, devicesAfterTransformation.size() );
+ final Interface interfaceAfterTransformation = devicesAfterTransformation.get( 0 );
+ assertEquals( Type.BRIDGE, interfaceAfterTransformation.getType() );
+ assertEquals( Model.VIRTIO, interfaceAfterTransformation.getModel() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_MAC0, interfaceAfterTransformation.getMacAddress() );
+ assertEquals( VirtualizationConfigurationQemu.NETWORK_BRIDGE_NAT_DEFAULT,
+ interfaceAfterTransformation.getSource() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM network interface devices configuration with unspecified input data" )
+ public void testTransformationGenericInterfaceDevicesNoData() throws TransformationException
+ {
+ final TransformationGenericInterfaceDevices transformation = new TransformationGenericInterfaceDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<Interface> devicesBeforeTransformation = config.getInterfaceDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Interface> devicesAfterTransformation = config.getInterfaceDevices();
+ assertEquals( 0, devicesAfterTransformation.size() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemoryTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemoryTest.java
index 812982ee..76f53e40 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemoryTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericMemoryTest.java
@@ -2,6 +2,7 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import java.math.BigInteger;
@@ -32,4 +33,15 @@ public class TransformationGenericMemoryTest
assertEquals( defaultMemory.toString(), config.getMemory().toString() );
assertEquals( defaultMemory.toString(), config.getCurrentMemory().toString() );
}
+
+ @Test
+ @DisplayName( "Test transformation of VM memory configuration with unspecified input data" )
+ public void testTransformationGenericMemoryNoData() throws TransformationException
+ {
+ final TransformationGenericMemory transformation = new TransformationGenericMemory();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, args ) );
+ }
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericNameTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericNameTest.java
index 2403b83f..b52162d7 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericNameTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericNameTest.java
@@ -2,6 +2,7 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -27,4 +28,15 @@ public class TransformationGenericNameTest
assertEquals( TransformationTestUtils.DEFAULT_VM_NAME, config.getName() );
assertEquals( TransformationTestUtils.DEFAULT_VM_DSPLNAME, config.getTitle() );
}
+
+ @Test
+ @DisplayName( "Test transformation of VM (display) name configuration with unspecified input data" )
+ public void testTransformationGenericNameNoData() throws TransformationException
+ {
+ final TransformationGenericName transformation = new TransformationGenericName();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, args ) );
+ }
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevicesTest.java
new file mode 100644
index 00000000..63fb134c
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericParallelDevicesTest.java
@@ -0,0 +1,53 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Parallel;
+import org.openslx.libvirt.domain.device.Parallel.Type;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class TransformationGenericParallelDevicesTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM parallel devices configuration with specified input data" )
+ public void testTransformationGenericParallelDevices() throws TransformationException
+ {
+ final TransformationGenericParallelDevices transformation = new TransformationGenericParallelDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<Parallel> devicesBeforeTransformation = config.getParallelDevices();
+ assertEquals( 0, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Parallel> devicesAfterTransformation = config.getParallelDevices();
+ assertEquals( 1, devicesAfterTransformation.size() );
+ final Parallel parallelDeviceAfterTransformation = devicesAfterTransformation.get( 0 );
+ assertEquals( Type.DEV, parallelDeviceAfterTransformation.getType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_PARALLEL0, parallelDeviceAfterTransformation.getSource() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM parallel devices configuration with unspecified input data" )
+ public void testTransformationGenericParallelDevicesNoData() throws TransformationException
+ {
+ final TransformationGenericParallelDevices transformation = new TransformationGenericParallelDevices();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<Parallel> devicesBeforeTransformation = config.getParallelDevices();
+ assertEquals( 0, devicesBeforeTransformation.size() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Parallel> devicesAfterTransformation = config.getParallelDevices();
+ assertEquals( 0, devicesAfterTransformation.size() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuidTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuidTest.java
index d42a84eb..8fe20886 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuidTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationGenericUuidTest.java
@@ -2,6 +2,7 @@ package org.openslx.runvirt.plugin.qemu.configuration;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -25,4 +26,15 @@ public class TransformationGenericUuidTest
assertEquals( TransformationTestUtils.DEFAULT_VM_UUID, config.getUuid() );
}
+
+ @Test
+ @DisplayName( "Test transformation of VM UUID configuration with unspecified input data" )
+ public void testTransformationGenericUuidNoData() throws TransformationException
+ {
+ final TransformationGenericUuid transformation = new TransformationGenericUuid();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, args ) );
+ }
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitectureTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitectureTest.java
new file mode 100644
index 00000000..50689c4e
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuArchitectureTest.java
@@ -0,0 +1,102 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.InputStream;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.capabilities.Capabilities;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.Domain.OsType;
+import org.openslx.libvirt.domain.Domain.Type;
+import org.openslx.libvirt.xml.LibvirtXmlDocumentException;
+import org.openslx.libvirt.xml.LibvirtXmlSerializationException;
+import org.openslx.libvirt.xml.LibvirtXmlTestResources;
+import org.openslx.libvirt.xml.LibvirtXmlValidationException;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+class TransformationSpecificQemuArchitectureStub extends TransformationSpecificQemuArchitecture
+{
+ final String capabilityFileName;
+
+ public TransformationSpecificQemuArchitectureStub( String capabilityFileName )
+ {
+ super( null );
+
+ this.capabilityFileName = capabilityFileName;
+ }
+
+ @Override
+ protected Capabilities getCapabilities() throws TransformationException
+ {
+ final InputStream capabilityContent = LibvirtXmlTestResources.getLibvirtXmlStream( this.capabilityFileName );
+ Capabilities capabilites = null;
+
+ try {
+ capabilites = new Capabilities( capabilityContent );
+ } catch ( LibvirtXmlDocumentException | LibvirtXmlSerializationException | LibvirtXmlValidationException e ) {
+ fail( "Could not create stub for getCapabilities(): " + e.getLocalizedMessage() );
+ }
+
+ return capabilites;
+ }
+}
+
+public class TransformationSpecificQemuArchitectureTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM architecture configuration if KVM required and available" )
+ public void testTransformationSpecificQemuArchitectureKvm() throws TransformationException
+ {
+ final TransformationSpecificQemuArchitectureStub transformation;
+ transformation = new TransformationSpecificQemuArchitectureStub( "qemu-kvm_capabilities_default.xml" );
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+
+ assertEquals( Type.KVM, config.getType() );
+ assertEquals( "x86_64", config.getOsArch() );
+ assertEquals( "pc-q35-5.1", config.getOsMachine() );
+ assertEquals( OsType.HVM, config.getOsType() );
+
+ transformation.transform( config, null );
+
+ assertEquals( Type.KVM, config.getType() );
+ assertEquals( "x86_64", config.getOsArch() );
+ assertEquals( "pc-q35-5.1", config.getOsMachine() );
+ assertEquals( OsType.HVM, config.getOsType() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM architecture configuration if KVM required but not available" )
+ public void testTransformationSpecificQemuArchitectureNoKvm() throws TransformationException
+ {
+ final TransformationSpecificQemuArchitectureStub transformation;
+ transformation = new TransformationSpecificQemuArchitectureStub( "qemu-kvm_capabilities_no-kvm.xml" );
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+
+ assertEquals( Type.KVM, config.getType() );
+ assertEquals( "x86_64", config.getOsArch() );
+ assertEquals( "pc-q35-5.1", config.getOsMachine() );
+ assertEquals( OsType.HVM, config.getOsType() );
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, null ) );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM architecture configuration if version is not supported (machine version too new)" )
+ public void testTransformationSpecificQemuArchitectureMachineVersionDowngrade() throws TransformationException
+ {
+ final TransformationSpecificQemuArchitectureStub transformation;
+ transformation = new TransformationSpecificQemuArchitectureStub( "qemu-kvm_capabilities_old-version.xml" );
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+
+ assertEquals( Type.KVM, config.getType() );
+ assertEquals( "x86_64", config.getOsArch() );
+ assertEquals( "pc-q35-5.1", config.getOsMachine() );
+ assertEquals( OsType.HVM, config.getOsType() );
+
+ assertThrows( TransformationException.class, () -> transformation.transform( config, null ) );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevicesTest.java
new file mode 100644
index 00000000..270bfff9
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuSerialDevicesTest.java
@@ -0,0 +1,69 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.device.Serial;
+import org.openslx.libvirt.domain.device.Serial.Type;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+class TransformationSpecificQemuSerialDevicesStub extends TransformationSpecificQemuSerialDevices
+{
+ public TransformationSpecificQemuSerialDevicesStub()
+ {
+ super( null );
+ }
+}
+
+public class TransformationSpecificQemuSerialDevicesTest
+{
+ @Test
+ @DisplayName( "Test transformation of VM serial devices configuration with specified input data" )
+ public void testTransformationGenericSerialDevices() throws TransformationException
+ {
+ final TransformationSpecificQemuSerialDevicesStub transformation = new TransformationSpecificQemuSerialDevicesStub();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<Serial> devicesBeforeTransformation = config.getSerialDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+ final Serial serialDeviceBeforeTransformation = devicesBeforeTransformation.get( 0 );
+ assertEquals( Type.PTY, serialDeviceBeforeTransformation.getType() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Serial> devicesAfterTransformation = config.getSerialDevices();
+ assertEquals( 2, devicesAfterTransformation.size() );
+ final Serial serialDevice1AfterTransformation = devicesAfterTransformation.get( 0 );
+ assertEquals( Type.PTY, serialDevice1AfterTransformation.getType() );
+ final Serial serialDevice2AfterTransformation = devicesAfterTransformation.get( 1 );
+ assertEquals( Type.DEV, serialDevice2AfterTransformation.getType() );
+ assertEquals( TransformationTestUtils.DEFAULT_VM_SERIAL0, serialDevice2AfterTransformation.getSource() );
+ }
+
+ @Test
+ @DisplayName( "Test transformation of VM serial devices configuration with unspecified input data" )
+ public void testTransformationGenericSerialDevicesNoData() throws TransformationException
+ {
+ final TransformationSpecificQemuSerialDevicesStub transformation = new TransformationSpecificQemuSerialDevicesStub();
+ final Domain config = TransformationTestUtils.getDefaultDomain();
+ final CommandLineArgs args = TransformationTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<Serial> devicesBeforeTransformation = config.getSerialDevices();
+ assertEquals( 1, devicesBeforeTransformation.size() );
+ final Serial serialDeviceBeforeTransformation = devicesBeforeTransformation.get( 0 );
+ assertEquals( Type.PTY, serialDeviceBeforeTransformation.getType() );
+
+ transformation.transform( config, args );
+
+ final ArrayList<Serial> devicesAfterTransformation = config.getSerialDevices();
+ assertEquals( 1, devicesAfterTransformation.size() );
+ final Serial serialDeviceAfterTransformation = devicesBeforeTransformation.get( 0 );
+ assertEquals( Type.PTY, serialDeviceAfterTransformation.getType() );
+ }
+}