mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 05:17:59 +03:00
qemublocktest: Add new 'synthetic' bitmap detection and validation test case
Based on the 'snapshots' example with manual tweaks to introduce inactive, transient, inconsistent and duplicate bitmaps in various parts of the chain to exercise detection and new validation code. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
9c007fd418
commit
b3845f0e3d
@ -1303,6 +1303,7 @@ mymain(void)
|
||||
|
||||
TEST_BITMAP_DETECT("basic");
|
||||
TEST_BITMAP_DETECT("snapshots");
|
||||
TEST_BITMAP_DETECT("synthetic");
|
||||
|
||||
#define TEST_BACKUP_BITMAP_CALCULATE(testname, source, incrbackup, named) \
|
||||
do { \
|
||||
@ -1358,6 +1359,16 @@ mymain(void)
|
||||
TEST_BITMAP_VALIDATE("snapshots", "d", true);
|
||||
TEST_BITMAP_VALIDATE("snapshots", "current", true);
|
||||
|
||||
TEST_BITMAP_VALIDATE("synthetic", "a", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "b", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "c", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "d", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "current", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "top-ok", true);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "top-inactive", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "top-transient", false);
|
||||
TEST_BITMAP_VALIDATE("synthetic", "top-inactive-transient", false);
|
||||
|
||||
#define TEST_BITMAP_BLOCKCOPY(testname, shllw, ndf) \
|
||||
do { \
|
||||
blockbitmapblockcopydata.name = testname; \
|
||||
|
506
tests/qemublocktestdata/bitmap/synthetic.json
Normal file
506
tests/qemublocktestdata/bitmap/synthetic.json
Normal file
@ -0,0 +1,506 @@
|
||||
[
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"backing-filename-format": "qcow2",
|
||||
"virtual-size": 10485760,
|
||||
"filename": "/tmp/bitmaps.1590749073",
|
||||
"cluster-size": 65536,
|
||||
"format": "qcow2",
|
||||
"actual-size": 208896,
|
||||
"format-specific": {
|
||||
"type": "qcow2",
|
||||
"data": {
|
||||
"compat": "1.1",
|
||||
"compression-type": "zlib",
|
||||
"lazy-refcounts": false,
|
||||
"bitmaps": [
|
||||
{
|
||||
"flags": [
|
||||
"in-use",
|
||||
"auto"
|
||||
],
|
||||
"name": "current",
|
||||
"granularity": 65536
|
||||
}
|
||||
],
|
||||
"refcount-bits": 16,
|
||||
"corrupt": false
|
||||
}
|
||||
},
|
||||
"full-backing-filename": "/tmp/bitmaps.1590749012",
|
||||
"backing-filename": "/tmp/bitmaps.1590749012",
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-1-format",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "qcow2",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"backing_file": "/tmp/bitmaps.1590749012",
|
||||
"dirty-bitmaps": [
|
||||
{
|
||||
"name": "current",
|
||||
"recording": true,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"inconsistent": true,
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "top-ok",
|
||||
"recording": true,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "top-inactive",
|
||||
"recording": false,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "top-transient",
|
||||
"recording": true,
|
||||
"persistent": false,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "top-transient-inactive",
|
||||
"recording": false,
|
||||
"persistent": false,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
}
|
||||
],
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590749073",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 328192,
|
||||
"filename": "/tmp/bitmaps.1590749073",
|
||||
"format": "file",
|
||||
"actual-size": 208896,
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-1-storage",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "file",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590749073",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"backing-filename-format": "qcow2",
|
||||
"virtual-size": 10485760,
|
||||
"filename": "/tmp/bitmaps.1590749012",
|
||||
"cluster-size": 65536,
|
||||
"format": "qcow2",
|
||||
"actual-size": 208896,
|
||||
"format-specific": {
|
||||
"type": "qcow2",
|
||||
"data": {
|
||||
"compat": "1.1",
|
||||
"compression-type": "zlib",
|
||||
"lazy-refcounts": false,
|
||||
"bitmaps": [
|
||||
{
|
||||
"flags": [
|
||||
"auto"
|
||||
],
|
||||
"name": "d",
|
||||
"granularity": 65536
|
||||
}
|
||||
],
|
||||
"refcount-bits": 16,
|
||||
"corrupt": false
|
||||
}
|
||||
},
|
||||
"full-backing-filename": "/tmp/bitmaps.1590748995",
|
||||
"backing-filename": "/tmp/bitmaps.1590748995",
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": true,
|
||||
"node-name": "libvirt-2-format",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "qcow2",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"backing_file": "/tmp/bitmaps.1590748995",
|
||||
"dirty-bitmaps": [
|
||||
{
|
||||
"name": "d",
|
||||
"recording": true,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
}
|
||||
],
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590749012",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 328192,
|
||||
"filename": "/tmp/bitmaps.1590749012",
|
||||
"format": "file",
|
||||
"actual-size": 208896,
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-2-storage",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "file",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590749012",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"backing-filename-format": "qcow2",
|
||||
"virtual-size": 10485760,
|
||||
"filename": "/tmp/bitmaps.1590748995",
|
||||
"cluster-size": 65536,
|
||||
"format": "qcow2",
|
||||
"actual-size": 212992,
|
||||
"format-specific": {
|
||||
"type": "qcow2",
|
||||
"data": {
|
||||
"compat": "1.1",
|
||||
"compression-type": "zlib",
|
||||
"lazy-refcounts": false,
|
||||
"bitmaps": [
|
||||
{
|
||||
"flags": [
|
||||
"auto"
|
||||
],
|
||||
"name": "c",
|
||||
"granularity": 65536
|
||||
},
|
||||
{
|
||||
"flags": [
|
||||
"auto"
|
||||
],
|
||||
"name": "b",
|
||||
"granularity": 65536
|
||||
}
|
||||
],
|
||||
"refcount-bits": 16,
|
||||
"corrupt": false
|
||||
}
|
||||
},
|
||||
"full-backing-filename": "/tmp/bitmaps.1590748992",
|
||||
"backing-filename": "/tmp/bitmaps.1590748992",
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": true,
|
||||
"node-name": "libvirt-3-format",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "qcow2",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"backing_file": "/tmp/bitmaps.1590748992",
|
||||
"dirty-bitmaps": [
|
||||
{
|
||||
"name": "b",
|
||||
"recording": true,
|
||||
"persistent": false,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"recording": false,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
},
|
||||
{
|
||||
"name": "d",
|
||||
"recording": true,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
}
|
||||
],
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590748995",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 393728,
|
||||
"filename": "/tmp/bitmaps.1590748995",
|
||||
"format": "file",
|
||||
"actual-size": 212992,
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-3-storage",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "file",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590748995",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"backing-filename-format": "qcow2",
|
||||
"virtual-size": 10485760,
|
||||
"filename": "/tmp/bitmaps.1590748992",
|
||||
"cluster-size": 65536,
|
||||
"format": "qcow2",
|
||||
"actual-size": 200704,
|
||||
"format-specific": {
|
||||
"type": "qcow2",
|
||||
"data": {
|
||||
"compat": "1.1",
|
||||
"compression-type": "zlib",
|
||||
"lazy-refcounts": false,
|
||||
"refcount-bits": 16,
|
||||
"corrupt": false
|
||||
}
|
||||
},
|
||||
"full-backing-filename": "/tmp/bitmaps.qcow2",
|
||||
"backing-filename": "/tmp/bitmaps.qcow2",
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": true,
|
||||
"node-name": "libvirt-4-format",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "qcow2",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"backing_file": "/tmp/bitmaps.qcow2",
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590748992",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 197120,
|
||||
"filename": "/tmp/bitmaps.1590748992",
|
||||
"format": "file",
|
||||
"actual-size": 200704,
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-4-storage",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "file",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.1590748992",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 10485760,
|
||||
"filename": "/tmp/bitmaps.qcow2",
|
||||
"cluster-size": 65536,
|
||||
"format": "qcow2",
|
||||
"actual-size": 208896,
|
||||
"format-specific": {
|
||||
"type": "qcow2",
|
||||
"data": {
|
||||
"compat": "1.1",
|
||||
"compression-type": "zlib",
|
||||
"lazy-refcounts": false,
|
||||
"bitmaps": [
|
||||
{
|
||||
"flags": [
|
||||
"auto"
|
||||
],
|
||||
"name": "a",
|
||||
"granularity": 65536
|
||||
}
|
||||
],
|
||||
"refcount-bits": 16,
|
||||
"corrupt": false
|
||||
}
|
||||
},
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": true,
|
||||
"node-name": "libvirt-5-format",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "qcow2",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"dirty-bitmaps": [
|
||||
{
|
||||
"name": "a",
|
||||
"recording": true,
|
||||
"persistent": true,
|
||||
"busy": false,
|
||||
"status": "active",
|
||||
"granularity": 65536,
|
||||
"count": 0
|
||||
}
|
||||
],
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.qcow2",
|
||||
"encryption_key_missing": false
|
||||
},
|
||||
{
|
||||
"iops_rd": 0,
|
||||
"detect_zeroes": "off",
|
||||
"image": {
|
||||
"virtual-size": 328192,
|
||||
"filename": "/tmp/bitmaps.qcow2",
|
||||
"format": "file",
|
||||
"actual-size": 208896,
|
||||
"dirty-flag": false
|
||||
},
|
||||
"iops_wr": 0,
|
||||
"ro": false,
|
||||
"node-name": "libvirt-5-storage",
|
||||
"backing_file_depth": 0,
|
||||
"drv": "file",
|
||||
"iops": 0,
|
||||
"bps_wr": 0,
|
||||
"write_threshold": 0,
|
||||
"encrypted": false,
|
||||
"bps": 0,
|
||||
"bps_rd": 0,
|
||||
"cache": {
|
||||
"no-flush": false,
|
||||
"direct": false,
|
||||
"writeback": true
|
||||
},
|
||||
"file": "/tmp/bitmaps.qcow2",
|
||||
"encryption_key_missing": false
|
||||
}
|
||||
]
|
15
tests/qemublocktestdata/bitmap/synthetic.out
Normal file
15
tests/qemublocktestdata/bitmap/synthetic.out
Normal file
@ -0,0 +1,15 @@
|
||||
libvirt-1-format:
|
||||
current: record:1 busy:0 persist:1 inconsist:1 gran:65536 dirty:0
|
||||
top-ok: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
||||
top-inactive: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
||||
top-transient: record:1 busy:0 persist:0 inconsist:0 gran:65536 dirty:0
|
||||
top-transient-inactive: record:0 busy:0 persist:0 inconsist:0 gran:65536 dirty:0
|
||||
libvirt-2-format:
|
||||
d: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
||||
libvirt-3-format:
|
||||
b: record:1 busy:0 persist:0 inconsist:0 gran:65536 dirty:0
|
||||
c: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
||||
d: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
||||
libvirt-4-format:
|
||||
libvirt-5-format:
|
||||
a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
Loading…
Reference in New Issue
Block a user