1QA output created by 141 2Formatting 'TEST_DIR/b.IMGFMT', fmt=IMGFMT size=1048576 3Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT backing_fmt=IMGFMT 4Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT backing_fmt=IMGFMT 5{'execute': 'qmp_capabilities'} 6{"return": {}} 7 8=== Testing drive-backup === 9 10{'execute': 'blockdev-add', 11 'arguments': { 12 'node-name': 'drv0', 13 'driver': 'IMGFMT', 14 'file': { 15 'driver': 'file', 16 'filename': 'TEST_DIR/t.IMGFMT' 17 }}} 18{"return": {}} 19{'execute': 'drive-backup', 20'arguments': {'job-id': 'job0', 21'device': 'drv0', 22'target': 'TEST_DIR/o.IMGFMT', 23'format': 'IMGFMT', 24'sync': 'none'}} 25Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT 26{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 27{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 28{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "paused", "id": "job0"}} 29{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 30{'execute': 'blockdev-del', 31 'arguments': {'node-name': 'drv0'}} 32{"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: node is used as backing hd of 'NODE_NAME'"}} 33{'execute': 'block-job-cancel', 34 'arguments': {'device': 'job0'}} 35{"return": {}} 36{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 37{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 0, "speed": 0, "type": "backup"}} 38{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 39{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 40{'execute': 'blockdev-del', 41 'arguments': {'node-name': 'drv0'}} 42{"return": {}} 43 44=== Testing drive-mirror === 45 46{'execute': 'blockdev-add', 47 'arguments': { 48 'node-name': 'drv0', 49 'driver': 'IMGFMT', 50 'file': { 51 'driver': 'file', 52 'filename': 'TEST_DIR/t.IMGFMT' 53 }}} 54{"return": {}} 55{'execute': 'drive-mirror', 56'arguments': {'job-id': 'job0', 57'device': 'drv0', 58'target': 'TEST_DIR/o.IMGFMT', 59'format': 'IMGFMT', 60'sync': 'none'}} 61Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT 62{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 63{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 64{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} 65{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} 66{'execute': 'blockdev-del', 67 'arguments': {'node-name': 'drv0'}} 68{"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: mirror"}} 69{'execute': 'block-job-cancel', 70 'arguments': {'device': 'job0'}} 71{"return": {}} 72{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} 73{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} 74{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} 75{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 76{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 77{'execute': 'blockdev-del', 78 'arguments': {'node-name': 'drv0'}} 79{"return": {}} 80 81=== Testing active block-commit === 82 83{'execute': 'blockdev-add', 84 'arguments': { 85 'node-name': 'drv0', 86 'driver': 'IMGFMT', 87 'file': { 88 'driver': 'file', 89 'filename': 'TEST_DIR/t.IMGFMT' 90 }}} 91{"return": {}} 92{'execute': 'block-commit', 93'arguments': {'job-id': 'job0', 'device': 'drv0'}} 94{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 95{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 96{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} 97{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} 98{'execute': 'blockdev-del', 99 'arguments': {'node-name': 'drv0'}} 100{"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: commit"}} 101{'execute': 'block-job-cancel', 102 'arguments': {'device': 'job0'}} 103{"return": {}} 104{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} 105{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} 106{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} 107{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 108{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 109{'execute': 'blockdev-del', 110 'arguments': {'node-name': 'drv0'}} 111{"return": {}} 112 113=== Testing non-active block-commit === 114 115wrote 1048576/1048576 bytes at offset 0 1161 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 117{'execute': 'blockdev-add', 118 'arguments': { 119 'node-name': 'drv0', 120 'driver': 'IMGFMT', 121 'file': { 122 'driver': 'file', 123 'filename': 'TEST_DIR/t.IMGFMT' 124 }}} 125{"return": {}} 126{'execute': 'block-commit', 127'arguments': {'job-id': 'job0', 128'device': 'drv0', 129'top': 'TEST_DIR/m.IMGFMT', 130'speed': 1}} 131{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 132{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 133{'execute': 'blockdev-del', 134 'arguments': {'node-name': 'drv0'}} 135{"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: commit"}} 136{'execute': 'block-job-cancel', 137 'arguments': {'device': 'job0'}} 138{"return": {}} 139{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 140{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "commit"}} 141{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 142{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 143{'execute': 'blockdev-del', 144 'arguments': {'node-name': 'drv0'}} 145{"return": {}} 146 147=== Testing block-stream === 148 149wrote 1048576/1048576 bytes at offset 0 1501 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 151{'execute': 'blockdev-add', 152 'arguments': { 153 'node-name': 'drv0', 154 'driver': 'IMGFMT', 155 'file': { 156 'driver': 'file', 157 'filename': 'TEST_DIR/t.IMGFMT' 158 }}} 159{"return": {}} 160{'execute': 'block-stream', 161'arguments': {'job-id': 'job0', 162'device': 'drv0', 163'speed': 1}} 164{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 165{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 166{'execute': 'blockdev-del', 167 'arguments': {'node-name': 'drv0'}} 168{"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: stream"}} 169{'execute': 'block-job-cancel', 170 'arguments': {'device': 'job0'}} 171{"return": {}} 172{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 173{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "stream"}} 174{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 175{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 176{'execute': 'blockdev-del', 177 'arguments': {'node-name': 'drv0'}} 178{"return": {}} 179*** done 180