From 858142d21286f2d9fee18e98d623e409ff8f6ed6 Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Thu, 29 Apr 2021 09:15:13 +0200 Subject: Add unit tests for transformation logic (dozmod-client --> dozmod-server) --- ...urationLogicDozModClientToDozModServerTest.java | 85 +++++++++++ .../logic/ConfigurationLogicTestResources.java | 32 ++++ .../logic/ConfigurationLogicTestUtils.java | 78 ++++++++++ ...m_default-ubuntu-20-04-vm_transform-privacy.xml | 164 +++++++++++++++++++++ .../virtualbox/xml/virtualbox_default-ubuntu.vbox | 58 ++++++++ ...irtualbox_default-ubuntu_transform-privacy.vbox | 42 ++++++ .../vmware/vmx/vmware-player_default-ubuntu.vmx | 57 +++++++ .../vmware/vmx/vmware-player_default-ubuntu.vmxf | 8 + ...are-player_default-ubuntu_transform-privacy.vmx | 32 ++++ 9 files changed, 556 insertions(+) create mode 100644 src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java create mode 100644 src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestResources.java create mode 100644 src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java create mode 100644 src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu.vbox create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_transform-privacy.vbox create mode 100755 src/test/resources/vmware/vmx/vmware-player_default-ubuntu.vmx create mode 100644 src/test/resources/vmware/vmx/vmware-player_default-ubuntu.vmxf create mode 100644 src/test/resources/vmware/vmx/vmware-player_default-ubuntu_transform-privacy.vmx (limited to 'src/test') diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java new file mode 100644 index 0000000..4654957 --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServerTest.java @@ -0,0 +1,85 @@ +package org.openslx.virtualization.configuration.logic; + +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.libvirt.xml.LibvirtXmlTestResources; +import org.openslx.virtualization.configuration.VirtualizationConfiguration; +import org.openslx.virtualization.configuration.data.ConfigurationDataDozModClientToDozModServer; +import org.openslx.virtualization.configuration.transformation.TransformationException; + +public class ConfigurationLogicDozModClientToDozModServerTest +{ + @BeforeAll + public static void setUp() + { + // disable logging with log4j + LogManager.getRootLogger().setLevel( Level.OFF ); + } + + @Test + @DisplayName( "Test transformation logic between a dozmod-client and a dozmod-server for Libvirt/QEMU configuration" ) + public void testConfigurationLogicDozModClientToDozModServerLibvirt() throws TransformationException + { + final String inputConfigFileName = "qemu-kvm_default-ubuntu-20-04-vm.xml"; + final String expectedConfigFileName = "qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml"; + final File inputConfig = LibvirtXmlTestResources.getLibvirtXmlFile( inputConfigFileName ); + final File expectedConfig = LibvirtXmlTestResources.getLibvirtXmlFile( expectedConfigFileName ); + final VirtualizationConfiguration config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModClientToDozModServer logic = new ConfigurationLogicDozModClientToDozModServer(); + + logic.apply( config, new ConfigurationDataDozModClientToDozModServer() ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + } + + @Test + @DisplayName( "Test transformation logic between a dozmod-client and a dozmod-server for VirtualBox configuration" ) + public void testConfigurationLogicDozModClientToDozModServerVirtualBox() throws TransformationException + { + final String inputConfigFileName = "virtualbox_default-ubuntu.vbox"; + final String expectedConfigFileName = "virtualbox_default-ubuntu_transform-privacy.vbox"; + final File inputConfig = ConfigurationLogicTestResources.getVirtualBoxXmlFile( inputConfigFileName ); + final File expectedConfig = ConfigurationLogicTestResources.getVirtualBoxXmlFile( expectedConfigFileName ); + final VirtualizationConfiguration config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModClientToDozModServer logic = new ConfigurationLogicDozModClientToDozModServer(); + + logic.apply( config, new ConfigurationDataDozModClientToDozModServer() ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + } + + @Test + @DisplayName( "Test transformation logic between a dozmod-client and a dozmod-server for VMware configuration" ) + public void testConfigurationLogicDozModClientToDozModServerVmware() throws TransformationException + { + final String inputConfigFileName = "vmware-player_default-ubuntu.vmx"; + final String expectedConfigFileName = "vmware-player_default-ubuntu_transform-privacy.vmx"; + final File inputConfig = ConfigurationLogicTestResources.getVmwareVmxFile( inputConfigFileName ); + final File expectedConfig = ConfigurationLogicTestResources.getVmwareVmxFile( expectedConfigFileName ); + final VirtualizationConfiguration config; + config = ConfigurationLogicTestUtils.newVirtualizationConfigurationInstance( inputConfig ); + final ConfigurationLogicDozModClientToDozModServer logic = new ConfigurationLogicDozModClientToDozModServer(); + + logic.apply( config, new ConfigurationDataDozModClientToDozModServer() ); + + final String transformedConfig = config.getConfigurationAsString(); + final String expectedTransformedConfig = ConfigurationLogicTestUtils.readFileToString( expectedConfig ); + + assertTrue( ConfigurationLogicTestUtils.isContentEqual( expectedTransformedConfig, transformedConfig ) ); + } +} diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestResources.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestResources.java new file mode 100644 index 0000000..ceafceb --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestResources.java @@ -0,0 +1,32 @@ +package org.openslx.virtualization.configuration.logic; + +import java.io.File; +import java.net.URL; + +public class ConfigurationLogicTestResources +{ + private static final String VMWARE_PREFIX_PATH = File.separator + "vmware"; + private static final String VMWARE_PREFIX_PATH_VMX = VMWARE_PREFIX_PATH + File.separator + "vmx"; + + private static final String VIRTUALBOX_PREFIX_PATH = File.separator + "virtualbox"; + private static final String VIRTUALBOX_PREFIX_PATH_XML = VIRTUALBOX_PREFIX_PATH + File.separator + "xml"; + + private static File getFile( String prefixPath, String fileName ) + { + final String filePath = prefixPath + File.separator + fileName; + final URL fileUrl = ConfigurationLogicTestResources.class.getResource( filePath ); + return new File( fileUrl.getFile() ); + } + + public static File getVmwareVmxFile( String vmwareVmxFileName ) + { + return ConfigurationLogicTestResources.getFile( ConfigurationLogicTestResources.VMWARE_PREFIX_PATH_VMX, + vmwareVmxFileName ); + } + + public static File getVirtualBoxXmlFile( String virtualBoxXmlFileName ) + { + return ConfigurationLogicTestResources.getFile( ConfigurationLogicTestResources.VIRTUALBOX_PREFIX_PATH_XML, + virtualBoxXmlFileName ); + } +} diff --git a/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java new file mode 100644 index 0000000..32aa344 --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java @@ -0,0 +1,78 @@ +package org.openslx.virtualization.configuration.logic; + +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.io.FileUtils; +import org.openslx.bwlp.thrift.iface.OperatingSystem; +import org.openslx.virtualization.configuration.VirtualizationConfiguration; + +public class ConfigurationLogicTestUtils +{ + // @formatter:off + private static final List STUB_OS_LIST = Collections.unmodifiableList( Arrays.asList( + new OperatingSystem( 1, "Windows 7 (64 Bit)", null, "AMD64", 196608, 256 ), + new OperatingSystem( 2, "Windows 8 (32 Bit)", null, "x86", 4096, 32 ), + new OperatingSystem( 3, "Windows 8 (64 Bit)", null, "AMD64", 131072, 256 ), + new OperatingSystem( 4, "Ubuntu (32 Bit)", null, "x86", 0, 0 ), + new OperatingSystem( 5, "Ubuntu (64 Bit)", null, "AMD64", 0, 0 ), + new OperatingSystem( 6, "OpenSUSE (32 Bit)", null, "x86", 0, 0 ), + new OperatingSystem( 7, "OpenSUSE (64 Bit)", null, "AMD64", 0, 0 ), + new OperatingSystem( 8, "Other Linux (32 Bit)", null, "x86", 0, 0 ), + new OperatingSystem( 9, "Other Linux (64 Bit)", null, "AMD64", 0, 0 ), + new OperatingSystem( 10, "Windows 7 (32 Bit)", null, "x86", 4096, 32 ), + new OperatingSystem( 11, "Windows 2000 Professional", null, "x86", 4096, 4 ) ) ); + // @formatter:on + + public static VirtualizationConfiguration newVirtualizationConfigurationInstance( File configFile ) + { + VirtualizationConfiguration config = null; + + try { + config = VirtualizationConfiguration.getInstance( ConfigurationLogicTestUtils.STUB_OS_LIST, configFile ); + } catch ( IOException e ) { + fail( "Virtualization configuration file '" + configFile.getName() + "' can not be processed!" ); + } + + if ( config == null ) { + fail( "Virtualization configuration can not be created from file '" + configFile.getName() + "'" ); + } + + return config; + } + + public static String readFileToString( File file ) + { + String content = null; + + try { + content = FileUtils.readFileToString( file, StandardCharsets.UTF_8 ); + } catch ( IOException e ) { + fail( "Could not read content of file '" + file.getName() + "'" ); + } + + return content; + } + + public static boolean isContentEqual( String content1, String content2 ) + { + final BufferedReader bfrContent1 = new BufferedReader( new StringReader( content1 ) ); + final BufferedReader bfrContent2 = new BufferedReader( new StringReader( content2 ) ); + final List linesContent1 = bfrContent1.lines().collect( Collectors.toList() ); + final List linesContent2 = bfrContent2.lines().collect( Collectors.toList() ); + + Collections.sort( linesContent1 ); + Collections.sort( linesContent2 ); + + return linesContent1.equals( linesContent2 ); + } +} diff --git a/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml b/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml new file mode 100644 index 0000000..930ff1c --- /dev/null +++ b/src/test/resources/libvirt/xml/qemu-kvm_default-ubuntu-20-04-vm_transform-privacy.xml @@ -0,0 +1,164 @@ + + ubuntu-20-04 + 8dc5433c-0228-49e4-b019-fa2b606aa544 + Ubuntu 20.04 + Ubuntu 20.04 desktop installation + + + + + + 4194304 + 4194304 + 2 + + hvm + + + + + + + + + + + + + + destroy + restart + destroy + + + + + + /usr/bin/qemu-system-x86_64 + + + +
+ + + + + +
+ + + + +
+ + +
+ + + +
+ + + +
+ + + +
+ + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + +
+ + +
+ + + + + + +
+ + + + + + + + + + + +
+ + + +
+ + +
+ + + + + + + + +
+ +