[libvirt] [Libvirt-test-API][PATCH] Add a pair of keywords in parser.py for supportting testcases loop
Nan Zhang
nzhang at redhat.com
Sat Jun 18 06:39:44 UTC 2011
On 06/16/2011 04:45 PM, ajia wrote:
> On 06/16/2011 01:14 PM, Nan Zhang wrote:
>> For example:
>> -----------------
>> domain:start
>> guestname
>> vm1
>>
>> domain:save start_loop
>> guestname
>> vm1
>>
>> domain:restore end_loop 10
>> guestname
>> vm1
>>
> If we need to add a new loop argument, I don't know how to do that,
> append the argument to end_loop? it seems the above method hasn't
> a good expansibility.
>
> In addition, it will be very hard to understand a value's meaning, IMO,
> here should be a key/value pair, meanwhile, that will be very clear if
> start_loop and end_loop are aindependent line, for example:
>
>
> domain:start
> guestname
> vm1
>
> start_loop
> times
> 10
> ${new key}
> ${new value}
> ...
>
> domain:save
> guestname
> vm1
>
> domain:restore
> guestname
> vm1
>
> end_loop
>
> domain:destroy
> guestname
> vm1
>
> Anyway, that's my personal opinion.
> Alex
>
I think it's not a good way to mark the loop start and the loop end,
because this is determined by the framework mechanism. I'd re-sent a
patch to fix existent problem.
Anyway, thanks for you suggestion:-)
>
>> domain:destroy
>> guestname
>> vm1
>> -----------------
>> ---
>> parser.py | 46 +++++++++++++++++++++++++++++++++++++++++++++-
>> 1 files changed, 45 insertions(+), 1 deletions(-)
>>
>> diff --git a/parser.py b/parser.py
>> index 5b3ce58..e9cce58 100644
>> --- a/parser.py
>> +++ b/parser.py
>> @@ -31,13 +31,18 @@ class CaseFileParser(object):
>> """ Parser the case configuration file to generate a data list.
>> """
>> def __init__(self, casefile=None, debug=False):
>> - """ Initialize the list and optionally parse case file. """
>> self.list = [[]]
>> self.variables = {}
>> self.missing_variables = []
>> self.debug = debug
>> self.casefile = casefile
>> self.env = env_parser.Envparser("env.cfg")
>> + self.loop_finish = False
>> + self.loop_start = 0
>> + self.loop_end = 0
>> + self.loop_times = 0
>> + self.loop_list = []
>> +
>> if casefile:
>> self.parse_file(casefile)
>>
>> @@ -306,6 +311,7 @@ class CaseFileParser(object):
>>
>> def parse(self, fh, list):
>> """ For the testcase name parsing. """
>> +
>> while True:
>> if self.debug:
>> self.debug_print("the list is", list)
>> @@ -330,6 +336,44 @@ class CaseFileParser(object):
>> self.debug_print("we begin to handle the case",
>> tripped_casename)
>>
>> + if self.loop_finish:
>> + for i in range(len(list)):
>> + self.loop_list.append([])
>> +
>> + i = 0
>> + for caselist in list:
>> + for j in range(self.loop_start, self.loop_end):
>> + self.loop_list[i].append(caselist.pop())
>> +
>> + self.loop_list[i].reverse()
>> + self.debug_print("loop_list is",
>> self.loop_list)
>> + caselist.extend(self.loop_list[i] *
>> self.loop_times)
>> + i += 1
>> +
>> + self.loop_finish = False
>> +
>> + if len(tripped_caselist) == 2 and \
>> + tripped_caselist[1] == "start_loop":
>> + for caselist in list:
>> + newdict = {}
>> + newdict[tripped_casename] = {}
>> + caselist.append(newdict)
>> + self.loop_start = len(caselist) - 1
>> + continue
>> +
>> + if len(tripped_caselist) == 3 and \
>> + tripped_caselist[1] == "end_loop":
>> + looptimes = tripped_caselist[2]
>> + self.debug_print("looptimes is", looptimes)
>> + self.loop_times = int(looptimes)
>> + self.loop_finish = True
>> + for caselist in list:
>> + newdict = {}
>> + newdict[tripped_casename] = {}
>> + caselist.append(newdict)
>> + self.loop_end = len(caselist)
>> + continue
>> +
>> if len(tripped_caselist) == 3 and \
>> tripped_caselist[1] == "times":
>> times = tripped_caselist[2]
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list