summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorManuel Bentele2021-11-30 09:08:03 +0100
committerManuel Bentele2021-11-30 09:08:03 +0100
commit8f1c0f8dacf3a5216276f0981d3f5753c75ed750 (patch)
tree7bc00214f63d0cac2638a55837a8029bf7692027 /src/test
parentAdd CPU topology functionality for Libvirt domain XML configs (diff)
downloadmaster-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.tar.gz
master-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.tar.xz
master-sync-shared-8f1c0f8dacf3a5216276f0981d3f5753c75ed750.zip
Add firmware loader lookup algorithm for Libvirt/QEMU machines
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/openslx/firmware/QemuFirmwareTest.java45
-rw-r--r--src/test/java/org/openslx/firmware/QemuFirmwareTestResources.java100
-rw-r--r--src/test/java/org/openslx/firmware/QemuFirmwareUtilTest.java98
-rw-r--r--src/test/java/org/openslx/libvirt/domain/DomainTest.java116
-rw-r--r--src/test/resources/qemu/firmware/50-edk2-i386-secure.json34
-rw-r--r--src/test/resources/qemu/firmware/50-edk2-x86_64-secure.json35
-rw-r--r--src/test/resources/qemu/firmware/60-edk2-aarch64.json31
-rw-r--r--src/test/resources/qemu/firmware/60-edk2-arm.json31
-rw-r--r--src/test/resources/qemu/firmware/60-edk2-i386.json33
-rw-r--r--src/test/resources/qemu/firmware/60-edk2-x86_64.json34
10 files changed, 499 insertions, 58 deletions
diff --git a/src/test/java/org/openslx/firmware/QemuFirmwareTest.java b/src/test/java/org/openslx/firmware/QemuFirmwareTest.java
new file mode 100644
index 0000000..3088265
--- /dev/null
+++ b/src/test/java/org/openslx/firmware/QemuFirmwareTest.java
@@ -0,0 +1,45 @@
+package org.openslx.firmware;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import java.io.File;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class QemuFirmwareTest
+{
+ @Test
+ @DisplayName( "Test parsing of valid QEMU firmware specification file" )
+ public void testQemuFirmwareFromFwSpecValid()
+ {
+ final File fwSpecFile = QemuFirmwareTestResources.getQemuFirmwareSpecFile( "60-edk2-x86_64.json" );
+
+ final QemuFirmware firmware = QemuFirmware.fromFwSpec( fwSpecFile );
+
+ assertNotNull( firmware );
+ assertEquals( "UEFI firmware for x86_64", firmware.getDescription() );
+ assertEquals( 1, firmware.getInterfaceTypes().size() );
+ assertEquals( "uefi", firmware.getInterfaceTypes().get( 0 ) );
+ assertEquals( "/usr/share/qemu/edk2-x86_64-code.fd", firmware.getMapping().getExecutable().getFileName() );
+ assertEquals( "/usr/share/qemu/edk2-i386-vars.fd", firmware.getMapping().getNvramTemplate().getFileName() );
+ assertEquals( 1, firmware.getTargets().size() );
+ assertEquals( "x86_64", firmware.getTargets().get( 0 ).getArchitecture() );
+ assertEquals( 2, firmware.getTargets().get( 0 ).getMachines().size() );
+ assertEquals( "pc-i440fx-*", firmware.getTargets().get( 0 ).getMachines().get( 0 ) );
+ assertEquals( "pc-q35-*", firmware.getTargets().get( 0 ).getMachines().get( 1 ) );
+ assertEquals( 3, firmware.getFeatures().size() );
+ assertEquals( 0, firmware.getTags().size() );
+ }
+
+ @Test
+ @DisplayName( "Test parsing of invalid QEMU firmware specification file" )
+ public void testQemuFirmwareFromFwSpecInvalid()
+ {
+ final QemuFirmware firmware = QemuFirmware.fromFwSpec( null );
+
+ assertNull( firmware );
+ }
+}
diff --git a/src/test/java/org/openslx/firmware/QemuFirmwareTestResources.java b/src/test/java/org/openslx/firmware/QemuFirmwareTestResources.java
new file mode 100644
index 0000000..e4c1aa7
--- /dev/null
+++ b/src/test/java/org/openslx/firmware/QemuFirmwareTestResources.java
@@ -0,0 +1,100 @@
+package org.openslx.firmware;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.nio.file.Files;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import org.apache.commons.io.FileUtils;
+
+public class QemuFirmwareTestResources
+{
+ private static final String QEMU_PREFIX_PATH = File.separator + "qemu";
+ private static final String QEMU_PREFIX_PATH_FW = QEMU_PREFIX_PATH + File.separator + "firmware";
+
+ private static final String QEMU_TEMP_PREFIX = "qemu-";
+
+ public static String getQemuFirmwareSpecPath()
+ {
+ String fwSpecDir = null;
+
+ try {
+ fwSpecDir = getResourceDirectory( QemuFirmwareTestResources.class, QEMU_PREFIX_PATH_FW );
+ } catch ( IOException e ) {
+ fwSpecDir = null;
+ }
+
+ return fwSpecDir;
+ }
+
+ private static String getResourceDirectory( Class<?> clazz, String resourceDir ) throws IOException
+ {
+ final String fwDirPath = resourceDir.substring( 1 ).concat( File.separator );
+ final URL fwResource = clazz.getResource( resourceDir );
+ final File fwDirectory;
+ String fwDirectoryPath = null;
+
+ if ( fwResource != null && "jar".equals( fwResource.getProtocol() ) ) {
+ // create temporary directory to copy Jar files into it
+ fwDirectory = Files.createTempDirectory( QEMU_TEMP_PREFIX ).toFile();
+
+ // obtain file list from a directory within the Jar file
+ // strip out only the JAR file path
+ final String jarPath = fwResource.getPath().substring( 5, fwResource.getPath().indexOf( "!" ) );
+ final JarFile jar = new JarFile( URLDecoder.decode( jarPath, "UTF-8" ) );
+ // get all entries in the Jar file
+ final Enumeration<JarEntry> jarEntries = jar.entries();
+ final Set<String> fileNames = new HashSet<String>();
+ while ( jarEntries.hasMoreElements() ) {
+ final String jarEntryName = jarEntries.nextElement().getName();
+ if ( jarEntryName.startsWith( fwDirPath ) ) {
+ String jarEntry = jarEntryName.substring( fwDirPath.length() );
+ if ( !jarEntry.isEmpty() ) {
+ fileNames.add( jarEntry );
+ }
+ }
+ }
+
+ // copy each file from the Jar to the temporary directory
+ fileNames.forEach( fileName -> {
+ final String resourceFileName = resourceDir + File.separator + fileName;
+ final File tempFile = new File( fwDirectory.getPath() + File.separator + fileName );
+ final InputStream fileInput = QemuFirmwareTestResources.class.getResourceAsStream( resourceFileName );
+ try {
+ FileUtils.copyInputStreamToFile( fileInput, tempFile );
+ } catch ( IOException e ) {
+ e.printStackTrace();
+ }
+ tempFile.deleteOnExit();
+ } );
+ fwDirectory.deleteOnExit();
+ } else if ( fwResource != null && "file".equals( fwResource.getProtocol() ) ) {
+ fwDirectory = new File( fwResource.getFile() );
+ } else {
+ fwDirectory = null;
+ }
+
+ try {
+ fwDirectoryPath = fwDirectory.toURI().toURL().getFile();
+ } catch ( MalformedURLException | NullPointerException e ) {
+ fwDirectoryPath = null;
+ }
+
+ return fwDirectoryPath;
+ }
+
+ public static File getQemuFirmwareSpecFile( String fileName )
+ {
+ final String fwSpecFilePath = QEMU_PREFIX_PATH_FW + File.separator + fileName;
+ final URL fwSpecFileUrl = QemuFirmwareTestResources.class.getResource( fwSpecFilePath );
+ return new File( fwSpecFileUrl.getFile() );
+ }
+}
diff --git a/src/test/java/org/openslx/firmware/QemuFirmwareUtilTest.java b/src/test/java/org/openslx/firmware/QemuFirmwareUtilTest.java
new file mode 100644
index 0000000..75ce286
--- /dev/null
+++ b/src/test/java/org/openslx/firmware/QemuFirmwareUtilTest.java
@@ -0,0 +1,98 @@
+package org.openslx.firmware;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.nio.file.Paths;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.domain.Domain;
+import org.openslx.libvirt.domain.DomainTest;
+
+public class QemuFirmwareUtilTest
+{
+ @Test
+ @DisplayName( "Test that lookup of OS loader from Libvirt domain file succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValid() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+ final Domain config = DomainTest
+ .getDomain( "qemu-kvm_default-ubuntu-20-04-vm_transform-non-persistent_uefi.xml" );
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath, config.getOsLoader(),
+ config.getOsArch(), config.getOsMachine() );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of OS loader from Archlinux path succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValidArchlinux() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd", "x86_64", "pc-q35-5.0" );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of OS loader from Debian path succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValidDebian() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ "/usr/share/OVMF/OVMF_CODE.fd", "x86_64", "pc-q35-5.0" );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of OS loader from CentOS path succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValidCentOs() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ "/usr/share/edk2/ovmf/OVMF_CODE.cc.fd", "x86_64", "pc-q35-5.0" );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of OS loader from OpenSUSE path succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValidOpenSuse() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ "/usr/share/qemu/ovmf-x86_64-4m-code.bin", "x86_64", "pc-q35-5.0" );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of OS loader from Ubuntu path succeeds" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderValidUbuntu() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ "/usr/share/OVMF/OVMF_CODE_4M.fd", "x86_64", "pc-q35-5.0" );
+
+ assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
+ }
+
+ @Test
+ @DisplayName( "Test that lookup of non-existent OS loader for non-existent architecture fails" )
+ public void testQemuFirmwareUtilLookupTargetOsLoaderInvalid() throws FirmwareException
+ {
+ final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
+
+ assertThrows( FirmwareException.class, () -> QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
+ Paths.get( "/non/existent/loader.fd" ).toString(), "x87", "pc-q35-6.0" ) );
+ }
+}
diff --git a/src/test/java/org/openslx/libvirt/domain/DomainTest.java b/src/test/java/org/openslx/libvirt/domain/DomainTest.java
index 00bf83b..f371e9e 100644
--- a/src/test/java/org/openslx/libvirt/domain/DomainTest.java
+++ b/src/test/java/org/openslx/libvirt/domain/DomainTest.java
@@ -28,12 +28,12 @@ public class DomainTest
LogManager.getRootLogger().setLevel( Level.OFF );
}
- private Domain newDomainInstance( String xmlFileName )
+ public static Domain getDomain( String xmlFileName )
{
Domain domain = null;
try {
- domain = new Domain( LibvirtXmlTestResources.getLibvirtXmlFile( xmlFileName ) );
+ domain = new Domain( LibvirtXmlTestResources.getLibvirtXmlStream( xmlFileName ) );
} catch ( LibvirtXmlDocumentException | LibvirtXmlSerializationException | LibvirtXmlValidationException e ) {
String errorMsg = new String( "Cannot prepare requested Libvirt domain XML file from the resources folder" );
fail( errorMsg );
@@ -46,7 +46,7 @@ public class DomainTest
@DisplayName( "Get VM type from libvirt XML file" )
public void testGetType()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( Domain.Type.KVM.toString(), vm.getType().toString() );
}
@@ -54,7 +54,7 @@ public class DomainTest
@DisplayName( "Set VM type from libvirt XML file" )
public void testSetType()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setType( Domain.Type.QEMU );
assertEquals( Domain.Type.QEMU.toString(), vm.getType().toString() );
}
@@ -63,7 +63,7 @@ public class DomainTest
@DisplayName( "Get VM name from libvirt XML file" )
public void testGetName()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "ubuntu-20-04", vm.getName() );
}
@@ -71,7 +71,7 @@ public class DomainTest
@DisplayName( "Set VM name in libvirt XML file" )
public void testSetName()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setName( "ubuntu-18-04" );
assertEquals( "ubuntu-18-04", vm.getName() );
}
@@ -80,7 +80,7 @@ public class DomainTest
@DisplayName( "Get VM title from libvirt XML file" )
public void testGetTitle()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "Ubuntu 20.04", vm.getTitle() );
}
@@ -88,7 +88,7 @@ public class DomainTest
@DisplayName( "Set VM title in libvirt XML file" )
public void testSetTitle()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setTitle( "Ubuntu 18.04" );
assertEquals( "Ubuntu 18.04", vm.getTitle() );
}
@@ -97,7 +97,7 @@ public class DomainTest
@DisplayName( "Get VM description from libvirt XML file" )
public void testGetDescription()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "Ubuntu 20.04 desktop installation", vm.getDescription() );
}
@@ -105,7 +105,7 @@ public class DomainTest
@DisplayName( "Set VM description in libvirt XML file" )
public void testSetDescription()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setDescription( "Ubuntu 18.04 server installation" );
assertEquals( "Ubuntu 18.04 server installation", vm.getDescription() );
}
@@ -114,7 +114,7 @@ public class DomainTest
@DisplayName( "Get VM libosinfo operating system identifier in libvirt XML file" )
public void testGetLibOsInfoOsId()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "http://ubuntu.com/ubuntu/20.04", vm.getLibOsInfoOsId() );
}
@@ -122,7 +122,7 @@ public class DomainTest
@DisplayName( "Get VM UUID from libvirt XML file" )
public void testGetUuid()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "8dc5433c-0228-49e4-b019-fa2b606aa544", vm.getUuid() );
}
@@ -130,7 +130,7 @@ public class DomainTest
@DisplayName( "Set VM UUID in libvirt XML file" )
public void testSetUuid()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setUuid( "5ab08167-3d95-400e-ac83-e6af8d150971" );
assertEquals( "5ab08167-3d95-400e-ac83-e6af8d150971", vm.getUuid() );
}
@@ -139,7 +139,7 @@ public class DomainTest
@DisplayName( "Get VM memory from libvirt XML file" )
public void testGetMemory()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( new BigInteger( "4294967296" ).toString(), vm.getMemory().toString() );
}
@@ -147,7 +147,7 @@ public class DomainTest
@DisplayName( "Set VM memory in libvirt XML file" )
public void testSetMemory()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setMemory( new BigInteger( "12073740288" ) );
assertEquals( new BigInteger( "12073740288" ).toString(), vm.getMemory().toString() );
}
@@ -156,7 +156,7 @@ public class DomainTest
@DisplayName( "Get current VM memory from libvirt XML file" )
public void testGetCurrentMemory()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( new BigInteger( "4294967296" ).toString(), vm.getCurrentMemory().toString() );
}
@@ -164,7 +164,7 @@ public class DomainTest
@DisplayName( "Set current VM memory in libvirt XML file" )
public void testSetCurrentMemory()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setCurrentMemory( new BigInteger( "8087237632" ) );
assertEquals( new BigInteger( "8087237632" ).toString(), vm.getCurrentMemory().toString() );
}
@@ -173,7 +173,7 @@ public class DomainTest
@DisplayName( "Get VM number of vCpus from libvirt XML file" )
public void testGetVCpu()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 2, vm.getVCpu() );
}
@@ -181,7 +181,7 @@ public class DomainTest
@DisplayName( "Set VM number of vCpus in libvirt XML file" )
public void testSetVCpu()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setVCpu( 4 );
assertEquals( 4, vm.getVCpu() );
}
@@ -190,7 +190,7 @@ public class DomainTest
@DisplayName( "Get VM's OS type from libvirt XML file" )
public void testGetOsType()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( OsType.HVM.toString(), vm.getOsType().toString() );
}
@@ -198,7 +198,7 @@ public class DomainTest
@DisplayName( "Set VM's OS type in libvirt XML file" )
public void testSetOsType()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setOsType( OsType.XEN );
assertEquals( OsType.XEN.toString(), vm.getOsType().toString() );
}
@@ -207,7 +207,7 @@ public class DomainTest
@DisplayName( "Get VM's OS architecture from libvirt XML file" )
public void testGetOsArch()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "x86_64", vm.getOsArch() );
}
@@ -215,7 +215,7 @@ public class DomainTest
@DisplayName( "Set VM's OS architecture in libvirt XML file" )
public void testSetOsArch()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setOsArch( "aarch" );
assertEquals( "aarch", vm.getOsArch() );
}
@@ -224,7 +224,7 @@ public class DomainTest
@DisplayName( "Get VM's OS machine from libvirt XML file" )
public void testGetOsMachine()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "pc-q35-5.1", vm.getOsMachine() );
}
@@ -232,7 +232,7 @@ public class DomainTest
@DisplayName( "Set VM's OS machine in libvirt XML file" )
public void testSetOsMachine()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setOsMachine( "pc" );
assertEquals( "pc", vm.getOsMachine() );
}
@@ -241,7 +241,7 @@ public class DomainTest
@DisplayName( "Get VM's OS loader from libvirt XML file" )
public void testGetOsLoader()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
assertEquals( "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd", vm.getOsLoader() );
}
@@ -249,7 +249,7 @@ public class DomainTest
@DisplayName( "Set VM's OS loader in libvirt XML file" )
public void testSetOsLoader()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
vm.setOsLoader( "/usr/share/qemu/edk2-x86_64-code.fd" );
assertEquals( "/usr/share/qemu/edk2-x86_64-code.fd", vm.getOsLoader() );
}
@@ -258,7 +258,7 @@ public class DomainTest
@DisplayName( "Get VM's OS Nvram from libvirt XML file" )
public void testGetOsNvram()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
assertEquals( "/var/lib/libvirt/nvram/guest_VARS.fd", vm.getOsNvram() );
}
@@ -266,7 +266,7 @@ public class DomainTest
@DisplayName( "Set VM's OS Nvram in libvirt XML file" )
public void testSetOsNvram()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_uefi.xml" );
vm.setOsNvram( "/tmp/nvram-tmp/tmp_VARS.fd" );
assertEquals( "/tmp/nvram-tmp/tmp_VARS.fd", vm.getOsNvram() );
}
@@ -275,7 +275,7 @@ public class DomainTest
@DisplayName( "Get VM CPU model from libvirt XML file" )
public void testGetCpuModel()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertNull( vm.getCpuModel() );
}
@@ -283,7 +283,7 @@ public class DomainTest
@DisplayName( "Set VM CPU model in libvirt XML file" )
public void testSetCpuModel()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setCpuModel( "core2duo" );
assertEquals( "core2duo", vm.getCpuModel() );
}
@@ -292,7 +292,7 @@ public class DomainTest
@DisplayName( "Get VM CPU mode from libvirt XML file" )
public void testGetCpuModelMode()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( CpuMode.HOST_MODEL.toString(), vm.getCpuMode().toString() );
}
@@ -300,7 +300,7 @@ public class DomainTest
@DisplayName( "Set VM CPU mode in libvirt XML file" )
public void testSetCpuModelMode()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setCpuMode( CpuMode.HOST_PASSTHROUGH );
assertEquals( CpuMode.HOST_PASSTHROUGH.toString(), vm.getCpuMode().toString() );
}
@@ -309,7 +309,7 @@ public class DomainTest
@DisplayName( "Get VM CPU check from libvirt XML file" )
public void testGetCpuCheck()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( CpuCheck.PARTIAL.toString(), vm.getCpuCheck().toString() );
}
@@ -317,7 +317,7 @@ public class DomainTest
@DisplayName( "Set VM CPU check in libvirt XML file" )
public void testSetCpuCheck()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setCpuCheck( CpuCheck.NONE );
assertEquals( CpuCheck.NONE.toString(), vm.getCpuCheck().toString() );
}
@@ -326,7 +326,7 @@ public class DomainTest
@DisplayName( "Get VM CPU dies from libvirt XML file" )
public void testGetCpuDies()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
assertEquals( 2, vm.getCpuDies() );
}
@@ -334,7 +334,7 @@ public class DomainTest
@DisplayName( "Set VM CPU dies in libvirt XML file" )
public void testSetCpuDies()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
vm.setCpuDies( 3 );
assertEquals( 3, vm.getCpuDies() );
}
@@ -343,7 +343,7 @@ public class DomainTest
@DisplayName( "Get VM CPU sockets from libvirt XML file" )
public void testGetCpuSockets()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
assertEquals( 3, vm.getCpuSockets() );
}
@@ -351,7 +351,7 @@ public class DomainTest
@DisplayName( "Set VM CPU sockets in libvirt XML file" )
public void testSetCpuSockets()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
vm.setCpuSockets( 2 );
assertEquals( 2, vm.getCpuSockets() );
}
@@ -360,7 +360,7 @@ public class DomainTest
@DisplayName( "Get VM CPU cores from libvirt XML file" )
public void testGetCpuCores()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
assertEquals( 4, vm.getCpuCores() );
}
@@ -368,7 +368,7 @@ public class DomainTest
@DisplayName( "Set VM CPU cores in libvirt XML file" )
public void testSetCpuCores()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
vm.setCpuCores( 8 );
assertEquals( 8, vm.getCpuCores() );
}
@@ -377,7 +377,7 @@ public class DomainTest
@DisplayName( "Get VM CPU threads from libvirt XML file" )
public void testGetCpuThreads()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
assertEquals( 1, vm.getCpuThreads() );
}
@@ -385,7 +385,7 @@ public class DomainTest
@DisplayName( "Set VM CPU threads in libvirt XML file" )
public void testSetCpuThreads()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_cpu-topology.xml" );
vm.setCpuThreads( 2 );
assertEquals( 2, vm.getCpuThreads() );
}
@@ -394,7 +394,7 @@ public class DomainTest
@DisplayName( "Get VM emulator binary from libvirt XML file" )
public void testGetDevicesEmulator()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( "/usr/bin/qemu-system-x86_64", vm.getDevicesEmulator() );
}
@@ -402,7 +402,7 @@ public class DomainTest
@DisplayName( "Set VM emulator binary in libvirt XML file" )
public void testSetDevicesEmulator()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
vm.setDevicesEmulator( "/usr/bin/qemu-system-i386" );
assertEquals( "/usr/bin/qemu-system-i386", vm.getDevicesEmulator() );
}
@@ -411,7 +411,7 @@ public class DomainTest
@DisplayName( "Get all VM devices from libvirt XML file" )
public void testGetDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 22, vm.getDevices().size() );
}
@@ -419,7 +419,7 @@ public class DomainTest
@DisplayName( "Get all VM controller devices from libvirt XML file" )
public void testGetControllerDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 14, vm.getControllerDevices().size() );
}
@@ -427,7 +427,7 @@ public class DomainTest
@DisplayName( "Get all VM disk devices from libvirt XML file" )
public void testGetDiskDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 3, vm.getDiskDevices().size() );
}
@@ -435,7 +435,7 @@ public class DomainTest
@DisplayName( "Get all VM file system devices from libvirt XML file" )
public void testGetFileSystemDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 0, vm.getFileSystemDevices().size() );
}
@@ -443,7 +443,7 @@ public class DomainTest
@DisplayName( "Get all VM hostdev devices from libvirt XML file" )
public void testGetHostdevDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 0, vm.getHostdevDevices().size() );
}
@@ -451,7 +451,7 @@ public class DomainTest
@DisplayName( "Get all VM interface devices from libvirt XML file" )
public void testGetInterfaceDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 1, vm.getInterfaceDevices().size() );
}
@@ -459,7 +459,7 @@ public class DomainTest
@DisplayName( "Get all VM graphic devices from libvirt XML file" )
public void testGetGraphicDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 1, vm.getGraphicDevices().size() );
}
@@ -467,7 +467,7 @@ public class DomainTest
@DisplayName( "Get all VM parallel port devices from libvirt XML file" )
public void testGetParallelDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 0, vm.getParallelDevices().size() );
}
@@ -475,7 +475,7 @@ public class DomainTest
@DisplayName( "Get all VM serial port devices from libvirt XML file" )
public void testGetSerialDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 1, vm.getSerialDevices().size() );
}
@@ -483,7 +483,7 @@ public class DomainTest
@DisplayName( "Get all VM sound devices from libvirt XML file" )
public void testGetSoundDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 1, vm.getSoundDevices().size() );
}
@@ -491,7 +491,7 @@ public class DomainTest
@DisplayName( "Get all VM video devices from libvirt XML file" )
public void testGetVideoDevices()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 1, vm.getVideoDevices().size() );
}
@@ -499,7 +499,7 @@ public class DomainTest
@DisplayName( "Get all QEMU command line arguments from libvirt XML file" )
public void testGetQemuCmdlnArguments()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm_qemu-cmdln.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_qemu-cmdln.xml" );
assertEquals( 2, vm.getQemuCmdlnArguments().size() );
}
@@ -507,7 +507,7 @@ public class DomainTest
@DisplayName( "Set QEMU command line arguments in libvirt XML file" )
public void testAddQemuCmdlnArguments()
{
- Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ Domain vm = DomainTest.getDomain( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
assertEquals( 0, vm.getQemuCmdlnArguments().size() );
vm.addQemuCmdlnArgument( "-set" );
diff --git a/src/test/resources/qemu/firmware/50-edk2-i386-secure.json b/src/test/resources/qemu/firmware/50-edk2-i386-secure.json
new file mode 100644
index 0000000..9838f16
--- /dev/null
+++ b/src/test/resources/qemu/firmware/50-edk2-i386-secure.json
@@ -0,0 +1,34 @@
+{
+ "description": "UEFI firmware for i386, with Secure Boot and SMM",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-i386-secure-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-i386-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "i386",
+ "machines": [
+ "pc-q35-*"
+ ]
+ }
+ ],
+ "features": [
+ "acpi-s3",
+ "requires-smm",
+ "secure-boot",
+ "verbose-dynamic"
+ ],
+ "tags": [
+
+ ]
+}
diff --git a/src/test/resources/qemu/firmware/50-edk2-x86_64-secure.json b/src/test/resources/qemu/firmware/50-edk2-x86_64-secure.json
new file mode 100644
index 0000000..12fa688
--- /dev/null
+++ b/src/test/resources/qemu/firmware/50-edk2-x86_64-secure.json
@@ -0,0 +1,35 @@
+{
+ "description": "UEFI firmware for x86_64, with Secure Boot and SMM",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-x86_64-secure-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-i386-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "x86_64",
+ "machines": [
+ "pc-q35-*"
+ ]
+ }
+ ],
+ "features": [
+ "acpi-s3",
+ "amd-sev",
+ "requires-smm",
+ "secure-boot",
+ "verbose-dynamic"
+ ],
+ "tags": [
+
+ ]
+}
diff --git a/src/test/resources/qemu/firmware/60-edk2-aarch64.json b/src/test/resources/qemu/firmware/60-edk2-aarch64.json
new file mode 100644
index 0000000..52a65c7
--- /dev/null
+++ b/src/test/resources/qemu/firmware/60-edk2-aarch64.json
@@ -0,0 +1,31 @@
+{
+ "description": "UEFI firmware for aarch64",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-aarch64-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-arm-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "aarch64",
+ "machines": [
+ "virt-*"
+ ]
+ }
+ ],
+ "features": [
+ "verbose-static"
+ ],
+ "tags": [
+
+ ]
+}
diff --git a/src/test/resources/qemu/firmware/60-edk2-arm.json b/src/test/resources/qemu/firmware/60-edk2-arm.json
new file mode 100644
index 0000000..8dc6e0f
--- /dev/null
+++ b/src/test/resources/qemu/firmware/60-edk2-arm.json
@@ -0,0 +1,31 @@
+{
+ "description": "UEFI firmware for arm",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-arm-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-arm-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "arm",
+ "machines": [
+ "virt-*"
+ ]
+ }
+ ],
+ "features": [
+ "verbose-static"
+ ],
+ "tags": [
+
+ ]
+}
diff --git a/src/test/resources/qemu/firmware/60-edk2-i386.json b/src/test/resources/qemu/firmware/60-edk2-i386.json
new file mode 100644
index 0000000..f0929ed
--- /dev/null
+++ b/src/test/resources/qemu/firmware/60-edk2-i386.json
@@ -0,0 +1,33 @@
+{
+ "description": "UEFI firmware for i386",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-i386-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-i386-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "i386",
+ "machines": [
+ "pc-i440fx-*",
+ "pc-q35-*"
+ ]
+ }
+ ],
+ "features": [
+ "acpi-s3",
+ "verbose-dynamic"
+ ],
+ "tags": [
+
+ ]
+}
diff --git a/src/test/resources/qemu/firmware/60-edk2-x86_64.json b/src/test/resources/qemu/firmware/60-edk2-x86_64.json
new file mode 100644
index 0000000..d0b6542
--- /dev/null
+++ b/src/test/resources/qemu/firmware/60-edk2-x86_64.json
@@ -0,0 +1,34 @@
+{
+ "description": "UEFI firmware for x86_64",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "/usr/share/qemu/edk2-x86_64-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "/usr/share/qemu/edk2-i386-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "x86_64",
+ "machines": [
+ "pc-i440fx-*",
+ "pc-q35-*"
+ ]
+ }
+ ],
+ "features": [
+ "acpi-s3",
+ "amd-sev",
+ "verbose-dynamic"
+ ],
+ "tags": [
+
+ ]
+}