1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-01-02 01:17:58 +03:00

tests: virstoragetest: Add tests for detection of qcow2 'data_file' feature

Add two test images showing the use of 'data_file' and 'data_file_raw'
(although the latter is not detected by libvirt) so that we can see that
the qcow2 metadata parser and backing chain populators work correctly.

The example files were created by:

 qemu-img create  -f qcow2 -o data_file=raw,data_file_raw=true,preallocation=off datafile.qcow2 1k
 qemu-img create  -f qcow2 -o data_file=rawpreallocation=off -F qcow2 -b datafile.qcow2 qcow2datafile-datafile.qcow2

Note that 'data_file_raw' is mutually exclusive with backing images.

Signed-off-by: Nikolai Barybin <nikolai.barybin@virtuozzo.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Nikolai Barybin 2024-11-20 18:48:49 +03:00 committed by Peter Krempa
parent 59b1408860
commit 4281362a96
5 changed files with 81 additions and 0 deletions

View File

@ -203,6 +203,26 @@ testStorageChain(const void *args)
NULLSTR(virStorageFileFormatTypeToString(elt->format)),
virStorageNetProtocolTypeToString(elt->protocol),
NULLSTR(elt->nhosts ? elt->hosts[0].name : NULL));
if (elt->dataFileStore) {
g_autofree char *strippedPathDataFileRaw = virTestStablePath(elt->dataFileRaw);
g_autofree char *strippedPathDataFile = virTestStablePath(elt->dataFileStore->path);
virBufferAsprintf(&buf,
"dataFileRaw: %s\n\n\n"
"dataFileStoreSource:\n"
"path: %s\n"
"capacity: %lld\n"
"encryption: %d\n"
"type:%s\n"
"format:%s\n",
strippedPathDataFileRaw,
strippedPathDataFile,
elt->dataFileStore->capacity,
!!elt->dataFileStore->encryption,
NULLSTR(virStorageTypeToString(elt->dataFileStore->type)),
NULLSTR(virStorageFileFormatTypeToString(elt->dataFileStore->format)));
}
}
virBufferTrim(&buf, "\n");
@ -464,6 +484,16 @@ mymain(void)
testCleanupImages();
/* qcow2 + datafile
* 1) qcow2 image with data file
* 2) qcow2 -> qcow2 backing image with data file */
TEST_CHAIN("qcow2-datafile",
abs_srcdir "/virstoragetestdata/images/datafile.qcow2",
VIR_STORAGE_FILE_QCOW2, EXP_PASS);
TEST_CHAIN("qcow2datafile-qcow2_qcow2-datafile",
abs_srcdir "/virstoragetestdata/images/qcow2datafile-datafile.qcow2",
VIR_STORAGE_FILE_QCOW2, EXP_PASS);
/* Test various combinations of qcow2 images with missing 'backing_format' */
TEST_CHAIN("qcow2-qcow2_qcow2-qcow2_qcow2-auto",
abs_srcdir "/virstoragetestdata/images/qcow2_qcow2-qcow2_qcow2-auto.qcow2",

Binary file not shown.

View File

@ -0,0 +1,20 @@
path:ABS_SRCDIR/virstoragetestdata/images/datafile.qcow2
backingStoreRaw: <null>
backingStoreRawFormat: none(0)
capacity: 1024
encryption: 0
relPath:<null>
type:file
format:qcow2
protocol:none
hostname:<null>
dataFileRaw: raw
dataFileStoreSource:
path: ABS_SRCDIR/virstoragetestdata/images/raw
capacity: 0
encryption: 0
type:file
format:raw

View File

@ -0,0 +1,31 @@
path:ABS_SRCDIR/virstoragetestdata/images/qcow2datafile-datafile.qcow2
backingStoreRaw: datafile.qcow2
backingStoreRawFormat: qcow2(14)
capacity: 1024
encryption: 0
relPath:<null>
type:file
format:qcow2
protocol:none
hostname:<null>
path:ABS_SRCDIR/virstoragetestdata/images/datafile.qcow2
backingStoreRaw: <null>
backingStoreRawFormat: none(0)
capacity: 1024
encryption: 0
relPath:datafile.qcow2
type:file
format:qcow2
protocol:none
hostname:<null>
dataFileRaw: raw
dataFileStoreSource:
path: ABS_SRCDIR/virstoragetestdata/images/raw
capacity: 0
encryption: 0
type:file
format:raw