[libvirt] [test-API PATCH 2/4] cfgcheck: new class implement testcase config file checking
Guannan Ren
gren at redhat.com
Thu Apr 12 16:59:47 UTC 2012
On 04/12/2012 07:38 PM, Martin Kletzander wrote:
> On 04/11/2012 04:04 PM, Guannan Ren wrote:
>> casecfgcheck.py
>> ---
>> casecfgcheck.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 1 files changed, 66 insertions(+), 0 deletions(-)
>> create mode 100644 casecfgcheck.py
>>
>> diff --git a/casecfgcheck.py b/casecfgcheck.py
>> new file mode 100644
>> index 0000000..3c4696d
>> --- /dev/null
>> +++ b/casecfgcheck.py
>> @@ -0,0 +1,66 @@
>> +#!/usr/bin/env python
>> +#
>> +# libvirt-test-API is copyright 2010, 2012 Red Hat, Inc.
>> +#
>> +# libvirt-test-API is free software: you can redistribute it and/or modify it
>> +# under the terms of the GNU General Public License as published by
>> +# the Free Software Foundation, either version 2 of the License, or
>> +# (at your option) any later version. This program is distributed in
>> +# the hope that it will be useful, but WITHOUT ANY WARRANTY; without
>> +# even the implied warranties of TITLE, NON-INFRINGEMENT,
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>> +#
>> +# The GPL text is available in the file COPYING that accompanies this
>> +# distribution and at<http://www.gnu.org/licenses>.
>> +#
>> +
>> +import proxy
>> +
>> +class CaseCfgCheck(object):
>> + """validate the options in testcase config file"""
>> + def __init__(self, unique_testcases, activities_list):
>> + self.unique_testcases = unique_testcases
>> +
>> + # XXX to check the first testcase list in activities_list
>> + self.activitie = activities_list[0]
>> +
>> + proxy_obj = proxy.Proxy(self.unique_testcases)
>> + self.case_params = proxy_obj.get_params_variables()
> typo:
> s/activitie/activity/
>
> plus I'm not sure if we can be sure that all the activities are the same
> in this call (if it's just a multiplication of one array)? On other
> places (like 'libvirt-test-api.py') we check for all members in the array.
>
>> +
>> + def check(self):
>> + """check options to each testcase in case config file"""
>> + case_number = 0
>> + error_flag = 0
>> + passed_testcase = []
>> + for testcase in self.activitie:
> second typo or copy paste error :)
> s/activitie/activity/
Thanks, it is fixed and pushed.
>> + case_number += 1
>> + if testcase in passed_testcase:
>> + continue
>> +
>> + testcase_name = testcase.keys()[0]
>> + actual_params = testcase.values()[0]
> I don't quite understand what are you trying to achieve here. The order
> of keys and values in python dict cannot be guaranteed if I'm not wrong.
> And even if yes, that would mean you are checking just for the first
> testcase, I guess. Or maybe I just don't get this right.
If time is permitted, please run "python parser.py
testcase.cfg"
It will output the data format after parsing.
example: run it using the command above.
#testcase.cfg
domain:testa
guestname
fedora16
The data format is: [[{'domain:testa': {'guestname':
'fedora16'}}]]
The variable "testcase" refer to "{'domain:testa':
{'guestname': 'fedora16'}"
The variable "activity" refet to [{'domain:testa':
{'guestname': 'fedora16'}]
Note: the code just to check the first inner list here.
then, we use 'testcase_name'(domain:testa) as the key to
fetch two
global variable that defined in testa.py
one is "required_params", the other is "optional_params",
then compare them
with "actual_params" by invoking _check_params(...)
Tips: the proxy.py will place the two references to the
global params
in a data format like {'domain:testa':[required_params,
optional_params]}
Guannan Ren
More information about the libvir-list
mailing list