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": SIZE,
                "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": SIZE,
                "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": SIZE,
                "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
