On Fri, Dec 20, 2013 at 10:09 AM, Hrvoje Ribicic <[email protected]> wrote:
> The query requests are done to receive data bout a certain resource > s/bout/about > type. With tests for all the resources barring networks in place, the > query workloads can be added at the point where the existence of enough > resources in the system can be confirmed, making the results of the > queries meaningful. > > Signed-off-by: Hrvoje Ribicic <[email protected]> > --- > qa/rapi-workload.py | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/qa/rapi-workload.py b/qa/rapi-workload.py > index 9cd717b..43d1940 100755 > --- a/qa/rapi-workload.py > +++ b/qa/rapi-workload.py > @@ -215,6 +215,32 @@ def TestGetters(client): > client.GetGroups(bulk=True) > > > +def TestQueries(client, resource_name): > + """ Finds out which fields are present for a given resource type, and > attempts > + to retrieve their values for all present resources. > + > + @type client C{GanetiRapiClientWrapper} > + @param client A wrapped RAPI client. > + @type resource_name string > + @param resource_name The name of the resource to use. > colons! > + > + """ > + > + FIELDS_KEY = "fields" > + > + query_res = client.QueryFields(resource_name) > + > + if query_res is None or FIELDS_KEY not in query_res or \ > + len(query_res[FIELDS_KEY]) == 0: > + return > + > + field_entries = query_res[FIELDS_KEY] > + > + fields = map(lambda e: e["name"], field_entries) > + > + client.Query(resource_name, fields) > + > + > def RemoveAllInstances(client): > """ Queries for a list of instances, then removes them all. > > @@ -276,6 +302,8 @@ def TestSingleInstance(client, instance_name, > alternate_name, node_one, > > Finish(client, client.GetInstanceInfo, instance_name, static=True) > > + TestQueries(client, "instance") > + > TestTags(client, client.GetInstanceTags, client.AddInstanceTags, > client.DeleteInstanceTags, instance_name) > > @@ -411,6 +439,8 @@ def TestNodeOperations(client, non_master_node): > MarkUnmarkNode(client, non_master_node, "powered") > MarkUnmarkNode(client, non_master_node, "offline") > > + TestQueries(client, "node") > + > > def TestGroupOperations(client, node, another_node): > """ Tests various operations related to groups only. > @@ -437,6 +467,8 @@ def TestGroupOperations(client, node, another_node): > > client.GetGroup(TEST_GROUP_NAME) > > + TestQueries(client, "group") > + > TestTags(client, client.GetGroupTags, client.AddGroupTags, > client.DeleteGroupTags, TEST_GROUP_NAME) > > @@ -501,6 +533,12 @@ def Workload(client): > instance_one.Release() > qa_config.ReleaseManyNodes(nodes) > > + # Test all the queries which involve resources that do not have > functions > + # of their own > + TestQueries(client, "lock") > + TestQueries(client, "job") > + TestQueries(client, "export") > + > node = qa_config.AcquireNode(exclude=qa_config.GetMasterNode()) > TestNodeOperations(client, node.primary) > node.Release() > -- > 1.8.5.1 > > LGTM, thanks -- -- Helga Velroyen | Software Engineer | [email protected] | Google Germany GmbH Dienerstr. 12 80331 München Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Graham Law, Christine Elizabeth Flores
