From 2214cf1456caf5ea51660a2bb04f0fc67ee69346 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Fri, 10 Dec 2010 16:45:20 +0100 Subject: [PATCH] QA: Extend unittests for query operations, add tests for list-fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: RenΓ© Nussbaumer <rn@google.com> --- qa/ganeti-qa.py | 4 ++++ qa/qa_instance.py | 5 +++++ qa/qa_node.py | 5 +++++ qa/qa_utils.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index f94746cfa..c350571f1 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -138,6 +138,10 @@ def SetupCluster(rapi_user, rapi_secret): RunTestIf("node-list", qa_node.TestNodeList) + # Test listing fields + RunTestIf("node-list", qa_node.TestNodeListFields) + RunTestIf("instance-list", qa_instance.TestInstanceListFields) + RunTestIf("node-info", qa_node.TestNodeInfo) diff --git a/qa/qa_instance.py b/qa/qa_instance.py index 0b27e115f..cb598de9b 100644 --- a/qa/qa_instance.py +++ b/qa/qa_instance.py @@ -213,6 +213,11 @@ def TestInstanceList(): qa_utils.GenericQueryTest("gnt-instance", query.INSTANCE_FIELDS.keys()) +def TestInstanceListFields(): + """gnt-instance list-fields""" + qa_utils.GenericQueryFieldsTest("gnt-instance", query.INSTANCE_FIELDS.keys()) + + def TestInstanceConsole(instance): """gnt-instance console""" AssertCommand(["gnt-instance", "console", "--show-cmd", instance["name"]]) diff --git a/qa/qa_node.py b/qa/qa_node.py index ed7c95082..6e3e0a7a6 100644 --- a/qa/qa_node.py +++ b/qa/qa_node.py @@ -195,3 +195,8 @@ def TestNodeModify(node): def TestNodeList(): """gnt-node list""" qa_utils.GenericQueryTest("gnt-node", query.NODE_FIELDS.keys()) + + +def TestNodeListFields(): + """gnt-node list-fields""" + qa_utils.GenericQueryFieldsTest("gnt-node", query.NODE_FIELDS.keys()) diff --git a/qa/qa_utils.py b/qa/qa_utils.py index 112e2cec8..6a8ed18e3 100644 --- a/qa/qa_utils.py +++ b/qa/qa_utils.py @@ -31,6 +31,7 @@ import random from ganeti import utils from ganeti import compat +from ganeti import constants import qa_config import qa_error @@ -139,6 +140,8 @@ def AssertCommand(cmd, fail=False, node=None): raise qa_error.Error("Command '%s' on node %s failed, exit code %s" % (cmdstr, nodename, rcode)) + return rcode + def GetSSHCommand(node, cmd, strict=True): """Builds SSH command to be executed. @@ -352,6 +355,34 @@ def GenericQueryTest(cmd, fields): rnd.shuffle(randnames) AssertEqual(namelist_fn(randnames), randnames) + # Listing unknown items must fail + AssertCommand([cmd, "list", "this.name.certainly.does.not.exist"], fail=True) + + # Check exit code for listing unknown field + AssertEqual(AssertCommand([cmd, "list", "--output=field/does/not/exist"], + fail=True), + constants.EXIT_UNKNOWN_FIELD) + + +def GenericQueryFieldsTest(cmd, fields): + master = qa_config.GetMasterNode() + + # Listing fields + AssertCommand([cmd, "list-fields"]) + AssertCommand([cmd, "list-fields"] + fields) + + # Check listed fields (all, must be sorted) + realcmd = [cmd, "list-fields", "--separator=|", "--no-headers"] + output = GetCommandOutput(master["primary"], + utils.ShellQuoteArgs(realcmd)).splitlines() + AssertEqual([line.split("|", 1)[0] for line in output], + sorted(fields)) + + # Check exit code for listing unknown field + AssertEqual(AssertCommand([cmd, "list-fields", "field/does/not/exist"], + fail=True), + constants.EXIT_UNKNOWN_FIELD) + def _FormatWithColor(text, seq): if not seq: -- GitLab