diff options
author | Manuel Bentele | 2021-08-11 10:35:04 +0200 |
---|---|---|
committer | Manuel Bentele | 2021-08-11 10:35:04 +0200 |
commit | 9903d1dc34930d5059b37d7681a9f5bb39be165c (patch) | |
tree | 6b3470392b357f9463e0f5b2397e776bd4800cc7 | |
parent | Add Libvirt domain XML representation for mediated devices (mdev) (diff) | |
download | master-sync-shared-9903d1dc34930d5059b37d7681a9f5bb39be165c.tar.gz master-sync-shared-9903d1dc34930d5059b37d7681a9f5bb39be165c.tar.xz master-sync-shared-9903d1dc34930d5059b37d7681a9f5bb39be165c.zip |
Add unit tests for Libvirt mediated device addresses
-rw-r--r-- | src/test/java/org/openslx/libvirt/domain/device/HostdevMdevDeviceAddressTest.java | 71 | ||||
-rw-r--r-- | src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_mdev.xml | 175 |
2 files changed, 246 insertions, 0 deletions
diff --git a/src/test/java/org/openslx/libvirt/domain/device/HostdevMdevDeviceAddressTest.java b/src/test/java/org/openslx/libvirt/domain/device/HostdevMdevDeviceAddressTest.java new file mode 100644 index 0000000..15e419e --- /dev/null +++ b/src/test/java/org/openslx/libvirt/domain/device/HostdevMdevDeviceAddressTest.java @@ -0,0 +1,71 @@ +package org.openslx.libvirt.domain.device; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.UUID; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class HostdevMdevDeviceAddressTest +{ + @Test + @DisplayName( "Test that a mediated device address instance is parsed from a valid String" ) + public void testHostdevMdevDeviceAddressValueOfValid() + { + final UUID deviceAddress = UUID.randomUUID(); + final HostdevMdevDeviceAddress mdevDeviceAddr = HostdevMdevDeviceAddress + .valueOf( deviceAddress.toString() ); + + assertNotNull( mdevDeviceAddr ); + assertEquals( deviceAddress, mdevDeviceAddr.getDeviceAddress() ); + assertEquals( deviceAddress.toString(), mdevDeviceAddr.getDeviceAddressAsString() ); + } + + @Test + @DisplayName( "Test that no mediated device address instance is parsed from an invalid String" ) + public void testHostdevMdevDeviceAddressValueOfInvalid() + { + final HostdevMdevDeviceAddress mdevDeviceAddr = HostdevMdevDeviceAddress.valueOf( "0xaffe" ); + + assertNull( mdevDeviceAddr ); + } + + @Test + @DisplayName( "Test that two mediated device address instances are equal" ) + public void testHostdevMdevDeviceAddressEquals() + { + final HostdevMdevDeviceAddress mdevDeviceAddr1 = new HostdevMdevDeviceAddress( + new UUID( 0xdeadaffe, 0xaffedead ) ); + final HostdevMdevDeviceAddress mdevDeviceAddr2 = new HostdevMdevDeviceAddress( + new UUID( 0xdeadaffe, 0xaffedead ) ); + + assertTrue( mdevDeviceAddr1.equals( mdevDeviceAddr2 ) ); + } + + @Test + @DisplayName( "Test that two mediated device address instances are not equal" ) + public void testHostdevMdevDeviceAddressNotEquals() + { + final HostdevMdevDeviceAddress mdevDeviceAddr1 = new HostdevMdevDeviceAddress( + new UUID( 0xdeadaffe, 0xaffedead ) ); + final HostdevMdevDeviceAddress mdevDeviceAddr2 = new HostdevMdevDeviceAddress( + new UUID( 0xaffedead, 0xdeadaffe ) ); + + assertFalse( mdevDeviceAddr1.equals( mdevDeviceAddr2 ) ); + } + + @Test + @DisplayName( "Test that a mediated device address can be dumped to a String" ) + public void testHostdevMdevDeviceAddressToString() + { + final UUID deviceAddr = UUID.randomUUID(); + final HostdevMdevDeviceAddress mdevDeviceAddr = new HostdevMdevDeviceAddress( deviceAddr ); + + assertEquals( deviceAddr.toString(), mdevDeviceAddr.toString() ); + } +} diff --git a/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_mdev.xml b/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_mdev.xml new file mode 100644 index 0000000..c1bb1e2 --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_mdev.xml @@ -0,0 +1,175 @@ +<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'/> + <controller type='pci' index='7' model='pcie-root-port'> + <model name='pcie-root-port'/> + <target chassis='7' port='0x16'/> + <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/> + </controller> + <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> + <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on'> + <source> + <address uuid='a9caa01a-43a2-439a-a714-b7d82de090ff'/> + </source> + <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> + </hostdev> + <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> + |