QA output created by 184

== checking interface ==
Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
        {
            "iops_rd": 0,
            "detect_zeroes": "off",
            "image": {
                "virtual-size": 1073741824,
                "filename": "json:{\"throttle-group\": \"group0\", \"driver\": \"throttle\", \"file\": {\"driver\": \"null-co\"}}",
                "format": "throttle"
            },
            "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\": \"null-co\"}}",
            "encryption_key_missing": false
        },
        {
            "iops_rd": 0,
            "detect_zeroes": "off",
            "image": {
                "virtual-size": 1073741824,
                "filename": "null-co://",
                "format": "null-co"
            },
            "iops_wr": 0,
            "ro": false,
            "node-name": "disk0",
            "backing_file_depth": 0,
            "drv": "null-co",
            "iops": 0,
            "bps_wr": 0,
            "write_threshold": 0,
            "encrypted": false,
            "bps": 0,
            "bps_rd": 0,
            "cache": {
                "no-flush": false,
                "direct": false,
                "writeback": true
            },
            "file": "null-co://",
            "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
