summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/openslx/libvirt
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/openslx/libvirt')
-rw-r--r--src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java305
-rw-r--r--src/test/java/org/openslx/libvirt/domain/DomainTest.java103
-rw-r--r--src/test/java/org/openslx/libvirt/libosinfo/LibOsInfoTest.java28
3 files changed, 435 insertions, 1 deletions
diff --git a/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java b/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java
new file mode 100644
index 0000000..e7d7651
--- /dev/null
+++ b/src/test/java/org/openslx/libvirt/capabilities/CapabilitiesTest.java
@@ -0,0 +1,305 @@
+package org.openslx.libvirt.capabilities;
+
+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 static org.junit.jupiter.api.Assertions.fail;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.capabilities.cpu.Cpu;
+import org.openslx.libvirt.capabilities.cpu.Feature;
+import org.openslx.libvirt.capabilities.cpu.Pages;
+import org.openslx.libvirt.capabilities.guest.Domain;
+import org.openslx.libvirt.capabilities.guest.Guest;
+import org.openslx.libvirt.capabilities.guest.Machine;
+import org.openslx.libvirt.domain.Domain.OsType;
+import org.openslx.libvirt.domain.Domain.Type;
+import org.openslx.libvirt.xml.LibvirtXmlDocumentException;
+import org.openslx.libvirt.xml.LibvirtXmlSerializationException;
+import org.openslx.libvirt.xml.LibvirtXmlTestResources;
+import org.openslx.libvirt.xml.LibvirtXmlValidationException;
+
+public class CapabilitiesTest
+{
+ @BeforeAll
+ public static void setUp()
+ {
+ // disable logging with log4j
+ LogManager.getRootLogger().setLevel( Level.OFF );
+ }
+
+ private Capabilities newCapabilitiesInstance( String xmlFileName )
+ {
+ Capabilities caps = null;
+
+ try {
+ caps = new Capabilities( LibvirtXmlTestResources.getLibvirtXmlFile( xmlFileName ) );
+ } catch ( LibvirtXmlDocumentException | LibvirtXmlSerializationException | LibvirtXmlValidationException e ) {
+ final String errorMsg = new String(
+ "Cannot prepare requested Libvirt capabilities XML file from the resources folder" );
+ fail( errorMsg );
+ }
+
+ return caps;
+ }
+
+ @Test
+ @DisplayName( "Get host UUID from libvirt XML capabilities file" )
+ public void testGetHostUuid()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ assertEquals( "9b2f12af-1fba-444c-b72b-9cbc43fb3ca5", caps.getHostUuid() );
+ }
+
+ @Test
+ @DisplayName( "Get host CPU from libvirt XML capabilities file" )
+ public void testGetHostCpu()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNotNull( hostCpu );
+ assertEquals( "x86_64", hostCpu.getArch() );
+ assertEquals( "Skylake-Client-IBRS", hostCpu.getModel() );
+ assertEquals( "Intel", hostCpu.getVendor() );
+ assertEquals( 1, hostCpu.getTopologySockets() );
+ assertEquals( 1, hostCpu.getTopologyDies() );
+ assertEquals( 4, hostCpu.getTopologyCores() );
+ assertEquals( 1, hostCpu.getTopologyThreads() );
+ }
+
+ @Test
+ @DisplayName( "Get non-existent host CPU from libvirt XML capabilities file" )
+ public void testGetHostCpuNonExistent()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNull( hostCpu );
+ }
+
+ @Test
+ @DisplayName( "Get host CPU features from libvirt XML capabilities file" )
+ public void testGetHostCpuFeatures()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNotNull( hostCpu );
+
+ final List<Feature> hostCpuFeatures = hostCpu.getFeatures();
+ assertNotNull( hostCpuFeatures );
+ assertEquals( 25, hostCpuFeatures.size() );
+
+ final Feature hostCpuFeature = hostCpuFeatures.get( 9 );
+ assertNotNull( hostCpuFeature );
+ assertEquals( "vmx", hostCpuFeature.getName() );
+ }
+
+ @Test
+ @DisplayName( "Get empty host CPU features from libvirt XML capabilities file" )
+ public void testGetHostCpuFeaturesEmpty()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu-features.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNotNull( hostCpu );
+
+ final List<Feature> hostCpuFeatures = hostCpu.getFeatures();
+ assertNotNull( hostCpuFeatures );
+ assertEquals( 0, hostCpuFeatures.size() );
+ }
+
+ @Test
+ @DisplayName( "Get host CPU pages from libvirt XML capabilities file" )
+ public void testGetHostCpuPages()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNotNull( hostCpu );
+
+ final List<Pages> hostCpuPages = hostCpu.getPages();
+ assertNotNull( hostCpuPages );
+ assertEquals( 3, hostCpuPages.size() );
+
+ final Pages hostCpuPage = hostCpuPages.get( 2 );
+ assertNotNull( hostCpuPage );
+ assertEquals( new BigInteger( "1073741824" ).toString(), hostCpuPage.getSize().toString() );
+ }
+
+ @Test
+ @DisplayName( "Get empty host CPU pages from libvirt XML capabilities file" )
+ public void testGetHostCpuPagesEmpty()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-cpu-pages.xml" );
+ final Cpu hostCpu = caps.getHostCpu();
+
+ assertNotNull( hostCpu );
+
+ final List<Pages> hostCpuPages = hostCpu.getPages();
+ assertNotNull( hostCpuPages );
+ assertEquals( 0, hostCpuPages.size() );
+ }
+
+ @Test
+ @DisplayName( "Get host IOMMU support from libvirt XML capabilities file" )
+ public void testGetHostIommuSupport()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ assertEquals( true, caps.hasHostIommuSupport() );
+ }
+
+ @Test
+ @DisplayName( "Get non-existent host IOMMU support from libvirt XML capabilities file" )
+ public void testGetHostIommuSupportNonExistent()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-iommu.xml" );
+
+ assertEquals( false, caps.hasHostIommuSupport() );
+ }
+
+ @Test
+ @DisplayName( "Get guests from libvirt XML capabilities file" )
+ public void testGetGuests()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 3 );
+ assertNotNull( guest );
+ assertEquals( OsType.HVM.toString(), guest.getOsType().toString() );
+ assertEquals( "aarch64", guest.getArchName() );
+ assertEquals( 64, guest.getArchWordSize() );
+ assertEquals( "/usr/bin/qemu-system-aarch64", guest.getArchEmulator() );
+ }
+
+ @Test
+ @DisplayName( "Get empty guests from libvirt XML capabilities file" )
+ public void testGetGuestsEmpty()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guests.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 0, guests.size() );
+ }
+
+ @Test
+ @DisplayName( "Get guest machines from libvirt XML capabilities file" )
+ public void testGetGuestMachines()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 3 );
+ assertNotNull( guest );
+
+ final List<Machine> guestMachines = guest.getArchMachines();
+ assertNotNull( guestMachines );
+ assertEquals( 89, guestMachines.size() );
+
+ final Machine guestMachine = guestMachines.get( 5 );
+ assertNotNull( guestMachine );
+ assertNull( guestMachine.getCanonicalMachine() );
+ assertEquals( 2, guestMachine.getMaxCpus() );
+ assertEquals( "nuri", guestMachine.getName() );
+ }
+
+ @Test
+ @DisplayName( "Get empty guest machines from libvirt XML capabilities file" )
+ public void testGetGuestMachinesEmpty()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guest-machines.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 3 );
+ assertNotNull( guest );
+
+ final List<Machine> guestMachines = guest.getArchMachines();
+ assertNotNull( guestMachines );
+ assertEquals( 0, guestMachines.size() );
+ }
+
+ @Test
+ @DisplayName( "Get canonical guest machine from libvirt XML capabilities file" )
+ public void testGetGuestMachineCanonical()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 3 );
+ assertNotNull( guest );
+
+ final List<Machine> guestMachines = guest.getArchMachines();
+ assertNotNull( guestMachines );
+ assertEquals( 89, guestMachines.size() );
+
+ final Machine guestMachine = guestMachines.get( 29 );
+ assertNotNull( guestMachine );
+ assertEquals( "virt-5.2", guestMachine.getCanonicalMachine() );
+ assertEquals( 512, guestMachine.getMaxCpus() );
+ assertEquals( "virt", guestMachine.getName() );
+ }
+
+ @Test
+ @DisplayName( "Get guest machine domains from libvirt XML capabilities file" )
+ public void testGetGuestMachineDomains()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_default.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 5 );
+ assertNotNull( guest );
+
+ final List<Domain> guestDomains = guest.getArchDomains();
+ assertNotNull( guestDomains );
+ assertEquals( 2, guestDomains.size() );
+
+ final Domain guestDomain = guestDomains.get( 1 );
+ assertNotNull( guestDomain );
+ assertEquals( Type.KVM, guestDomain.getType() );
+ }
+
+ @Test
+ @DisplayName( "Get empty guest machine domains from libvirt XML capabilities file" )
+ public void testGetGuestMachineDomainsEmpty()
+ {
+ final Capabilities caps = this.newCapabilitiesInstance( "qemu-kvm_capabilities_no-guest-machines.xml" );
+
+ final List<Guest> guests = caps.getGuests();
+ assertNotNull( guests );
+ assertEquals( 26, guests.size() );
+
+ final Guest guest = guests.get( 3 );
+ assertNotNull( guest );
+
+ final List<Domain> guestDomains = guest.getArchDomains();
+ assertNotNull( guestDomains );
+ assertEquals( 0, guestDomains.size() );
+ }
+}
diff --git a/src/test/java/org/openslx/libvirt/domain/DomainTest.java b/src/test/java/org/openslx/libvirt/domain/DomainTest.java
index a604b21..e1fb73b 100644
--- a/src/test/java/org/openslx/libvirt/domain/DomainTest.java
+++ b/src/test/java/org/openslx/libvirt/domain/DomainTest.java
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.openslx.libvirt.domain.Domain.CpuCheck;
import org.openslx.libvirt.domain.Domain.CpuMode;
+import org.openslx.libvirt.domain.Domain.OsType;
import org.openslx.libvirt.xml.LibvirtXmlDocumentException;
import org.openslx.libvirt.xml.LibvirtXmlSerializationException;
import org.openslx.libvirt.xml.LibvirtXmlTestResources;
@@ -110,6 +111,14 @@ public class DomainTest
}
@Test
+ @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" );
+ assertEquals( "http://ubuntu.com/ubuntu/20.04", vm.getLibOsInfoOsId() );
+ }
+
+ @Test
@DisplayName( "Get VM UUID from libvirt XML file" )
public void testGetUuid()
{
@@ -178,6 +187,57 @@ public class DomainTest
}
@Test
+ @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" );
+ assertEquals( OsType.HVM.toString(), vm.getOsType().toString() );
+ }
+
+ @Test
+ @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" );
+ vm.setOsType( OsType.XEN );
+ assertEquals( OsType.XEN.toString(), vm.getOsType().toString() );
+ }
+
+ @Test
+ @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" );
+ assertEquals( "x86_64", vm.getOsArch() );
+ }
+
+ @Test
+ @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" );
+ vm.setOsArch( "aarch" );
+ assertEquals( "aarch", vm.getOsArch() );
+ }
+
+ @Test
+ @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" );
+ assertEquals( "pc-q35-5.1", vm.getOsMachine() );
+ }
+
+ @Test
+ @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" );
+ vm.setOsMachine( "pc" );
+ assertEquals( "pc", vm.getOsMachine() );
+ }
+
+ @Test
@DisplayName( "Get VM CPU model from libvirt XML file" )
public void testGetCpuModel()
{
@@ -229,11 +289,28 @@ public class DomainTest
}
@Test
+ @DisplayName( "Get VM emulator binary from libvirt XML file" )
+ public void testGetDevicesEmulator()
+ {
+ Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ assertEquals( "/usr/bin/qemu-system-x86_64", vm.getDevicesEmulator() );
+ }
+
+ @Test
+ @DisplayName( "Set VM emulator binary in libvirt XML file" )
+ public void testSetDevicesEmulator()
+ {
+ Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
+ vm.setDevicesEmulator( "/usr/bin/qemu-system-i386" );
+ assertEquals( "/usr/bin/qemu-system-i386", vm.getDevicesEmulator() );
+ }
+
+ @Test
@DisplayName( "Get all VM devices from libvirt XML file" )
public void testGetDevices()
{
Domain vm = this.newDomainInstance( "qemu-kvm_default-ubuntu-20-04-vm.xml" );
- assertEquals( 21, vm.getDevices().size() );
+ assertEquals( 22, vm.getDevices().size() );
}
@Test
@@ -253,6 +330,14 @@ public class DomainTest
}
@Test
+ @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" );
+ assertEquals( 0, vm.getFileSystemDevices().size() );
+ }
+
+ @Test
@DisplayName( "Get all VM hostdev devices from libvirt XML file" )
public void testGetHostdevDevices()
{
@@ -277,6 +362,22 @@ public class DomainTest
}
@Test
+ @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" );
+ assertEquals( 0, vm.getParallelDevices().size() );
+ }
+
+ @Test
+ @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" );
+ assertEquals( 1, vm.getSerialDevices().size() );
+ }
+
+ @Test
@DisplayName( "Get all VM sound devices from libvirt XML file" )
public void testGetSoundDevices()
{
diff --git a/src/test/java/org/openslx/libvirt/libosinfo/LibOsInfoTest.java b/src/test/java/org/openslx/libvirt/libosinfo/LibOsInfoTest.java
new file mode 100644
index 0000000..af1c611
--- /dev/null
+++ b/src/test/java/org/openslx/libvirt/libosinfo/LibOsInfoTest.java
@@ -0,0 +1,28 @@
+package org.openslx.libvirt.libosinfo;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.openslx.libvirt.libosinfo.os.Os;
+import org.openslx.virtualization.Version;
+
+public class LibOsInfoTest
+{
+ @Test
+ @DisplayName( "Test the lookup of an operating system" )
+ public void testOsLookup()
+ {
+ final String osId = "http://ubuntu.com/ubuntu/20.04";
+ final Os os = LibOsInfo.lookupOs( osId );
+
+ assertNotNull( os );
+
+ assertEquals( osId, os.getId() );
+ assertEquals( "Ubuntu 20.04", os.getName() );
+ assertEquals( "linux", os.getFamily() );
+ assertEquals( "ubuntu", os.getDistro() );
+ assertEquals( new Version( Short.valueOf( "20" ), Short.valueOf( "04" ) ), os.getVersion() );
+ }
+}