Index: client/tests/kvm/tests/qmp_basic.py |
diff --git a/client/tests/kvm/tests/qmp_basic.py b/client/tests/kvm/tests/qmp_basic.py |
index 985ad150acc85725c7f0240f7bf3ea53f8b9102c..9328c61aefd5866a4bf5b2b006f27243031a4f19 100644 |
--- a/client/tests/kvm/tests/qmp_basic.py |
+++ b/client/tests/kvm/tests/qmp_basic.py |
@@ -1,5 +1,6 @@ |
-import kvm_test_utils |
from autotest_lib.client.common_lib import error |
+import kvm_test_utils, kvm_monitor |
+ |
def run_qmp_basic(test, params, env): |
""" |
@@ -197,24 +198,24 @@ def run_qmp_basic(test, params, env): |
Check that QMP's "id" key is correctly handled. |
""" |
# The "id" key must be echoed back in error responses |
- id = "kvm-autotest" |
- resp = monitor.cmd_qmp("eject", { "foobar": True }, id=id) |
+ id_key = "kvm-autotest" |
+ resp = monitor.cmd_qmp("eject", { "foobar": True }, id=id_key) |
check_error_resp(resp) |
- check_str_key(resp, "id", id) |
+ check_str_key(resp, "id", id_key) |
# The "id" key must be echoed back in success responses |
- resp = monitor.cmd_qmp("query-status", id=id) |
+ resp = monitor.cmd_qmp("query-status", id=id_key) |
check_success_resp(resp) |
- check_str_key(resp, "id", id) |
+ check_str_key(resp, "id", id_key) |
# The "id" key can be any json-object |
- for id in [ True, 1234, "string again!", [1, [], {}, True, "foo"], |
+ for id_key in [ True, 1234, "string again!", [1, [], {}, True, "foo"], |
{ "key": {} } ]: |
- resp = monitor.cmd_qmp("query-status", id=id) |
+ resp = monitor.cmd_qmp("query-status", id=id_key) |
check_success_resp(resp) |
- if resp["id"] != id: |
+ if resp["id"] != id_key: |
raise error.TestFail("expected id '%s' but got '%s'" % |
- (str(id), str(resp["id"]))) |
+ (str(id_key), str(resp["id"]))) |
def test_invalid_arg_key(monitor): |
@@ -366,7 +367,8 @@ def run_qmp_basic(test, params, env): |
# is to skip its checking and pass arguments through. Check this |
# works by providing invalid options to device_add and expecting |
# an error message from qdev |
- resp = monitor.cmd_qmp("device_add", { "driver": "e1000","foo": "bar" }) |
+ resp = monitor.cmd_qmp("device_add", { "driver": "e1000", |
+ "foo": "bar" }) |
check_error_resp(resp, "PropertyNotFound", |
{"device": "e1000", "property": "foo"}) |
@@ -381,15 +383,25 @@ def run_qmp_basic(test, params, env): |
check_error_resp(resp, "CommandNotFound", { "name": cmd }) |
- vm = kvm_test_utils.get_living_vm(env, params.get("main_vm")) |
+ vm = env.get_vm(params["main_vm"]) |
+ vm.verify_alive() |
+ |
+ # Look for the first qmp monitor available, otherwise, fail the test |
+ qmp_monitor = None |
+ for m in vm.monitors: |
+ if isinstance(m, kvm_monitor.QMPMonitor): |
+ qmp_monitor = m |
+ |
+ if qmp_monitor is None: |
+ raise error.TestError('Could not find a QMP monitor, aborting test') |
# Run all suites |
- greeting_suite(vm.monitor) |
- input_object_suite(vm.monitor) |
- argument_checker_suite(vm.monitor) |
- unknown_commands_suite(vm.monitor) |
- json_parsing_errors_suite(vm.monitor) |
+ greeting_suite(qmp_monitor) |
+ input_object_suite(qmp_monitor) |
+ argument_checker_suite(qmp_monitor) |
+ unknown_commands_suite(qmp_monitor) |
+ json_parsing_errors_suite(qmp_monitor) |
# check if QMP is still alive |
- if not vm.monitor.is_responsive(): |
- raise error.TestFail('QEMU is not alive after QMP testing') |
+ if not qmp_monitor.is_responsive(): |
+ raise error.TestFail('QMP monitor is not responsive after testing') |