diff options
| author | Manuel Bentele | 2021-01-08 13:44:15 +0100 |
|---|---|---|
| committer | Manuel Bentele | 2021-01-08 13:44:15 +0100 |
| commit | aac457735f24129b9113c53ae93a1a11f524b6c0 (patch) | |
| tree | feb3e22c27f54a2c1fbb8aeef149b4afd80ab25d /src/test/java/org/openslx/util/vm | |
| parent | Add JUnit 5 and its Maven integration for tests (diff) | |
| download | master-sync-shared-aac457735f24129b9113c53ae93a1a11f524b6c0.tar.gz master-sync-shared-aac457735f24129b9113c53ae93a1a11f524b6c0.tar.xz master-sync-shared-aac457735f24129b9113c53ae93a1a11f524b6c0.zip | |
Add support for QCOW2 images for QEMU
Diffstat (limited to 'src/test/java/org/openslx/util/vm')
| -rw-r--r-- | src/test/java/org/openslx/util/vm/DiskImageTest.java | 250 | ||||
| -rw-r--r-- | src/test/java/org/openslx/util/vm/DiskImageTestResources.java | 16 |
2 files changed, 266 insertions, 0 deletions
diff --git a/src/test/java/org/openslx/util/vm/DiskImageTest.java b/src/test/java/org/openslx/util/vm/DiskImageTest.java new file mode 100644 index 0000000..7537520 --- /dev/null +++ b/src/test/java/org/openslx/util/vm/DiskImageTest.java @@ -0,0 +1,250 @@ +package org.openslx.util.vm; + +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 java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.openslx.util.vm.DiskImage.ImageFormat; +import org.openslx.util.vm.DiskImage.UnknownImageFormatException; + +public class DiskImageTest +{ + @Test + @DisplayName( "Test detection of VMDK disk image" ) + public void testVmdkDiskImage() throws FileNotFoundException, IOException, UnknownImageFormatException + { + File file = DiskImageTestResources.getDiskFile( "image-default.vmdk" ); + DiskImage image = new DiskImage( file ); + + assertEquals( ImageFormat.VMDK.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 18, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of VDI disk image" ) + public void testVdiDiskImage() throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image-default.vdi" ) ); + + assertEquals( ImageFormat.VDI.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 0, image.hwVersion ); + assertNotNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of default QCOW2 disk image" ) + public void testQcow2DiskImage() throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image-default.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 16384 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2Compressed16384DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-16384_cp-on_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 16384 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2Compressed16384DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-16384_cp-on_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 16384 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2NonCompressed16384DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-16384_cp-off_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 16384 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2NonCompressed16384DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-16384_cp-off_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 65536 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2Compressed65536DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-65536_cp-on_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 65536 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2Compressed65536DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-65536_cp-on_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 65536 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2NonCompressed65536DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-65536_cp-off_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 65536 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2NonCompressed65536DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-65536_cp-off_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 2097152 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2Compressed2097152DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-2097152_cp-on_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of compressed, 2097152 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2Compressed2097152DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-2097152_cp-on_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( true, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 2097152 byte cluster QCOW2 disk image with extended L2 tables" ) + public void testQcow2DetectionL2NonCompressed2097152DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-2097152_cp-off_l2-on.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test detection of non-compressed, 2097152 byte cluster QCOW2 disk image without extended L2 tables" ) + public void testQcow2DetectionNonL2NonCompressed2097152DiskImage() + throws FileNotFoundException, IOException, UnknownImageFormatException + { + DiskImage image = new DiskImage( DiskImageTestResources.getDiskFile( "image_cs-2097152_cp-off_l2-off.qcow2" ) ); + + assertEquals( ImageFormat.QCOW2.toString(), image.getImageFormat().toString() ); + assertEquals( true, image.isStandalone ); + assertEquals( false, image.isSnapshot ); + assertEquals( false, image.isCompressed ); + assertEquals( 3, image.hwVersion ); + assertNull( image.diskDescription ); + } + + @Test + @DisplayName( "Test of invalid disk image" ) + public void testInvalidDiskImage() throws FileNotFoundException, IOException, UnknownImageFormatException + { + Assertions.assertThrows( UnknownImageFormatException.class, () -> { + new DiskImage( DiskImageTestResources.getDiskFile( "image-default.invalid" ) ); + } ); + } +} diff --git a/src/test/java/org/openslx/util/vm/DiskImageTestResources.java b/src/test/java/org/openslx/util/vm/DiskImageTestResources.java new file mode 100644 index 0000000..1f164bd --- /dev/null +++ b/src/test/java/org/openslx/util/vm/DiskImageTestResources.java @@ -0,0 +1,16 @@ +package org.openslx.util.vm; + +import java.io.File; +import java.net.URL; + +public class DiskImageTestResources +{ + private static final String DISK_PREFIX_PATH = File.separator + "disk"; + + public static File getDiskFile( String diskFileName ) + { + String diskPath = DiskImageTestResources.DISK_PREFIX_PATH + File.separator + diskFileName; + URL disk = DiskImageTestResources.class.getResource( diskPath ); + return new File( disk.getFile() ); + } +} |
