iotests: add iotest 236 for testing bitmap merge

New interface, new smoke test.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20181221093529.23855-12-jsnow@redhat.com>
[eblake: fix last-minute change to echo text]
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
John Snow 2018-12-21 04:35:29 -05:00 committed by Eric Blake
parent 55cd64eab5
commit 14da540f2a
3 changed files with 513 additions and 0 deletions

351
tests/qemu-iotests/236.out Normal file
View file

@ -0,0 +1,351 @@
--- Preparing image & VM ---
--- Adding preliminary bitmaps A & B ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapA", "node": "drive0"}}
{"return": {}}
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapB", "node": "drive0"}}
{"return": {}}
--- Emulating writes ---
write -P0x5d 0 64k
{"return": ""}
write -P0xd5 1M 64k
{"return": ""}
write -P0xdc 32M 64k
{"return": ""}
write -P0xcd 0x3ff0000 64k
{"return": ""}
{
"bitmaps": {
"drive0": [
{
"count": 262144,
"granularity": 65536,
"name": "bitmapB",
"status": "active"
},
{
"count": 262144,
"granularity": 65536,
"name": "bitmapA",
"status": "active"
}
]
}
}
--- Submitting & Aborting Transaction ---
{
"execute": "transaction",
"arguments": {
"actions": [
{
"data": {
"node": "drive0",
"name": "bitmapB"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
"node": "drive0",
"name": "bitmapC",
"granularity": 65536
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
"node": "drive0",
"name": "bitmapA"
},
"type": "block-dirty-bitmap-clear"
},
{
"data": {},
"type": "abort"
}
]
}
}
{
"error": {
"class": "GenericError",
"desc": "Transaction aborted using Abort action"
}
}
{
"bitmaps": {
"drive0": [
{
"count": 262144,
"granularity": 65536,
"name": "bitmapB",
"status": "active"
},
{
"count": 262144,
"granularity": 65536,
"name": "bitmapA",
"status": "active"
}
]
}
}
--- Disabling B & Adding C ---
{
"execute": "transaction",
"arguments": {
"actions": [
{
"data": {
"node": "drive0",
"name": "bitmapB"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
"node": "drive0",
"name": "bitmapC",
"granularity": 65536
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
"node": "drive0",
"name": "bitmapC"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
"node": "drive0",
"name": "bitmapC"
},
"type": "block-dirty-bitmap-enable"
}
]
}
}
{
"return": {}
}
--- Emulating further writes ---
write -P0xab 0 64k
{"return": ""}
write -P0xad 0x00f8000 64k
{"return": ""}
write -P0x1d 0x2008000 64k
{"return": ""}
write -P0xea 0x3fe0000 64k
{"return": ""}
--- Disabling A & C ---
{
"execute": "transaction",
"arguments": {
"actions": [
{
"data": {
"node": "drive0",
"name": "bitmapA"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
"node": "drive0",
"name": "bitmapC"
},
"type": "block-dirty-bitmap-disable"
}
]
}
}
{
"return": {}
}
{
"bitmaps": {
"drive0": [
{
"count": 393216,
"granularity": 65536,
"name": "bitmapC",
"status": "disabled"
},
{
"count": 262144,
"granularity": 65536,
"name": "bitmapB",
"status": "disabled"
},
{
"count": 458752,
"granularity": 65536,
"name": "bitmapA",
"status": "disabled"
}
]
}
}
--- Submitting & Aborting Merge Transaction ---
{
"execute": "transaction",
"arguments": {
"actions": [
{
"data": {
"node": "drive0",
"disabled": true,
"name": "bitmapD",
"granularity": 65536
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
"node": "drive0",
"target": "bitmapD",
"bitmaps": [
"bitmapB",
"bitmapC"
]
},
"type": "block-dirty-bitmap-merge"
},
{
"data": {},
"type": "abort"
}
]
}
}
{
"error": {
"class": "GenericError",
"desc": "Transaction aborted using Abort action"
}
}
{
"bitmaps": {
"drive0": [
{
"count": 393216,
"granularity": 65536,
"name": "bitmapC",
"status": "disabled"
},
{
"count": 262144,
"granularity": 65536,
"name": "bitmapB",
"status": "disabled"
},
{
"count": 458752,
"granularity": 65536,
"name": "bitmapA",
"status": "disabled"
}
]
}
}
--- Creating D as a merge of B & C ---
{
"execute": "transaction",
"arguments": {
"actions": [
{
"data": {
"node": "drive0",
"disabled": true,
"name": "bitmapD",
"granularity": 65536
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
"node": "drive0",
"target": "bitmapD",
"bitmaps": [
"bitmapB",
"bitmapC"
]
},
"type": "block-dirty-bitmap-merge"
}
]
}
}
{
"return": {}
}
{
"bitmaps": {
"drive0": [
{
"count": 458752,
"granularity": 65536,
"name": "bitmapD",
"status": "disabled"
},
{
"count": 393216,
"granularity": 65536,
"name": "bitmapC",
"status": "disabled"
},
{
"count": 262144,
"granularity": 65536,
"name": "bitmapB",
"status": "disabled"
},
{
"count": 458752,
"granularity": 65536,
"name": "bitmapA",
"status": "disabled"
}
]
}
}
--- Removing bitmaps A, B, C, and D ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapA", "node": "drive0"}}
{"return": {}}
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapB", "node": "drive0"}}
{"return": {}}
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapC", "node": "drive0"}}
{"return": {}}
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapD", "node": "drive0"}}
{"return": {}}
--- Final Query ---
{
"bitmaps": {
"drive0": []
}
}
--- Done ---