diff options
Diffstat (limited to 'src/test/java/org/openslx/virtualization/configuration')
4 files changed, 149 insertions, 34 deletions
diff --git a/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuTest.java b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuTest.java index 93f3750..b59a86d 100644 --- a/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuTest.java +++ b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemuTest.java @@ -68,14 +68,11 @@ public class VirtualizationConfigurationQemuTest File file = LibvirtXmlTestResources.getLibvirtXmlFile( "qemu-kvm_default-archlinux-vm.xml" ); VirtualizationConfigurationQemu vmConfig = new VirtualizationConfigurationQemu( null, file ); - final Domain vmLibvirtDomainConfig = VirtualizationConfigurationQemuTest - .getPrivateDomainFromQemuMetaData( vmConfig ); - final String displayName = vmConfig.getDisplayName(); assertEquals( "archlinux", displayName ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @Test @@ -87,14 +84,11 @@ public class VirtualizationConfigurationQemuTest File file = LibvirtXmlTestResources.getLibvirtXmlFile( "qemu-kvm_default-archlinux-vm.xml" ); VirtualizationConfigurationQemu vmConfig = new VirtualizationConfigurationQemu( null, file ); - final Domain vmLibvirtDomainConfig = VirtualizationConfigurationQemuTest - .getPrivateDomainFromQemuMetaData( vmConfig ); - final boolean isVmSnapshot = vmConfig.isMachineSnapshot(); assertEquals( false, isVmSnapshot ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @Test @@ -106,9 +100,6 @@ public class VirtualizationConfigurationQemuTest File file = LibvirtXmlTestResources.getLibvirtXmlFile( "qemu-kvm_default-archlinux-vm.xml" ); VirtualizationConfigurationQemu vmConfig = new VirtualizationConfigurationQemu( null, file ); - final Domain vmLibvirtDomainConfig = VirtualizationConfigurationQemuTest - .getPrivateDomainFromQemuMetaData( vmConfig ); - final List<DiskImage.ImageFormat> supportedImageFormats = vmConfig.getVirtualizer().getSupportedImageFormats(); assertNotNull( supportedImageFormats ); @@ -116,7 +107,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( true, supportedImageFormats .containsAll( Arrays.asList( ImageFormat.QCOW2, ImageFormat.VMDK, ImageFormat.VDI ) ) ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @Test @@ -128,16 +119,13 @@ public class VirtualizationConfigurationQemuTest File file = LibvirtXmlTestResources.getLibvirtXmlFile( "qemu-kvm_default-archlinux-vm.xml" ); VirtualizationConfigurationQemu vmConfig = new VirtualizationConfigurationQemu( null, file ); - final Domain vmLibvirtDomainConfig = VirtualizationConfigurationQemuTest - .getPrivateDomainFromQemuMetaData( vmConfig ); - final List<VirtualizationConfiguration.HardDisk> hdds = vmConfig.getHdds(); assertNotNull( hdds ); assertEquals( 1, hdds.size() ); assertEquals( "/var/lib/libvirt/images/archlinux.qcow2", hdds.get( 0 ).diskImage ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @Test @@ -149,9 +137,6 @@ public class VirtualizationConfigurationQemuTest File file = LibvirtXmlTestResources.getLibvirtXmlFile( "qemu-kvm_default-archlinux-vm.xml" ); VirtualizationConfigurationQemu vmConfig = new VirtualizationConfigurationQemu( null, file ); - final Domain vmLibvirtDomainConfig = VirtualizationConfigurationQemuTest - .getPrivateDomainFromQemuMetaData( vmConfig ); - final String unfilteredXmlConfig = new String( vmConfig.getConfigurationAsByteArray(), StandardCharsets.UTF_8 ); final String originalXmlConfig = FileUtils.readFileToString( file, StandardCharsets.UTF_8 ); @@ -162,7 +147,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( lengthOriginalXmlConfig, lengthUnfilteredXmlConfig ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -204,7 +189,7 @@ public class VirtualizationConfigurationQemuTest DiskStorage addedStorageDevice = vmLibvirtDomainConfig.getDiskStorageDevices().get( 0 ); assertEquals( diskFile.getAbsolutePath(), addedStorageDevice.getStorageSource() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -233,7 +218,7 @@ public class VirtualizationConfigurationQemuTest DiskCdrom addedCdromDevice = vmLibvirtDomainConfig.getDiskCdromDevices().get( 0 ); assertEquals( diskFile.getAbsolutePath(), addedCdromDevice.getStorageSource() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -261,7 +246,7 @@ public class VirtualizationConfigurationQemuTest DiskCdrom addedCdromDevice = vmLibvirtDomainConfig.getDiskCdromDevices().get( 0 ); assertEquals( VirtualizationConfigurationQemu.CDROM_DEFAULT_PHYSICAL_DRIVE, addedCdromDevice.getStorageSource() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -291,7 +276,7 @@ public class VirtualizationConfigurationQemuTest assertTrue( addedFloppyDevice.isReadOnly() ); assertEquals( diskFile.getAbsolutePath(), addedFloppyDevice.getStorageSource() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -311,7 +296,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( coreCount, vmLibvirtDomainConfig.getVCpu() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -335,7 +320,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( SoundCardType.HD_AUDIO, soundCardType ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -363,7 +348,7 @@ public class VirtualizationConfigurationQemuTest Sound addedSoundDevice = vmLibvirtDomainConfig.getSoundDevices().get( 0 ); assertEquals( Sound.Model.SB16, addedSoundDevice.getModel() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -387,7 +372,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( EthernetDevType.PARAVIRT, ethernetDeviceType ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -410,7 +395,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( Interface.Model.E1000E, addedEthernetDevice.getModel() ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -434,7 +419,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( UsbSpeed.USB3_0, maxUsbSpeed ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -462,7 +447,7 @@ public class VirtualizationConfigurationQemuTest ControllerUsb addedUsbControllerDevice = vmLibvirtDomainConfig.getUsbControllerDevices().get( 0 ); assertEquals( ControllerUsb.Model.ICH9_EHCI1, addedUsbControllerDevice.getModel() ); - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } static Stream<Arguments> configAndEthernetTypeProvider() @@ -518,7 +503,7 @@ public class VirtualizationConfigurationQemuTest break; } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -542,7 +527,7 @@ public class VirtualizationConfigurationQemuTest assertEquals( new Version( Short.valueOf( "3" ), Short.valueOf( "1" ) ), machineVersion ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } @ParameterizedTest @@ -574,6 +559,6 @@ public class VirtualizationConfigurationQemuTest assertEquals( "pc-q35-4.1", modifiedOsMachine ); } - assertDoesNotThrow( () -> vmLibvirtDomainConfig.validateXml() ); + assertDoesNotThrow( () -> vmConfig.validate() ); } } diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java index 4654957..68a39c6 100644 --- a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java @@ -1,5 +1,6 @@ package org.openslx.virtualization.configuration.logic; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; @@ -41,6 +42,7 @@ public class ConfigurationLogicDozModClientToDozModServerTest final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + assertDoesNotThrow( () -> config.validate() ); } @Test @@ -61,6 +63,7 @@ public class ConfigurationLogicDozModClientToDozModServerTest final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + assertDoesNotThrow( () -> config.validate() ); } @Test @@ -81,5 +84,6 @@ public class ConfigurationLogicDozModClientToDozModServerTest final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + assertDoesNotThrow( () -> config.validate() ); } } diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClientTest.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClientTest.java new file mode 100644 index 0000000..b3cbd8a --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClientTest.java @@ -0,0 +1,104 @@ +package org.openslx.virtualization.configuration.logic; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.File; + +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.bwlp.thrift.iface.OperatingSystem; +import org.openslx.libvirt.xml.LibvirtXmlTestResources; +import org.openslx.virtualization.configuration.VirtualizationConfiguration; +import org.openslx.virtualization.configuration.data.ConfigurationDataDozModServerToDozModClient; +import org.openslx.virtualization.configuration.transformation.TransformationException; +import org.openslx.vm.disk.DiskImageTestResources; + +public class ConfigurationLogicDozModServerToDozModClientTest +{ + private static final String DEFAULT_DISPLAY_NAME = "Test"; + private static final File DEFAULT_DISK_IMAGE = DiskImageTestResources.getDiskFile( "image-default.vmdk" ); + private static final OperatingSystem DEFAULT_GUEST_OS = null; + private static final String DEFAULT_VIRTUALIZER_ID = null; + private static final int DEFAULT_TOTAL_MEMORY = 4096; + + private static final ConfigurationDataDozModServerToDozModClient DEFAULT_CONFIG_DATA = new ConfigurationDataDozModServerToDozModClient( + ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_DISPLAY_NAME, + ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_DISK_IMAGE, + ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_GUEST_OS, + ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_VIRTUALIZER_ID, + ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_TOTAL_MEMORY ); + + @BeforeAll + public static void setUp() + { + // disable logging with log4j + LogManager.getRootLogger().setLevel( Level.OFF ); + } + + @Test + @DisplayName( "Test transformation logic between a dozmod-server and a dozmod-client for Libvirt/QEMU configuration" ) + public void testConfigurationLogicDozModServerToDozModClientLibvirt() throws TransformationException + { + final String inputConfigFileName = "qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml"; + final String expectedConfigFileName = "qemu-kvm_default-ubuntu-20-04-vm_transform-editable.xml"; + final File inputConfig = LibvirtXmlTestResources.getLibvirtXmlFile( inputConfigFileName ); + final File expectedConfig = LibvirtXmlTestResources.getLibvirtXmlFile( expectedConfigFileName ); + final VirtualizationConfiguration<?, ?, ?, ?> config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModServerToDozModClient logic = new ConfigurationLogicDozModServerToDozModClient(); + + logic.apply( config, ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_CONFIG_DATA ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertDoesNotThrow( () -> config.validate() ); + assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + } + + @Test + @DisplayName( "Test transformation logic between a dozmod-server and a dozmod-client for VirtualBox configuration" ) + public void testConfigurationLogicDozModServerToDozModClientVirtualBox() throws TransformationException + { + final String inputConfigFileName = "virtualbox_default-ubuntu_transform-privacy.vbox"; + final String expectedConfigFileName = "virtualbox_default-ubuntu_transform-editable.vbox"; + final File inputConfig = ConfigurationLogicTestResources.getVirtualBoxXmlFile( inputConfigFileName ); + final File expectedConfig = ConfigurationLogicTestResources.getVirtualBoxXmlFile( expectedConfigFileName ); + final VirtualizationConfiguration<?, ?, ?, ?> config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModServerToDozModClient logic = new ConfigurationLogicDozModServerToDozModClient(); + + logic.apply( config, ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_CONFIG_DATA ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertTrue(ConfigurationLogicTestUtils.isVirtualBoxContentEqual( expectedTransformedConfig, transformedConfig ) ); + assertDoesNotThrow( () -> config.validate() ); + } + + @Test + @DisplayName( "Test transformation logic between dozmod-server and a dozmod-client for VMware configuration" ) + public void testConfigurationLogicDozModServerToDozModClientVmware() throws TransformationException + { + final String inputConfigFileName = "vmware-player_default-ubuntu_transform-privacy.vmx"; + final String expectedConfigFileName = "vmware-player_default-ubuntu_transform-editable.vmx"; + final File inputConfig = ConfigurationLogicTestResources.getVmwareVmxFile( inputConfigFileName ); + final File expectedConfig = ConfigurationLogicTestResources.getVmwareVmxFile( expectedConfigFileName ); + final VirtualizationConfiguration<?, ?, ?, ?> config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModServerToDozModClient logic = new ConfigurationLogicDozModServerToDozModClient(); + + logic.apply( config, ConfigurationLogicDozModServerToDozModClientTest.DEFAULT_CONFIG_DATA ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + assertDoesNotThrow( () -> config.validate() ); + } +} diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java index 32aa344..4f85719 100644 --- a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java @@ -10,6 +10,8 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import org.apache.commons.io.FileUtils; @@ -33,6 +35,8 @@ public class ConfigurationLogicTestUtils new OperatingSystem( 11, "Windows 2000 Professional", null, "x86", 4096, 4 ) ) ); // @formatter:on + private static final String REGEX_UUID = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"; + public static VirtualizationConfiguration<?, ?, ?, ?> newVirtualizationConfigurationInstance( File configFile ) { VirtualizationConfiguration<?, ?, ?, ?> config = null; @@ -75,4 +79,22 @@ public class ConfigurationLogicTestUtils return linesContent1.equals( linesContent2 ); } + + public static String removeUuid( String content ) + { + final Pattern patternUuid = Pattern.compile( ConfigurationLogicTestUtils.REGEX_UUID ); + final Matcher matcherUuidContent = patternUuid.matcher( content ); + + // replace all UUIDs with the empty String + return matcherUuidContent.replaceAll( "" ); + } + + public static boolean isVirtualBoxContentEqual( String content1, String content2 ) + { + // replace all UUIDs with the empty String + final String filteredContent1 = ConfigurationLogicTestUtils.removeUuid( content1 ); + final String filteredContent2 = ConfigurationLogicTestUtils.removeUuid( content2 ); + + return ConfigurationLogicTestUtils.isContentEqual( filteredContent1, filteredContent2 ); + } } |