From 15b7fb9f9e6770696f568b0239d2ffec34000e56 Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Mon, 10 May 2021 09:51:43 +0200 Subject: Fix HDD detection in VirtualBox configurations newer or equal than v1.17 --- .../org/openslx/virtualization/VersionTest.java | 26 +++- .../VirtualizationConfigurationTestResources.java | 18 +++ .../VirtualizationConfigurationVirtualBoxTest.java | 144 +++++++++++++++++++ .../xml/virtualbox_default-ubuntu_v1-15.vbox | 155 +++++++++++++++++++++ .../xml/virtualbox_default-ubuntu_v1-16.vbox | 59 ++++++++ .../xml/virtualbox_default-ubuntu_v1-17.vbox | 59 ++++++++ .../xml/virtualbox_default-ubuntu_v1-18.vbox | 56 ++++++++ 7 files changed, 515 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationTestResources.java create mode 100644 src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBoxTest.java create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-15.vbox create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-16.vbox create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-17.vbox create mode 100644 src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-18.vbox (limited to 'src/test') diff --git a/src/test/java/org/openslx/virtualization/VersionTest.java b/src/test/java/org/openslx/virtualization/VersionTest.java index 988437a..21464d9 100644 --- a/src/test/java/org/openslx/virtualization/VersionTest.java +++ b/src/test/java/org/openslx/virtualization/VersionTest.java @@ -92,8 +92,19 @@ public class VersionTest } @Test - @DisplayName( "Test that version is larger than" ) - public void testVersionLargerThan() + @DisplayName( "Test that version is smaller than with helper method" ) + public void testVersionSmallerThanMethod() + { + final Version versionOne = new Version( Short.valueOf( "2" ), Short.valueOf( "3" ) ); + final Version versionTwo = new Version( Short.valueOf( "3" ), Short.valueOf( "2" ) ); + + assertTrue( versionOne.isSmallerThan( versionTwo ) ); + assertFalse( versionTwo.isSmallerThan( versionOne ) ); + } + + @Test + @DisplayName( "Test that version is greater than" ) + public void testVersionGreaterThan() { final Version versionOne = new Version( Short.valueOf( "3" ), Short.valueOf( "3" ) ); final Version versionTwo = new Version( Short.valueOf( "3" ), Short.valueOf( "2" ) ); @@ -102,6 +113,17 @@ public class VersionTest assertEquals( -1, versionTwo.compareTo( versionOne ) ); } + @Test + @DisplayName( "Test that version is greater than with helper method" ) + public void testVersionGreaterThanMethod() + { + final Version versionOne = new Version( Short.valueOf( "3" ), Short.valueOf( "3" ) ); + final Version versionTwo = new Version( Short.valueOf( "3" ), Short.valueOf( "2" ) ); + + assertTrue( versionOne.isGreaterThan( versionTwo ) ); + assertFalse( versionTwo.isGreaterThan( versionOne ) ); + } + @Test @DisplayName( "Test that versions are equal (compareTo)" ) public void testVersionEqualCompareTo() diff --git a/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationTestResources.java b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationTestResources.java new file mode 100644 index 0000000..4dfd0b7 --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationTestResources.java @@ -0,0 +1,18 @@ +package org.openslx.virtualization.configuration; + +import java.io.File; + +import org.openslx.virtualization.configuration.logic.ConfigurationLogicTestResources; + +public class VirtualizationConfigurationTestResources +{ + public static File getVmwareVmxFile( String vmwareVmxFileName ) + { + return ConfigurationLogicTestResources.getVmwareVmxFile( vmwareVmxFileName ); + } + + public static File getVirtualBoxXmlFile( String virtualBoxXmlFileName ) + { + return ConfigurationLogicTestResources.getVirtualBoxXmlFile( virtualBoxXmlFileName ); + } +} diff --git a/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBoxTest.java b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBoxTest.java new file mode 100644 index 0000000..496c080 --- /dev/null +++ b/src/test/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBoxTest.java @@ -0,0 +1,144 @@ +package org.openslx.virtualization.configuration; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +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.assertTrue; +import static org.junit.jupiter.params.provider.Arguments.arguments; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +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.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.openslx.virtualization.Version; +import org.openslx.vm.disk.DiskImage.ImageFormat; + +public class VirtualizationConfigurationVirtualBoxTest +{ + @BeforeAll + public static void setUp() + { + // disable logging with log4j + LogManager.getRootLogger().setLevel( Level.OFF ); + } + + @ParameterizedTest + @DisplayName( "Test version from VM configuration" ) + @MethodSource( "configAndVersionProvider" ) + public void testVirtualizationConfigurationVirtualBoxGetConfigurationVersion( String configFileName, + Version configVersion ) + throws IOException, VirtualizationConfigurationException + { + final File configFile = VirtualizationConfigurationTestResources.getVirtualBoxXmlFile( configFileName ); + final VirtualizationConfigurationVirtualBox vmConfig = new VirtualizationConfigurationVirtualBox( null, + configFile ); + + assertEquals( configVersion, vmConfig.getConfigurationVersion() ); + + assertDoesNotThrow( () -> vmConfig.validate() ); + } + + @ParameterizedTest + @DisplayName( "Test display name from VM configuration" ) + @MethodSource( "configAndVersionProvider" ) + public void testVirtualizationConfigurationVirtualBoxGetDisplayName( String configFileName, Version configVersion ) + throws IOException, VirtualizationConfigurationException + { + final File configFile = VirtualizationConfigurationTestResources.getVirtualBoxXmlFile( configFileName ); + final VirtualizationConfigurationVirtualBox vmConfig = new VirtualizationConfigurationVirtualBox( null, + configFile ); + + final String displayName = vmConfig.getDisplayName(); + + assertEquals( VirtualizationConfigurationVirtualBoxTest.getVmName( configVersion ), displayName ); + + assertDoesNotThrow( () -> vmConfig.validate() ); + } + + @ParameterizedTest + @DisplayName( "Test machine snapshot state from VM configuration" ) + @MethodSource( "configAndVersionProvider" ) + public void testVirtualizationConfigurationVirtualBoxIsMachineSnapshot( String configFileName, + Version configVersion ) + throws IOException, VirtualizationConfigurationException + { + final File configFile = VirtualizationConfigurationTestResources.getVirtualBoxXmlFile( configFileName ); + final VirtualizationConfigurationVirtualBox vmConfig = new VirtualizationConfigurationVirtualBox( null, + configFile ); + + final boolean isVmSnapshot = vmConfig.isMachineSnapshot(); + + assertFalse( isVmSnapshot ); + + assertDoesNotThrow( () -> vmConfig.validate() ); + } + + @ParameterizedTest + @DisplayName( "Test supported image formats from VM configuration" ) + @MethodSource( "configAndVersionProvider" ) + public void testVirtualizationConfigurationVirtualBoxGetSupportedImageFormats( String configFileName, + Version configVersion ) + throws IOException, VirtualizationConfigurationException + { + final File configFile = VirtualizationConfigurationTestResources.getVirtualBoxXmlFile( configFileName ); + final VirtualizationConfigurationVirtualBox vmConfig = new VirtualizationConfigurationVirtualBox( null, + configFile ); + + final List supportedImageFormats = vmConfig.getVirtualizer().getSupportedImageFormats(); + + assertNotNull( supportedImageFormats ); + assertEquals( 1, supportedImageFormats.size() ); + assertTrue( supportedImageFormats.containsAll( Arrays.asList( ImageFormat.VDI ) ) ); + + assertDoesNotThrow( () -> vmConfig.validate() ); + } + + @ParameterizedTest + @DisplayName( "Test output of HDDs from VM configuration" ) + @MethodSource( "configAndVersionProvider" ) + public void testVirtualizationConfigurationVirtualBoxGetHdds( String configFileName, Version configVersion ) + throws IOException, VirtualizationConfigurationException + { + final File configFile = VirtualizationConfigurationTestResources.getVirtualBoxXmlFile( configFileName ); + final VirtualizationConfigurationVirtualBox vmConfig = new VirtualizationConfigurationVirtualBox( null, + configFile ); + + final List hdds = vmConfig.getHdds(); + + final String imageFileName = VirtualizationConfigurationVirtualBoxTest.getVmName( configVersion ) + ".vdi"; + + assertNotNull( hdds ); + assertEquals( 1, hdds.size() ); + assertEquals( imageFileName, hdds.get( 0 ).diskImage ); + + assertDoesNotThrow( () -> vmConfig.validate() ); + } + + static String getVmName( Version version ) + { + return "ubuntu_" + version.toString().replace( '.', '-' ); + } + + static Stream configAndVersionProvider() + { + return Stream.of( + arguments( "virtualbox_default-ubuntu_v1-15.vbox", + new Version( Short.valueOf( "1" ), Short.valueOf( "15" ) ) ), + arguments( "virtualbox_default-ubuntu_v1-16.vbox", + new Version( Short.valueOf( "1" ), Short.valueOf( "16" ) ) ), + arguments( "virtualbox_default-ubuntu_v1-17.vbox", + new Version( Short.valueOf( "1" ), Short.valueOf( "17" ) ) ), + arguments( "virtualbox_default-ubuntu_v1-18.vbox", + new Version( Short.valueOf( "1" ), Short.valueOf( "18" ) ) ) ); + } +} diff --git a/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-15.vbox b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-15.vbox new file mode 100644 index 0000000..5e04478 --- /dev/null +++ b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-15.vbox @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-16.vbox b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-16.vbox new file mode 100644 index 0000000..04213e8 --- /dev/null +++ b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-16.vbox @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-17.vbox b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-17.vbox new file mode 100644 index 0000000..d9218ab --- /dev/null +++ b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-17.vbox @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-18.vbox b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-18.vbox new file mode 100644 index 0000000..6d70339 --- /dev/null +++ b/src/test/resources/virtualbox/xml/virtualbox_default-ubuntu_v1-18.vbox @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3-55-g7522