summaryrefslogtreecommitdiffstats
path: root/core/modules/qemu/runvirt-plugin-qemu/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/qemu/runvirt-plugin-qemu/src/test')
-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/cmdln/CommandLineArgsTest.java109
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java34
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java61
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java35
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java30
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java28
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestResources.java17
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestUtils.java112
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml986
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm.xml164
11 files changed, 1567 insertions, 17 deletions
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 126fd26d..9f8f925f 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( 1641, shortHelpOptionCorrectOutput.length() );
+ assertEquals( 2026, 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( 1641, longHelpOptionCorrectOutput.length() );
+ assertEquals( 2026, 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( 1641, shortHelpOptionIncorrectOutput.length() );
+ assertEquals( 2026, 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( 1641, longHelpOptionIncorrectOutput.length() );
+ assertEquals( 2026, longHelpOptionIncorrectOutput.length() );
assertEquals( 0, longHelpOptionIncorrectErrOutput.length() );
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgsTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgsTest.java
index 1399f9a4..ee3e0d1d 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgsTest.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/cmdln/CommandLineArgsTest.java
@@ -13,8 +13,8 @@ import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs.CmdLnOption;
public class CommandLineArgsTest
{
// @formatter:off
- private static final String CMDLN_PREFIX_OPTION_SHORT = "-";
- private static final String CMDLN_PREFIX_OPTION_LONG = "--";
+ public static final String CMDLN_PREFIX_OPTION_SHORT = "-";
+ public static final String CMDLN_PREFIX_OPTION_LONG = "--";
private static final String CMDLN_TEST_NAME = "test";
private static final String CMDLN_TEST_FILENAME = System.getProperty( "user.dir" ) + File.separator + CMDLN_TEST_NAME;
@@ -25,7 +25,6 @@ public class CommandLineArgsTest
private static final String CMDLN_TEST_PARPORT = "/dev/parport0";
private static final String CMDLN_TEST_SERPORT = "/dev/ttyS0";
private static final String CMDLN_TEST_MAC = "02:42:8e:77:1b:e6";
- private static final String CMDLN_TEST_AUDIO_MODEL = "sb16";
// @formatter:on
@Test
@@ -519,30 +518,114 @@ public class CommandLineArgsTest
}
@Test
- @DisplayName( "Test the parsing of the VM first sound card type command line option (short version)" )
- public void testCmdlnOptionVmAudio0Short() throws CommandLineArgsException
+ @DisplayName( "Test the parsing of the VM first file system source command line option (short version)" )
+ public void testCmdlnOptionVmFsSrc0Short() throws CommandLineArgsException
{
final String[] args = {
- CMDLN_PREFIX_OPTION_SHORT + CmdLnOption.VM_AUDIO0.getShortOption(),
- CMDLN_TEST_AUDIO_MODEL
+ CMDLN_PREFIX_OPTION_SHORT + CmdLnOption.VM_FSSRC0.getShortOption(),
+ CMDLN_TEST_FILENAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_FILENAME, cmdLn.getVmFsSrc0() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM first file system source command line option (long version)" )
+ public void testCmdlnOptionVmFsSrc0Long() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSSRC0.getLongOption(),
+ CMDLN_TEST_FILENAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_FILENAME, cmdLn.getVmFsSrc0() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM first file system target command line option (short version)" )
+ public void testCmdlnOptionVmFsTgt0Short() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_SHORT + CmdLnOption.VM_FSTGT0.getShortOption(),
+ CMDLN_TEST_NAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_NAME, cmdLn.getVmFsTgt0() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM first file system target command line option (long version)" )
+ public void testCmdlnOptionVmFsTgt0Long() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSTGT0.getLongOption(),
+ CMDLN_TEST_NAME
};
CommandLineArgs cmdLn = new CommandLineArgs( args );
- assertEquals( CMDLN_TEST_AUDIO_MODEL, cmdLn.getVmModelSoundCard0() );
+ assertEquals( CMDLN_TEST_NAME, cmdLn.getVmFsTgt0() );
}
@Test
- @DisplayName( "Test the parsing of the VM first sound card type command line option (long version)" )
- public void testCmdlnOptionVmAudio0Long() throws CommandLineArgsException
+ @DisplayName( "Test the parsing of the VM second file system source command line option (short version)" )
+ public void testCmdlnOptionVmFsSrc1Short() throws CommandLineArgsException
{
final String[] args = {
- CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_AUDIO0.getLongOption(),
- CMDLN_TEST_AUDIO_MODEL
+ CMDLN_PREFIX_OPTION_SHORT + CmdLnOption.VM_FSSRC1.getShortOption(),
+ CMDLN_TEST_FILENAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_FILENAME, cmdLn.getVmFsSrc1() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM second file system source command line option (long version)" )
+ public void testCmdlnOptionVmFsSrc1Long() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSSRC1.getLongOption(),
+ CMDLN_TEST_FILENAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_FILENAME, cmdLn.getVmFsSrc1() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM second file system target command line option (short version)" )
+ public void testCmdlnOptionVmFsTgt1Short() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_SHORT + CmdLnOption.VM_FSTGT1.getShortOption(),
+ CMDLN_TEST_NAME
+ };
+
+ CommandLineArgs cmdLn = new CommandLineArgs( args );
+
+ assertEquals( CMDLN_TEST_NAME, cmdLn.getVmFsTgt1() );
+ }
+
+ @Test
+ @DisplayName( "Test the parsing of the VM second file system target command line option (long version)" )
+ public void testCmdlnOptionVmFsTgt1Long() throws CommandLineArgsException
+ {
+ final String[] args = {
+ CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSTGT1.getLongOption(),
+ CMDLN_TEST_NAME
};
CommandLineArgs cmdLn = new CommandLineArgs( args );
- assertEquals( CMDLN_TEST_AUDIO_MODEL, cmdLn.getVmModelSoundCard0() );
+ assertEquals( CMDLN_TEST_NAME, cmdLn.getVmFsTgt1() );
}
}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java
new file mode 100644
index 00000000..3814bfb6
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericCpuTest.java
@@ -0,0 +1,34 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.Domain.CpuCheck;
+import org.openslx.libvirt.domain.Domain.CpuMode;
+import org.openslx.runvirt.configuration.FilterException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+
+public class FilterGenericCpuTest
+{
+ @Test
+ @DisplayName( "Test filtering of VM CPU configuration" )
+ public void testFilterGenericCpu() throws FilterException
+ {
+ final FilterGenericCpu filter = new FilterGenericCpu();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs();
+
+ assertNotEquals( Integer.parseInt( FilterTestUtils.DEFAULT_VM_NCPUS ), config.getVCpu() );
+ assertNotEquals( CpuMode.HOST_PASSTHROUGH, config.getCpuMode() );
+ assertEquals( CpuCheck.PARTIAL, config.getCpuCheck() );
+
+ filter.filter( config, args );
+
+ assertEquals( Integer.parseInt( FilterTestUtils.DEFAULT_VM_NCPUS ), config.getVCpu() );
+ assertEquals( CpuMode.HOST_PASSTHROUGH, config.getCpuMode() );
+ assertEquals( CpuCheck.PARTIAL, config.getCpuCheck() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.java
new file mode 100644
index 00000000..93282e78
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericDiskStorageDevicesTest.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.DiskStorage;
+import org.openslx.runvirt.configuration.FilterException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+
+public class FilterGenericDiskStorageDevicesTest
+{
+ @Test
+ @DisplayName( "Test filtering of VM disk storage devices configuration with specified input data" )
+ public void testFilterGenericDiskStorageDevices() throws FilterException
+ {
+ final FilterGenericDiskStorageDevices filter = new FilterGenericDiskStorageDevices();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs();
+
+ final ArrayList<DiskStorage> devicesBeforeFiltering = config.getDiskStorageDevices();
+ assertEquals( 1, devicesBeforeFiltering.size() );
+ assertNotEquals( StorageType.FILE, devicesBeforeFiltering.get( 0 ).getStorageType() );
+ assertNotEquals( FilterTestUtils.DEFAULT_VM_HDD0, devicesBeforeFiltering.get( 0 ).getStorageSource() );
+
+ filter.filter( config, args );
+
+ final ArrayList<DiskStorage> devicesAfterFiltering = config.getDiskStorageDevices();
+ assertEquals( 1, devicesAfterFiltering.size() );
+ assertEquals( StorageType.FILE, devicesAfterFiltering.get( 0 ).getStorageType() );
+ assertEquals( FilterTestUtils.DEFAULT_VM_HDD0, devicesAfterFiltering.get( 0 ).getStorageSource() );
+ }
+
+ @Test
+ @DisplayName( "Test filtering of VM disk storage devices configuration with unspecified input data" )
+ public void testFilterGenericDiskStorageDevicesNoData() throws FilterException
+ {
+ final FilterGenericDiskStorageDevices filter = new FilterGenericDiskStorageDevices();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getEmptyCmdLnArgs();
+
+ final ArrayList<DiskStorage> devicesBeforeFiltering = config.getDiskStorageDevices();
+ assertEquals( 1, devicesBeforeFiltering.size() );
+
+ filter.filter( config, args );
+
+ final ArrayList<DiskStorage> devicesAfterFiltering = config.getDiskStorageDevices();
+ assertEquals( 0, devicesAfterFiltering.size() );
+ }
+
+ public static void main( String[] args ) throws FilterException
+ {
+ FilterGenericDiskStorageDevicesTest test = new FilterGenericDiskStorageDevicesTest();
+ test.testFilterGenericDiskStorageDevicesNoData();
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java
new file mode 100644
index 00000000..794e251c
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericMemoryTest.java
@@ -0,0 +1,35 @@
+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.math.BigInteger;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.DomainUtils;
+import org.openslx.runvirt.configuration.FilterException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+
+public class FilterGenericMemoryTest
+{
+ @Test
+ @DisplayName( "Test filtering of VM memory configuration" )
+ public void testFilterGenericMemory() throws FilterException
+ {
+ final FilterGenericMemory filter = new FilterGenericMemory();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs();
+
+ final BigInteger defaultMemory = DomainUtils.decodeMemory( FilterTestUtils.DEFAULT_VM_MEM, "MiB" );
+
+ assertNotEquals( defaultMemory.toString(), config.getMemory().toString() );
+ assertNotEquals( defaultMemory.toString(), config.getCurrentMemory().toString() );
+
+ filter.filter( config, args );
+
+ assertEquals( defaultMemory.toString(), config.getMemory().toString() );
+ assertEquals( defaultMemory.toString(), config.getCurrentMemory().toString() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java
new file mode 100644
index 00000000..93224702
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericNameTest.java
@@ -0,0 +1,30 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.runvirt.configuration.FilterException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+
+public class FilterGenericNameTest
+{
+ @Test
+ @DisplayName( "Test filtering of VM (display) name configuration" )
+ public void testFilterGenericName() throws FilterException
+ {
+ final FilterGenericName filter = new FilterGenericName();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs();
+
+ assertNotEquals( FilterTestUtils.DEFAULT_VM_NAME, config.getName() );
+ assertNotEquals( FilterTestUtils.DEFAULT_VM_DSPLNAME, config.getTitle() );
+
+ filter.filter( config, args );
+
+ assertEquals( FilterTestUtils.DEFAULT_VM_NAME, config.getName() );
+ assertEquals( FilterTestUtils.DEFAULT_VM_DSPLNAME, config.getTitle() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java
new file mode 100644
index 00000000..c206b0e9
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterGenericUuidTest.java
@@ -0,0 +1,28 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.runvirt.configuration.FilterException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+
+public class FilterGenericUuidTest
+{
+ @Test
+ @DisplayName( "Test filtering of VM UUID configuration" )
+ public void testFilterGenericUuid() throws FilterException
+ {
+ final FilterGenericUuid filter = new FilterGenericUuid();
+ final Domain config = FilterTestUtils.getDefaultDomain();
+ final CommandLineArgs args = FilterTestUtils.getDefaultCmdLnArgs();
+
+ assertNotEquals( FilterTestUtils.DEFAULT_VM_UUID, config.getUuid() );
+
+ filter.filter( config, args );
+
+ assertEquals( FilterTestUtils.DEFAULT_VM_UUID, config.getUuid() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestResources.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestResources.java
new file mode 100644
index 00000000..80fa2636
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestResources.java
@@ -0,0 +1,17 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import java.io.File;
+import java.net.URL;
+
+public class FilterTestResources
+{
+ private static final String LIBVIRT_PREFIX_PATH = File.separator + "libvirt";
+ private static final String LIBVIRT_PREFIX_PATH_XML = LIBVIRT_PREFIX_PATH + File.separator + "xml";
+
+ public static File getLibvirtXmlFile( String libvirtXmlFileName )
+ {
+ String libvirtXmlPath = FilterTestResources.LIBVIRT_PREFIX_PATH_XML + File.separator + libvirtXmlFileName;
+ URL libvirtXml = FilterTestResources.class.getResource( libvirtXmlPath );
+ return new File( libvirtXml.getFile() );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestUtils.java b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestUtils.java
new file mode 100644
index 00000000..45abb025
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/java/org/openslx/runvirt/plugin/qemu/configuration/FilterTestUtils.java
@@ -0,0 +1,112 @@
+package org.openslx.runvirt.plugin.qemu.configuration;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.xml.LibvirtXmlDocumentException;
+import org.openslx.libvirt.xml.LibvirtXmlSerializationException;
+import org.openslx.libvirt.xml.LibvirtXmlValidationException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs.CmdLnOption;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgsException;
+import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgsTest;
+
+public class FilterTestUtils
+{
+ // @formatter:off
+ public static final String DEFAULT_VM_NAME = "archlinux";
+ public static final String DEFAULT_VM_UUID = "4ec504d5-5eac-482f-a344-dbf1dd4956c8";
+ public static final String DEFAULT_VM_DSPLNAME = "Archlinux";
+ public static final String DEFAULT_VM_OS = "Windows 10 (x64)";
+ public static final String DEFAULT_VM_NCPUS = "16";
+ public static final String DEFAULT_VM_MEM = "1024";
+ 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/sr0";
+ public static final String DEFAULT_VM_CDROM1 = "/mnt/vm/cdrom1.qcow2";
+ 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";
+ public static final String DEFAULT_VM_FSSRC0 = "/mnt/shared/folder0";
+ public static final String DEFAULT_VM_FSTGT0 = "folder0";
+ public static final String DEFAULT_VM_FSSRC1 = "/mnt/shared/folder1";
+ public static final String DEFAULT_VM_FSTGT1 = "folder1";
+ // @formatter:on
+
+ private static final String[] DEFAULT_CMDLN_ARGS = {
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_NAME.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_NAME,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_UUID.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_UUID,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_DSPLNAME.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_DSPLNAME,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_OS.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_OS,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_NCPUS.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_NCPUS,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_MEM.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_MEM,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_HDD0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_HDD0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FLOPPY0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FLOPPY0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FLOPPY1.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FLOPPY1,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_CDROM0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_CDROM0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_CDROM1.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_CDROM1,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_PARALLEL0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_PARALLEL0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_SERIAL0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_SERIAL0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_MAC0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_MAC0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSSRC0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FSSRC0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSTGT0.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FSTGT0,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSSRC1.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FSSRC1,
+ CommandLineArgsTest.CMDLN_PREFIX_OPTION_LONG + CmdLnOption.VM_FSTGT1.getLongOption(),
+ FilterTestUtils.DEFAULT_VM_FSTGT1
+ };
+
+ private static CommandLineArgs getCmdLnArgs( String[] args )
+ {
+ final CommandLineArgs cmdLnArgs = new CommandLineArgs();
+
+ try {
+ cmdLnArgs.parseCmdLnArgs( args );
+ } catch ( CommandLineArgsException e ) {
+ fail( e.getLocalizedMessage() );
+ }
+
+ return cmdLnArgs;
+ }
+
+ public static CommandLineArgs getDefaultCmdLnArgs()
+ {
+ return FilterTestUtils.getCmdLnArgs( FilterTestUtils.DEFAULT_CMDLN_ARGS );
+ }
+
+ public static CommandLineArgs getEmptyCmdLnArgs()
+ {
+ return FilterTestUtils.getCmdLnArgs( new String[] {} );
+ }
+
+ public static Domain getDefaultDomain()
+ {
+ Domain domain = null;
+
+ try {
+ domain = new Domain( FilterTestResources.getLibvirtXmlFile( "qemu-kvm_default-ubuntu-20-04-vm.xml" ) );
+ } catch ( LibvirtXmlDocumentException | LibvirtXmlSerializationException | LibvirtXmlValidationException e ) {
+ fail( "Cannot prepare requested Libvirt domain XML file from the resources folder: "
+ + e.getLocalizedMessage() );
+ }
+
+ return domain;
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml b/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml
new file mode 100644
index 00000000..4f2a94f2
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_capabilities_default.xml
@@ -0,0 +1,986 @@
+<capabilities>
+
+ <host>
+ <uuid>9b2f12af-1fba-444c-b72b-9cbc43fb3ca5</uuid>
+ <cpu>
+ <arch>x86_64</arch>
+ <model>Skylake-Client-IBRS</model>
+ <vendor>Intel</vendor>
+ <microcode version='226'/>
+ <counter name='tsc' frequency='3191999000' scaling='no'/>
+ <topology sockets='1' dies='1' cores='4' threads='1'/>
+ <feature name='ds'/>
+ <feature name='acpi'/>
+ <feature name='ss'/>
+ <feature name='ht'/>
+ <feature name='tm'/>
+ <feature name='pbe'/>
+ <feature name='dtes64'/>
+ <feature name='monitor'/>
+ <feature name='ds_cpl'/>
+ <feature name='vmx'/>
+ <feature name='smx'/>
+ <feature name='est'/>
+ <feature name='tm2'/>
+ <feature name='xtpr'/>
+ <feature name='pdcm'/>
+ <feature name='osxsave'/>
+ <feature name='tsc_adjust'/>
+ <feature name='clflushopt'/>
+ <feature name='intel-pt'/>
+ <feature name='md-clear'/>
+ <feature name='stibp'/>
+ <feature name='ssbd'/>
+ <feature name='xsaves'/>
+ <feature name='pdpe1gb'/>
+ <feature name='invtsc'/>
+ <pages unit='KiB' size='4'/>
+ <pages unit='KiB' size='2048'/>
+ <pages unit='KiB' size='1048576'/>
+ </cpu>
+ <power_management>
+ <suspend_mem/>
+ </power_management>
+ <iommu support='yes'/>
+ <migration_features>
+ <live/>
+ <uri_transports>
+ <uri_transport>tcp</uri_transport>
+ <uri_transport>rdma</uri_transport>
+ </uri_transports>
+ </migration_features>
+ <topology>
+ <cells num='1'>
+ <cell id='0'>
+ <memory unit='KiB'>16161320</memory>
+ <pages unit='KiB' size='4'>4040330</pages>
+ <pages unit='KiB' size='2048'>0</pages>
+ <pages unit='KiB' size='1048576'>0</pages>
+ <distances>
+ <sibling id='0' value='10'/>
+ </distances>
+ <cpus num='4'>
+ <cpu id='0' socket_id='0' die_id='0' core_id='0' siblings='0'/>
+ <cpu id='1' socket_id='0' die_id='0' core_id='1' siblings='1'/>
+ <cpu id='2' socket_id='0' die_id='0' core_id='2' siblings='2'/>
+ <cpu id='3' socket_id='0' die_id='0' core_id='3' siblings='3'/>
+ </cpus>
+ </cell>
+ </cells>
+ </topology>
+ <cache>
+ <bank id='0' level='3' type='both' size='6' unit='MiB' cpus='0-3'/>
+ </cache>
+ <secmodel>
+ <model>none</model>
+ <doi>0</doi>
+ </secmodel>
+ </host>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='alpha'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-alpha</emulator>
+ <machine maxCpus='4'>clipper</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='armv6l'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-arm</emulator>
+ <machine maxCpus='1'>integratorcp</machine>
+ <machine maxCpus='2'>ast2600-evb</machine>
+ <machine maxCpus='1'>borzoi</machine>
+ <machine maxCpus='1'>spitz</machine>
+ <machine maxCpus='255'>virt-2.7</machine>
+ <machine maxCpus='2'>nuri</machine>
+ <machine maxCpus='2'>mcimx7d-sabre</machine>
+ <machine maxCpus='1'>romulus-bmc</machine>
+ <machine maxCpus='512'>virt-3.0</machine>
+ <machine maxCpus='512'>virt-5.0</machine>
+ <machine maxCpus='2'>npcm750-evb</machine>
+ <machine maxCpus='255'>virt-2.10</machine>
+ <machine maxCpus='2'>musca-b1</machine>
+ <machine maxCpus='255'>virt-2.8</machine>
+ <machine maxCpus='4'>realview-pbx-a9</machine>
+ <machine maxCpus='1'>versatileab</machine>
+ <machine maxCpus='1'>kzm</machine>
+ <machine maxCpus='2'>musca-a</machine>
+ <machine maxCpus='512'>virt-3.1</machine>
+ <machine maxCpus='1'>mcimx6ul-evk</machine>
+ <machine maxCpus='512'>virt-5.1</machine>
+ <machine maxCpus='2'>smdkc210</machine>
+ <machine maxCpus='1'>sx1</machine>
+ <machine maxCpus='255'>virt-2.11</machine>
+ <machine maxCpus='1'>imx25-pdk</machine>
+ <machine maxCpus='255'>virt-2.9</machine>
+ <machine maxCpus='4'>orangepi-pc</machine>
+ <machine maxCpus='1'>z2</machine>
+ <machine maxCpus='512'>virt-5.2</machine>
+ <machine canonical='virt-5.2' maxCpus='512'>virt</machine>
+ <machine maxCpus='1'>xilinx-zynq-a9</machine>
+ <machine maxCpus='1'>tosa</machine>
+ <machine maxCpus='1'>mps2-an500</machine>
+ <machine maxCpus='255'>virt-2.12</machine>
+ <machine maxCpus='2'>mps2-an521</machine>
+ <machine maxCpus='4'>sabrelite</machine>
+ <machine maxCpus='1'>mps2-an511</machine>
+ <machine maxCpus='1'>canon-a1100</machine>
+ <machine maxCpus='1'>realview-eb</machine>
+ <machine maxCpus='1'>emcraft-sf2</machine>
+ <machine maxCpus='1'>realview-pb-a8</machine>
+ <machine maxCpus='512'>virt-4.0</machine>
+ <machine maxCpus='1'>raspi1ap</machine>
+ <machine maxCpus='1'>palmetto-bmc</machine>
+ <machine maxCpus='1'>sx1-v1</machine>
+ <machine maxCpus='1'>n810</machine>
+ <machine maxCpus='2'>tacoma-bmc</machine>
+ <machine maxCpus='1'>n800</machine>
+ <machine maxCpus='512'>virt-4.1</machine>
+ <machine maxCpus='2'>quanta-gsj</machine>
+ <machine maxCpus='1'>versatilepb</machine>
+ <machine maxCpus='1'>terrier</machine>
+ <machine maxCpus='1'>mainstone</machine>
+ <machine maxCpus='4'>realview-eb-mpcore</machine>
+ <machine maxCpus='1'>supermicrox11-bmc</machine>
+ <machine maxCpus='512'>virt-4.2</machine>
+ <machine maxCpus='1'>witherspoon-bmc</machine>
+ <machine maxCpus='1'>swift-bmc</machine>
+ <machine maxCpus='4'>vexpress-a9</machine>
+ <machine maxCpus='4'>midway</machine>
+ <machine maxCpus='1'>musicpal</machine>
+ <machine maxCpus='1'>lm3s811evb</machine>
+ <machine maxCpus='1'>lm3s6965evb</machine>
+ <machine maxCpus='1'>microbit</machine>
+ <machine maxCpus='1'>mps2-an505</machine>
+ <machine maxCpus='1'>mps2-an385</machine>
+ <machine maxCpus='1'>cubieboard</machine>
+ <machine maxCpus='1'>verdex</machine>
+ <machine maxCpus='1'>netduino2</machine>
+ <machine maxCpus='1'>mps2-an386</machine>
+ <machine maxCpus='4'>raspi2b</machine>
+ <machine canonical='raspi2b' maxCpus='4'>raspi2</machine>
+ <machine maxCpus='4'>vexpress-a15</machine>
+ <machine maxCpus='1'>sonorapass-bmc</machine>
+ <machine maxCpus='1'>cheetah</machine>
+ <machine maxCpus='255'>virt-2.6</machine>
+ <machine maxCpus='1'>ast2500-evb</machine>
+ <machine maxCpus='4'>highbank</machine>
+ <machine maxCpus='1'>akita</machine>
+ <machine maxCpus='1'>connex</machine>
+ <machine maxCpus='1'>netduinoplus2</machine>
+ <machine maxCpus='1'>collie</machine>
+ <machine maxCpus='1'>raspi0</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='armv7l'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-arm</emulator>
+ <machine maxCpus='1'>integratorcp</machine>
+ <machine maxCpus='2'>ast2600-evb</machine>
+ <machine maxCpus='1'>borzoi</machine>
+ <machine maxCpus='1'>spitz</machine>
+ <machine maxCpus='255'>virt-2.7</machine>
+ <machine maxCpus='2'>nuri</machine>
+ <machine maxCpus='2'>mcimx7d-sabre</machine>
+ <machine maxCpus='1'>romulus-bmc</machine>
+ <machine maxCpus='512'>virt-3.0</machine>
+ <machine maxCpus='512'>virt-5.0</machine>
+ <machine maxCpus='2'>npcm750-evb</machine>
+ <machine maxCpus='255'>virt-2.10</machine>
+ <machine maxCpus='2'>musca-b1</machine>
+ <machine maxCpus='255'>virt-2.8</machine>
+ <machine maxCpus='4'>realview-pbx-a9</machine>
+ <machine maxCpus='1'>versatileab</machine>
+ <machine maxCpus='1'>kzm</machine>
+ <machine maxCpus='2'>musca-a</machine>
+ <machine maxCpus='512'>virt-3.1</machine>
+ <machine maxCpus='1'>mcimx6ul-evk</machine>
+ <machine maxCpus='512'>virt-5.1</machine>
+ <machine maxCpus='2'>smdkc210</machine>
+ <machine maxCpus='1'>sx1</machine>
+ <machine maxCpus='255'>virt-2.11</machine>
+ <machine maxCpus='1'>imx25-pdk</machine>
+ <machine maxCpus='255'>virt-2.9</machine>
+ <machine maxCpus='4'>orangepi-pc</machine>
+ <machine maxCpus='1'>z2</machine>
+ <machine maxCpus='512'>virt-5.2</machine>
+ <machine canonical='virt-5.2' maxCpus='512'>virt</machine>
+ <machine maxCpus='1'>xilinx-zynq-a9</machine>
+ <machine maxCpus='1'>tosa</machine>
+ <machine maxCpus='1'>mps2-an500</machine>
+ <machine maxCpus='255'>virt-2.12</machine>
+ <machine maxCpus='2'>mps2-an521</machine>
+ <machine maxCpus='4'>sabrelite</machine>
+ <machine maxCpus='1'>mps2-an511</machine>
+ <machine maxCpus='1'>canon-a1100</machine>
+ <machine maxCpus='1'>realview-eb</machine>
+ <machine maxCpus='1'>emcraft-sf2</machine>
+ <machine maxCpus='1'>realview-pb-a8</machine>
+ <machine maxCpus='512'>virt-4.0</machine>
+ <machine maxCpus='1'>raspi1ap</machine>
+ <machine maxCpus='1'>palmetto-bmc</machine>
+ <machine maxCpus='1'>sx1-v1</machine>
+ <machine maxCpus='1'>n810</machine>
+ <machine maxCpus='2'>tacoma-bmc</machine>
+ <machine maxCpus='1'>n800</machine>
+ <machine maxCpus='512'>virt-4.1</machine>
+ <machine maxCpus='2'>quanta-gsj</machine>
+ <machine maxCpus='1'>versatilepb</machine>
+ <machine maxCpus='1'>terrier</machine>
+ <machine maxCpus='1'>mainstone</machine>
+ <machine maxCpus='4'>realview-eb-mpcore</machine>
+ <machine maxCpus='1'>supermicrox11-bmc</machine>
+ <machine maxCpus='512'>virt-4.2</machine>
+ <machine maxCpus='1'>witherspoon-bmc</machine>
+ <machine maxCpus='1'>swift-bmc</machine>
+ <machine maxCpus='4'>vexpress-a9</machine>
+ <machine maxCpus='4'>midway</machine>
+ <machine maxCpus='1'>musicpal</machine>
+ <machine maxCpus='1'>lm3s811evb</machine>
+ <machine maxCpus='1'>lm3s6965evb</machine>
+ <machine maxCpus='1'>microbit</machine>
+ <machine maxCpus='1'>mps2-an505</machine>
+ <machine maxCpus='1'>mps2-an385</machine>
+ <machine maxCpus='1'>cubieboard</machine>
+ <machine maxCpus='1'>verdex</machine>
+ <machine maxCpus='1'>netduino2</machine>
+ <machine maxCpus='1'>mps2-an386</machine>
+ <machine maxCpus='4'>raspi2b</machine>
+ <machine canonical='raspi2b' maxCpus='4'>raspi2</machine>
+ <machine maxCpus='4'>vexpress-a15</machine>
+ <machine maxCpus='1'>sonorapass-bmc</machine>
+ <machine maxCpus='1'>cheetah</machine>
+ <machine maxCpus='255'>virt-2.6</machine>
+ <machine maxCpus='1'>ast2500-evb</machine>
+ <machine maxCpus='4'>highbank</machine>
+ <machine maxCpus='1'>akita</machine>
+ <machine maxCpus='1'>connex</machine>
+ <machine maxCpus='1'>netduinoplus2</machine>
+ <machine maxCpus='1'>collie</machine>
+ <machine maxCpus='1'>raspi0</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='aarch64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-aarch64</emulator>
+ <machine maxCpus='1'>integratorcp</machine>
+ <machine maxCpus='2'>ast2600-evb</machine>
+ <machine maxCpus='1'>borzoi</machine>
+ <machine maxCpus='1'>spitz</machine>
+ <machine maxCpus='255'>virt-2.7</machine>
+ <machine maxCpus='2'>nuri</machine>
+ <machine maxCpus='2'>mcimx7d-sabre</machine>
+ <machine maxCpus='1'>romulus-bmc</machine>
+ <machine maxCpus='512'>virt-3.0</machine>
+ <machine maxCpus='512'>virt-5.0</machine>
+ <machine maxCpus='2'>npcm750-evb</machine>
+ <machine maxCpus='255'>virt-2.10</machine>
+ <machine maxCpus='2'>musca-b1</machine>
+ <machine maxCpus='255'>virt-2.8</machine>
+ <machine maxCpus='4'>realview-pbx-a9</machine>
+ <machine maxCpus='1'>versatileab</machine>
+ <machine maxCpus='1'>kzm</machine>
+ <machine maxCpus='2'>musca-a</machine>
+ <machine maxCpus='512'>virt-3.1</machine>
+ <machine maxCpus='1'>mcimx6ul-evk</machine>
+ <machine maxCpus='512'>virt-5.1</machine>
+ <machine maxCpus='2'>smdkc210</machine>
+ <machine maxCpus='1'>sx1</machine>
+ <machine maxCpus='255'>virt-2.11</machine>
+ <machine maxCpus='1'>imx25-pdk</machine>
+ <machine maxCpus='255'>virt-2.9</machine>
+ <machine maxCpus='4'>orangepi-pc</machine>
+ <machine maxCpus='1'>z2</machine>
+ <machine maxCpus='512'>virt-5.2</machine>
+ <machine canonical='virt-5.2' maxCpus='512'>virt</machine>
+ <machine maxCpus='1'>xilinx-zynq-a9</machine>
+ <machine maxCpus='6'>xlnx-zcu102</machine>
+ <machine maxCpus='1'>tosa</machine>
+ <machine maxCpus='1'>mps2-an500</machine>
+ <machine maxCpus='255'>virt-2.12</machine>
+ <machine maxCpus='2'>mps2-an521</machine>
+ <machine maxCpus='4'>sabrelite</machine>
+ <machine maxCpus='1'>mps2-an511</machine>
+ <machine maxCpus='1'>canon-a1100</machine>
+ <machine maxCpus='1'>realview-eb</machine>
+ <machine maxCpus='1'>emcraft-sf2</machine>
+ <machine maxCpus='1'>realview-pb-a8</machine>
+ <machine maxCpus='512'>sbsa-ref</machine>
+ <machine maxCpus='512'>virt-4.0</machine>
+ <machine maxCpus='1'>raspi1ap</machine>
+ <machine maxCpus='1'>palmetto-bmc</machine>
+ <machine maxCpus='1'>sx1-v1</machine>
+ <machine maxCpus='1'>n810</machine>
+ <machine maxCpus='2'>tacoma-bmc</machine>
+ <machine maxCpus='1'>n800</machine>
+ <machine maxCpus='512'>virt-4.1</machine>
+ <machine maxCpus='2'>quanta-gsj</machine>
+ <machine maxCpus='1'>versatilepb</machine>
+ <machine maxCpus='1'>terrier</machine>
+ <machine maxCpus='1'>mainstone</machine>
+ <machine maxCpus='4'>realview-eb-mpcore</machine>
+ <machine maxCpus='1'>supermicrox11-bmc</machine>
+ <machine maxCpus='512'>virt-4.2</machine>
+ <machine maxCpus='1'>witherspoon-bmc</machine>
+ <machine maxCpus='1'>swift-bmc</machine>
+ <machine maxCpus='4'>vexpress-a9</machine>
+ <machine maxCpus='4'>midway</machine>
+ <machine maxCpus='1'>musicpal</machine>
+ <machine maxCpus='1'>lm3s811evb</machine>
+ <machine maxCpus='1'>lm3s6965evb</machine>
+ <machine maxCpus='1'>microbit</machine>
+ <machine maxCpus='1'>mps2-an505</machine>
+ <machine maxCpus='1'>mps2-an385</machine>
+ <machine maxCpus='4'>raspi3ap</machine>
+ <machine maxCpus='1'>cubieboard</machine>
+ <machine maxCpus='1'>verdex</machine>
+ <machine maxCpus='1'>netduino2</machine>
+ <machine maxCpus='2'>xlnx-versal-virt</machine>
+ <machine maxCpus='1'>mps2-an386</machine>
+ <machine maxCpus='4'>raspi3b</machine>
+ <machine canonical='raspi3b' maxCpus='4'>raspi3</machine>
+ <machine maxCpus='4'>raspi2b</machine>
+ <machine canonical='raspi2b' maxCpus='4'>raspi2</machine>
+ <machine maxCpus='4'>vexpress-a15</machine>
+ <machine maxCpus='1'>sonorapass-bmc</machine>
+ <machine maxCpus='1'>cheetah</machine>
+ <machine maxCpus='255'>virt-2.6</machine>
+ <machine maxCpus='1'>ast2500-evb</machine>
+ <machine maxCpus='4'>highbank</machine>
+ <machine maxCpus='1'>akita</machine>
+ <machine maxCpus='1'>connex</machine>
+ <machine maxCpus='1'>netduinoplus2</machine>
+ <machine maxCpus='1'>collie</machine>
+ <machine maxCpus='1'>raspi0</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <acpi default='on' toggle='yes'/>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='cris'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-cris</emulator>
+ <machine maxCpus='1'>axis-dev88</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='i686'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-i386</emulator>
+ <machine maxCpus='255'>pc-i440fx-5.2</machine>
+ <machine canonical='pc-i440fx-5.2' maxCpus='255'>pc</machine>
+ <machine maxCpus='288'>pc-q35-5.2</machine>
+ <machine canonical='pc-q35-5.2' maxCpus='288'>q35</machine>
+ <machine maxCpus='255'>pc-i440fx-2.12</machine>
+ <machine maxCpus='255'>pc-i440fx-2.0</machine>
+ <machine maxCpus='288'>pc-q35-4.2</machine>
+ <machine maxCpus='255'>pc-i440fx-2.5</machine>
+ <machine maxCpus='255'>pc-i440fx-4.2</machine>
+ <machine maxCpus='255'>pc-i440fx-1.5</machine>
+ <machine maxCpus='255'>pc-q35-2.7</machine>
+ <machine maxCpus='255'>pc-i440fx-2.2</machine>
+ <machine maxCpus='255'>pc-1.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.7</machine>
+ <machine maxCpus='255'>pc-q35-2.4</machine>
+ <machine maxCpus='288'>pc-q35-2.10</machine>
+ <machine maxCpus='255'>pc-i440fx-1.7</machine>
+ <machine maxCpus='288'>pc-q35-5.1</machine>
+ <machine maxCpus='288'>pc-q35-2.9</machine>
+ <machine maxCpus='255'>pc-i440fx-2.11</machine>
+ <machine maxCpus='288'>pc-q35-3.1</machine>
+ <machine maxCpus='288'>pc-q35-4.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.4</machine>
+ <machine maxCpus='255'>pc-1.3</machine>
+ <machine maxCpus='255'>pc-i440fx-4.1</machine>
+ <machine maxCpus='255'>pc-i440fx-5.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.9</machine>
+ <machine maxCpus='1'>isapc</machine>
+ <machine maxCpus='255'>pc-i440fx-1.4</machine>
+ <machine maxCpus='255'>pc-q35-2.6</machine>
+ <machine maxCpus='255'>pc-i440fx-3.1</machine>
+ <machine maxCpus='288'>pc-q35-2.12</machine>
+ <machine maxCpus='255'>pc-i440fx-2.1</machine>
+ <machine maxCpus='255'>pc-1.0</machine>
+ <machine maxCpus='255'>pc-i440fx-2.6</machine>
+ <machine maxCpus='288'>pc-q35-4.0.1</machine>
+ <machine maxCpus='255'>pc-i440fx-1.6</machine>
+ <machine maxCpus='288'>pc-q35-5.0</machine>
+ <machine maxCpus='288'>pc-q35-2.8</machine>
+ <machine maxCpus='255'>pc-i440fx-2.10</machine>
+ <machine maxCpus='288'>pc-q35-3.0</machine>
+ <machine maxCpus='288'>pc-q35-4.0</machine>
+ <machine maxCpus='288'>microvm</machine>
+ <machine maxCpus='255'>pc-i440fx-2.3</machine>
+ <machine maxCpus='255'>pc-1.2</machine>
+ <machine maxCpus='255'>pc-i440fx-4.0</machine>
+ <machine maxCpus='255'>pc-i440fx-5.0</machine>
+ <machine maxCpus='255'>pc-i440fx-2.8</machine>
+ <machine maxCpus='255'>pc-q35-2.5</machine>
+ <machine maxCpus='255'>pc-i440fx-3.0</machine>
+ <machine maxCpus='288'>pc-q35-2.11</machine>
+ <domain type='qemu'/>
+ <domain type='kvm'/>
+ </arch>
+ <features>
+ <pae/>
+ <nonpae/>
+ <acpi default='on' toggle='yes'/>
+ <apic default='on' toggle='no'/>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='m68k'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-m68k</emulator>
+ <machine maxCpus='1'>mcf5208evb</machine>
+ <machine maxCpus='1'>an5206</machine>
+ <machine maxCpus='1'>q800</machine>
+ <machine maxCpus='1'>next-cube</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='microblaze'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-microblaze</emulator>
+ <machine maxCpus='1'>petalogix-s3adsp1800</machine>
+ <machine maxCpus='1'>petalogix-ml605</machine>
+ <machine maxCpus='1'>xlnx-zynqmp-pmu</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='microblazeel'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-microblazeel</emulator>
+ <machine maxCpus='1'>petalogix-s3adsp1800</machine>
+ <machine maxCpus='1'>petalogix-ml605</machine>
+ <machine maxCpus='1'>xlnx-zynqmp-pmu</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='mips'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-mips</emulator>
+ <machine maxCpus='16'>malta</machine>
+ <machine maxCpus='1'>mipssim</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='mipsel'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-mipsel</emulator>
+ <machine maxCpus='16'>malta</machine>
+ <machine maxCpus='1'>mipssim</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='mips64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-mips64</emulator>
+ <machine maxCpus='16'>malta</machine>
+ <machine maxCpus='1'>pica61</machine>
+ <machine maxCpus='1'>mipssim</machine>
+ <machine maxCpus='1'>magnum</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='mips64el'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-mips64el</emulator>
+ <machine maxCpus='16'>malta</machine>
+ <machine maxCpus='1'>mipssim</machine>
+ <machine maxCpus='1'>pica61</machine>
+ <machine maxCpus='1'>magnum</machine>
+ <machine maxCpus='16'>boston</machine>
+ <machine maxCpus='1'>fuloong2e</machine>
+ <machine canonical='fuloong2e' maxCpus='1'>fulong2e</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='ppc'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-ppc</emulator>
+ <machine maxCpus='1'>g3beige</machine>
+ <machine maxCpus='1'>virtex-ml507</machine>
+ <machine maxCpus='1'>mac99</machine>
+ <machine maxCpus='32'>ppce500</machine>
+ <machine maxCpus='1'>sam460ex</machine>
+ <machine maxCpus='1'>bamboo</machine>
+ <machine maxCpus='1'>40p</machine>
+ <machine maxCpus='1'>ref405ep</machine>
+ <machine maxCpus='15'>mpc8544ds</machine>
+ <machine maxCpus='1'>taihu</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='ppc64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <machine maxCpus='1024'>pseries-5.2</machine>
+ <machine canonical='pseries-5.2' maxCpus='1024'>pseries</machine>
+ <machine maxCpus='2048'>powernv9</machine>
+ <machine canonical='powernv9' maxCpus='2048'>powernv</machine>
+ <machine maxCpus='1'>taihu</machine>
+ <machine maxCpus='1024'>pseries-4.1</machine>
+ <machine maxCpus='15'>mpc8544ds</machine>
+ <machine maxCpus='1024'>pseries-2.5</machine>
+ <machine maxCpus='2048'>powernv10</machine>
+ <machine maxCpus='1024'>pseries-4.2</machine>
+ <machine maxCpus='1024'>pseries-2.6</machine>
+ <machine maxCpus='32'>ppce500</machine>
+ <machine maxCpus='1024'>pseries-2.7</machine>
+ <machine maxCpus='1024'>pseries-3.0</machine>
+ <machine maxCpus='1024'>pseries-5.0</machine>
+ <machine maxCpus='1'>40p</machine>
+ <machine maxCpus='1024'>pseries-2.8</machine>
+ <machine maxCpus='1024'>pseries-3.1</machine>
+ <machine maxCpus='1024'>pseries-5.1</machine>
+ <machine maxCpus='1024'>pseries-2.9</machine>
+ <machine maxCpus='1'>bamboo</machine>
+ <machine maxCpus='1'>g3beige</machine>
+ <machine maxCpus='1024'>pseries-2.12-sxxm</machine>
+ <machine maxCpus='1024'>pseries-2.10</machine>
+ <machine maxCpus='1'>virtex-ml507</machine>
+ <machine maxCpus='1024'>pseries-2.11</machine>
+ <machine maxCpus='1024'>pseries-2.1</machine>
+ <machine maxCpus='1024'>pseries-2.12</machine>
+ <machine maxCpus='1024'>pseries-2.2</machine>
+ <machine maxCpus='1'>mac99</machine>
+ <machine maxCpus='1'>sam460ex</machine>
+ <machine maxCpus='1'>ref405ep</machine>
+ <machine maxCpus='1024'>pseries-2.3</machine>
+ <machine maxCpus='2048'>powernv8</machine>
+ <machine maxCpus='1024'>pseries-4.0</machine>
+ <machine maxCpus='1024'>pseries-2.4</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='ppc64le'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <machine maxCpus='1024'>pseries-5.2</machine>
+ <machine canonical='pseries-5.2' maxCpus='1024'>pseries</machine>
+ <machine maxCpus='2048'>powernv9</machine>
+ <machine canonical='powernv9' maxCpus='2048'>powernv</machine>
+ <machine maxCpus='1'>taihu</machine>
+ <machine maxCpus='1024'>pseries-4.1</machine>
+ <machine maxCpus='15'>mpc8544ds</machine>
+ <machine maxCpus='1024'>pseries-2.5</machine>
+ <machine maxCpus='2048'>powernv10</machine>
+ <machine maxCpus='1024'>pseries-4.2</machine>
+ <machine maxCpus='1024'>pseries-2.6</machine>
+ <machine maxCpus='32'>ppce500</machine>
+ <machine maxCpus='1024'>pseries-2.7</machine>
+ <machine maxCpus='1024'>pseries-3.0</machine>
+ <machine maxCpus='1024'>pseries-5.0</machine>
+ <machine maxCpus='1'>40p</machine>
+ <machine maxCpus='1024'>pseries-2.8</machine>
+ <machine maxCpus='1024'>pseries-3.1</machine>
+ <machine maxCpus='1024'>pseries-5.1</machine>
+ <machine maxCpus='1024'>pseries-2.9</machine>
+ <machine maxCpus='1'>bamboo</machine>
+ <machine maxCpus='1'>g3beige</machine>
+ <machine maxCpus='1024'>pseries-2.12-sxxm</machine>
+ <machine maxCpus='1024'>pseries-2.10</machine>
+ <machine maxCpus='1'>virtex-ml507</machine>
+ <machine maxCpus='1024'>pseries-2.11</machine>
+ <machine maxCpus='1024'>pseries-2.1</machine>
+ <machine maxCpus='1024'>pseries-2.12</machine>
+ <machine maxCpus='1024'>pseries-2.2</machine>
+ <machine maxCpus='1'>mac99</machine>
+ <machine maxCpus='1'>sam460ex</machine>
+ <machine maxCpus='1'>ref405ep</machine>
+ <machine maxCpus='1024'>pseries-2.3</machine>
+ <machine maxCpus='2048'>powernv8</machine>
+ <machine maxCpus='1024'>pseries-4.0</machine>
+ <machine maxCpus='1024'>pseries-2.4</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='riscv32'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-riscv32</emulator>
+ <machine maxCpus='8'>spike</machine>
+ <machine maxCpus='8'>virt</machine>
+ <machine maxCpus='1'>opentitan</machine>
+ <machine maxCpus='1'>sifive_e</machine>
+ <machine maxCpus='5'>sifive_u</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='riscv64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-riscv64</emulator>
+ <machine maxCpus='8'>spike</machine>
+ <machine maxCpus='8'>virt</machine>
+ <machine maxCpus='1'>sifive_e</machine>
+ <machine maxCpus='5'>sifive_u</machine>
+ <machine maxCpus='5'>microchip-icicle-kit</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='s390x'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <machine maxCpus='248'>s390-ccw-virtio-5.2</machine>
+ <machine canonical='s390-ccw-virtio-5.2' maxCpus='248'>s390-ccw-virtio</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-4.0</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-3.1</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.6</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.12</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.9</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-5.1</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-3.0</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-4.2</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.5</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.11</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.8</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-5.0</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-4.1</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.4</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.10</machine>
+ <machine maxCpus='248'>s390-ccw-virtio-2.7</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='sh4'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-sh4</emulator>
+ <machine maxCpus='1'>shix</machine>
+ <machine maxCpus='1'>r2d</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='sh4eb'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-sh4eb</emulator>
+ <machine maxCpus='1'>shix</machine>
+ <machine maxCpus='1'>r2d</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='sparc'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-sparc</emulator>
+ <machine maxCpus='1'>SS-5</machine>
+ <machine maxCpus='4'>SS-20</machine>
+ <machine maxCpus='1'>LX</machine>
+ <machine maxCpus='1'>SPARCClassic</machine>
+ <machine maxCpus='1'>leon3_generic</machine>
+ <machine maxCpus='1'>SPARCbook</machine>
+ <machine maxCpus='1'>SS-4</machine>
+ <machine maxCpus='4'>SS-600MP</machine>
+ <machine maxCpus='4'>SS-10</machine>
+ <machine maxCpus='1'>Voyager</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='sparc64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-sparc64</emulator>
+ <machine maxCpus='1'>sun4u</machine>
+ <machine maxCpus='1'>niagara</machine>
+ <machine maxCpus='1'>sun4v</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='x86_64'>
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <machine maxCpus='255'>pc-i440fx-5.2</machine>
+ <machine canonical='pc-i440fx-5.2' maxCpus='255'>pc</machine>
+ <machine maxCpus='288'>pc-q35-5.2</machine>
+ <machine canonical='pc-q35-5.2' maxCpus='288'>q35</machine>
+ <machine maxCpus='255'>pc-i440fx-2.12</machine>
+ <machine maxCpus='255'>pc-i440fx-2.0</machine>
+ <machine maxCpus='288'>pc-q35-4.2</machine>
+ <machine maxCpus='255'>pc-i440fx-2.5</machine>
+ <machine maxCpus='255'>pc-i440fx-4.2</machine>
+ <machine maxCpus='255'>pc-i440fx-1.5</machine>
+ <machine maxCpus='255'>pc-q35-2.7</machine>
+ <machine maxCpus='255'>pc-i440fx-2.2</machine>
+ <machine maxCpus='255'>pc-1.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.7</machine>
+ <machine maxCpus='255'>pc-q35-2.4</machine>
+ <machine maxCpus='288'>pc-q35-2.10</machine>
+ <machine maxCpus='255'>pc-i440fx-1.7</machine>
+ <machine maxCpus='288'>pc-q35-5.1</machine>
+ <machine maxCpus='288'>pc-q35-2.9</machine>
+ <machine maxCpus='255'>pc-i440fx-2.11</machine>
+ <machine maxCpus='288'>pc-q35-3.1</machine>
+ <machine maxCpus='288'>pc-q35-4.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.4</machine>
+ <machine maxCpus='255'>pc-1.3</machine>
+ <machine maxCpus='255'>pc-i440fx-4.1</machine>
+ <machine maxCpus='255'>pc-i440fx-5.1</machine>
+ <machine maxCpus='255'>pc-i440fx-2.9</machine>
+ <machine maxCpus='1'>isapc</machine>
+ <machine maxCpus='255'>pc-i440fx-1.4</machine>
+ <machine maxCpus='255'>pc-q35-2.6</machine>
+ <machine maxCpus='255'>pc-i440fx-3.1</machine>
+ <machine maxCpus='288'>pc-q35-2.12</machine>
+ <machine maxCpus='255'>pc-i440fx-2.1</machine>
+ <machine maxCpus='255'>pc-1.0</machine>
+ <machine maxCpus='255'>pc-i440fx-2.6</machine>
+ <machine maxCpus='288'>pc-q35-4.0.1</machine>
+ <machine maxCpus='255'>pc-i440fx-1.6</machine>
+ <machine maxCpus='288'>pc-q35-5.0</machine>
+ <machine maxCpus='288'>pc-q35-2.8</machine>
+ <machine maxCpus='255'>pc-i440fx-2.10</machine>
+ <machine maxCpus='288'>pc-q35-3.0</machine>
+ <machine maxCpus='288'>pc-q35-4.0</machine>
+ <machine maxCpus='288'>microvm</machine>
+ <machine maxCpus='255'>pc-i440fx-2.3</machine>
+ <machine maxCpus='255'>pc-1.2</machine>
+ <machine maxCpus='255'>pc-i440fx-4.0</machine>
+ <machine maxCpus='255'>pc-i440fx-5.0</machine>
+ <machine maxCpus='255'>pc-i440fx-2.8</machine>
+ <machine maxCpus='255'>pc-q35-2.5</machine>
+ <machine maxCpus='255'>pc-i440fx-3.0</machine>
+ <machine maxCpus='288'>pc-q35-2.11</machine>
+ <domain type='qemu'/>
+ <domain type='kvm'/>
+ </arch>
+ <features>
+ <acpi default='on' toggle='yes'/>
+ <apic default='on' toggle='no'/>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='xtensa'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-xtensa</emulator>
+ <machine maxCpus='4'>sim</machine>
+ <machine maxCpus='32'>kc705</machine>
+ <machine maxCpus='32'>ml605</machine>
+ <machine maxCpus='32'>ml605-nommu</machine>
+ <machine maxCpus='32'>virt</machine>
+ <machine maxCpus='32'>lx60-nommu</machine>
+ <machine maxCpus='32'>lx200</machine>
+ <machine maxCpus='32'>lx200-nommu</machine>
+ <machine maxCpus='32'>lx60</machine>
+ <machine maxCpus='32'>kc705-nommu</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name='xtensaeb'>
+ <wordsize>32</wordsize>
+ <emulator>/usr/bin/qemu-system-xtensaeb</emulator>
+ <machine maxCpus='4'>sim</machine>
+ <machine maxCpus='32'>kc705</machine>
+ <machine maxCpus='32'>ml605</machine>
+ <machine maxCpus='32'>ml605-nommu</machine>
+ <machine maxCpus='32'>virt</machine>
+ <machine maxCpus='32'>lx60-nommu</machine>
+ <machine maxCpus='32'>lx200</machine>
+ <machine maxCpus='32'>lx200-nommu</machine>
+ <machine maxCpus='32'>lx60</machine>
+ <machine maxCpus='32'>kc705-nommu</machine>
+ <domain type='qemu'/>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default='on' toggle='no'/>
+ </features>
+ </guest>
+
+</capabilities>
+
+
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm.xml b/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm.xml
new file mode 100644
index 00000000..241a6807
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm.xml
@@ -0,0 +1,164 @@
+<domain type='kvm'>
+ <name>ubuntu-20-04</name>
+ <uuid>8dc5433c-0228-49e4-b019-fa2b606aa544</uuid>
+ <title>Ubuntu 20.04</title>
+ <description>Ubuntu 20.04 desktop installation</description>
+ <metadata>
+ <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
+ <libosinfo:os id="http://ubuntu.com/ubuntu/20.04"/>
+ </libosinfo:libosinfo>
+ </metadata>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>2</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc-q35-5.1'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <vmport state='off'/>
+ </features>
+ <cpu mode='host-model' check='partial'/>
+ <clock offset='utc'>
+ <timer name='rtc' tickpolicy='catchup'/>
+ <timer name='pit' tickpolicy='delay'/>
+ <timer name='hpet' present='no'/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <pm>
+ <suspend-to-mem enabled='no'/>
+ <suspend-to-disk enabled='no'/>
+ </pm>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <disk type='block' device='disk'>
+ <driver name='qemu' type='raw' cache='none' io='native'/>
+ <source dev='/dev/data/ubuntu-20-04.img'/>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
+ </disk>
+ <disk type='file' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <target dev='sda' bus='sata'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <disk type='file' device='floppy'>
+ <driver name='qemu' type='raw'/>
+ <target dev='fda' bus='fdc'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0' model='ich9-ehci1'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x7'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci1'>
+ <master startport='0'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0' multifunction='on'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci2'>
+ <master startport='2'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x1'/>
+ </controller>
+ <controller type='usb' index='0' model='ich9-uhci3'>
+ <master startport='4'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x2'/>
+ </controller>
+ <controller type='sata' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
+ </controller>
+ <controller type='pci' index='0' model='pcie-root'/>
+ <controller type='pci' index='1' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='1' port='0x10'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
+ </controller>
+ <controller type='pci' index='2' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='2' port='0x11'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
+ </controller>
+ <controller type='pci' index='3' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='3' port='0x12'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
+ </controller>
+ <controller type='pci' index='4' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='4' port='0x13'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
+ </controller>
+ <controller type='pci' index='5' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='5' port='0x14'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
+ </controller>
+ <controller type='pci' index='6' model='pcie-root-port'>
+ <model name='pcie-root-port'/>
+ <target chassis='6' port='0x15'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
+ </controller>
+ <controller type='virtio-serial' index='0'>
+ <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
+ </controller>
+ <controller type='scsi' index='0' model='virtio-scsi'>
+ <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
+ </controller>
+ <controller type='fdc' index='0'/>
+ <interface type='network'>
+ <mac address='52:54:00:0d:90:0c'/>
+ <source network='default'/>
+ <model type='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
+ </interface>
+ <serial type='pty'>
+ <target type='isa-serial' port='0'>
+ <model name='isa-serial'/>
+ </target>
+ </serial>
+ <console type='pty'>
+ <target type='serial' port='0'/>
+ </console>
+ <channel type='unix'>
+ <target type='virtio' name='org.qemu.guest_agent.0'/>
+ <address type='virtio-serial' controller='0' bus='0' port='1'/>
+ </channel>
+ <channel type='spicevmc'>
+ <target type='virtio' name='com.redhat.spice.0'/>
+ <address type='virtio-serial' controller='0' bus='0' port='2'/>
+ </channel>
+ <input type='tablet' bus='usb'>
+ <address type='usb' bus='0' port='1'/>
+ </input>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <graphics type='spice' autoport='yes'>
+ <listen type='address'/>
+ <image compression='off'/>
+ </graphics>
+ <sound model='ich9'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
+ </sound>
+ <video>
+ <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
+ </video>
+ <redirdev bus='usb' type='spicevmc'>
+ <address type='usb' bus='0' port='2'/>
+ </redirdev>
+ <redirdev bus='usb' type='spicevmc'>
+ <address type='usb' bus='0' port='3'/>
+ </redirdev>
+ <memballoon model='virtio'>
+ <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
+ </memballoon>
+ <rng model='virtio'>
+ <backend model='random'>/dev/urandom</backend>
+ <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
+ </rng>
+ </devices>
+</domain>
+