QA output created by 184
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864

== checking interface ==
Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
        {
            "iops_rd": 0,
            "detect_zeroes": "off",
            "image": {
                "virtual-size": 67108864,
                "filename": "json:{\"throttle-group\": \"group0\", \"driver\": \"throttle\", \"file\": {\"driver\": \"qcow2\", \"file\": {\"driver\": \"file\", \"filename\": \"TEST_DIR/t.qcow2\"}}}",
                "cluster-size": 65536,
                "format": "throttle",
                "actual-size": 200704,
                "dirty-flag": false
            },
            "iops_wr": 0,
            "ro": false,
            "node-name": "throttle0",
            "backing_file_depth": 0,
            "drv": "throttle",
            "iops": 0,
            "bps_wr": 0,
            "write_threshold": 0,
            "encrypted": false,
            "bps": 0,
            "bps_rd": 0,
            "cache": {
                "no-flush": false,
                "direct": false,
                "writeback": true
            },
            "file": "json:{\"throttle-group\": \"group0\", \"driver\": \"throttle\", \"file\": {\"driver\": \"qcow2\", \"file\": {\"driver\": \"file\", \"filename\": \"TEST_DIR/t.qcow2\"}}}",
            "encryption_key_missing": false
        },
        {
            "iops_rd": 0,
            "detect_zeroes": "off",
            "image": {
                "virtual-size": 67108864,
                "filename": "TEST_DIR/t.qcow2",
                "cluster-size": 65536,
                "format": "qcow2",
                "actual-size": 200704,
                "format-specific": {
                    "type": "qcow2",
                    "data": {
                        "compat": "1.1",
                        "lazy-refcounts": false,
                        "refcount-bits": 16,
                        "corrupt": false
                    }
                },
                "dirty-flag": false
            },
            "iops_wr": 0,
            "ro": false,
            "node-name": "disk0",
            "backing_file_depth": 0,
            "drv": "qcow2",
            "iops": 0,
            "bps_wr": 0,
            "write_threshold": 0,
            "encrypted": false,
            "bps": 0,
            "bps_rd": 0,
            "cache": {
                "no-flush": false,
                "direct": false,
                "writeback": true
            },
            "file": "TEST_DIR/t.qcow2",
            "encryption_key_missing": false
        },
        {
            "iops_rd": 0,
            "detect_zeroes": "off",
            "image": {
                "virtual-size": 197120,
                "filename": "TEST_DIR/t.qcow2",
                "format": "file",
                "actual-size": 200704,
                "dirty-flag": false
            },
            "iops_wr": 0,
            "ro": false,
            "node-name": "NODE_NAME",
            "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": "TEST_DIR/t.qcow2",
            "encryption_key_missing": false
        }
    ]
}
{
    "return": [
    ]
}
{
    "return": {
    }
}
{
    "timestamp": {
        "seconds":  TIMESTAMP,
        "microseconds":  TIMESTAMP
    },
    "event": "SHUTDOWN",
    "data": {
        "guest": false
    }
}


== property changes in ThrottleGroup ==
Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
        "bps-read-max-length": 1,
        "iops-read-max-length": 1,
        "bps-read-max": 0,
        "bps-total": 0,
        "iops-total-max-length": 1,
        "iops-total": 1000,
        "iops-write-max": 0,
        "bps-write": 0,
        "bps-total-max": 0,
        "bps-write-max": 0,
        "iops-size": 0,
        "iops-read": 0,
        "iops-write-max-length": 1,
        "iops-write": 0,
        "bps-total-max-length": 1,
        "iops-read-max": 0,
        "bps-read": 0,
        "bps-write-max-length": 1,
        "iops-total-max": 0
    }
}
{
    "return": {
    }
}
{
    "return": {
        "bps-read-max-length": 1,
        "iops-read-max-length": 1,
        "bps-read-max": 0,
        "bps-total": 0,
        "iops-total-max-length": 1,
        "iops-total": 0,
        "iops-write-max": 0,
        "bps-write": 0,
        "bps-total-max": 0,
        "bps-write-max": 0,
        "iops-size": 0,
        "iops-read": 0,
        "iops-write-max-length": 1,
        "iops-write": 0,
        "bps-total-max-length": 1,
        "iops-read-max": 0,
        "bps-read": 0,
        "bps-write-max-length": 1,
        "iops-total-max": 0
    }
}
{
    "return": {
    }
}
{
    "timestamp": {
        "seconds":  TIMESTAMP,
        "microseconds":  TIMESTAMP
    },
    "event": "SHUTDOWN",
    "data": {
        "guest": false
    }
}


== object creation/set errors  ==
Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "error": {
        "class": "GenericError",
        "desc": "Property cannot be set after initialization"
    }
}
{
    "error": {
        "class": "GenericError",
        "desc": "bps/iops/max total values and read/write values cannot be used at the same time"
    }
}
{
    "return": {
    }
}
{
    "timestamp": {
        "seconds":  TIMESTAMP,
        "microseconds":  TIMESTAMP
    },
    "event": "SHUTDOWN",
    "data": {
        "guest": false
    }
}


== don't specify group ==
Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "error": {
        "class": "GenericError",
        "desc": "Parameter 'throttle-group' is missing"
    }
}
{
    "return": {
    }
}
{
    "timestamp": {
        "seconds":  TIMESTAMP,
        "microseconds":  TIMESTAMP
    },
    "event": "SHUTDOWN",
    "data": {
        "guest": false
    }
}


*** done
