[libvirt] [test-API][PATCH 1/2] Reconnct libvirt after libvirtd restart

Wayne Sun gsun at redhat.com
Wed Aug 8 07:25:14 UTC 2012


On 08/07/2012 09:15 PM, Guannan Ren wrote:
> On 08/06/2012 03:46 PM, Wayne Sun wrote:
>>    In domain_nfs_start case, libvirtd will be restarted during test,
>>    which broke existing connection. User need re-init connection in
>>    test case, for this:
>>      * Using sharedmod data dictionary to store Envparser class in
>>        generator.
>>      * Do not clear data dictionary in env_inspect, user can update
>>        it or framework release it at last.
>>      * Using sharemod_init in env_inspect to re-init conn in
>>        domain_nfs_start.
>
>       For this case, it's better not to use the connection object 
> offered by framework.
>       The case could create its own connection through case options.
Yes, the first thought is to create the connection in the case, but 
since multiple cases have this problem and the get connection code is 
reusable, so i directly using the sharemod_init function in env_inspect. 
This is not right, it's better create a shared get_conn function in 
utils for both framework and testcase. Then, env_inspect could use it 
and also testcases have the reconnect problem.
I'll send v2 for this, thx!

Wayne Sun
2012-08-08

>
>
>>
>> Signed-off-by: Wayne Sun <gsun at redhat.com>
>> ---
>>   repos/sVirt/domain_nfs_start.py |   11 +++++++++--
>>   src/env_inspect.py              |    1 -
>>   src/generator.py                |    2 ++
>>   3 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/repos/sVirt/domain_nfs_start.py 
>> b/repos/sVirt/domain_nfs_start.py
>> index 88d349c..4d48d97 100644
>> --- a/repos/sVirt/domain_nfs_start.py
>> +++ b/repos/sVirt/domain_nfs_start.py
>> @@ -12,7 +12,7 @@ import sys
>>     import libvirt
>>   from libvirt import libvirtError
>> -
>> +from src import env_inspect
>
>     The env_inspect is framework module. It is not recommanded to use 
> directly in testcase.
>
>
>>   from src import sharedmod
>>   from utils import utils
>>   from shutil import copy
>> @@ -163,6 +163,8 @@ def domain_nfs_start(params):
>>           logger.error("Error: fail to get domain %s xml" % guestname)
>>           return 1
>>   +    conn.close()
>> +
>>       # set env
>>       logger.info("prepare the environment")
>>       ret = prepare_env(dynamic_ownership, virt_use_nfs, guestname, \
>> @@ -171,6 +173,11 @@ def domain_nfs_start(params):
>>           logger.error("failed to prepare the environment")
>>           return 1
>>   +    # reconnect libvirt
>> +    env = sharedmod.data['env']
>> +    env_inspect.sharemod_init(env, logger)
>> +    conn = sharedmod.libvirtobj['conn']
>
>           you could create own connection rather than use the 
> connection object offerred by framework.
>
>
>> +
>>       domobj = conn.lookupByName(guestname)
>>         logger.info("begin to test start domain from nfs storage")
>> @@ -283,7 +290,7 @@ def domain_nfs_start(params):
>>           logger.error("Error: fail to get domain %s state" % guestname)
>>           return 1
>>   -    if state != "shutoff":
>> +    if state != libvirt.VIR_DOMAIN_SHUTOFF:
>>           logger.info("shut down the domain %s" % guestname)
>>           try:
>>               domobj.destroy()
>> diff --git a/src/env_inspect.py b/src/env_inspect.py
>> index b260ff8..a6dc4b1 100644
>> --- a/src/env_inspect.py
>> +++ b/src/env_inspect.py
>> @@ -98,7 +98,6 @@ def sharemod_init(env_parser, logger):
>>         # initialize conn object in sharedmod
>>       sharedmod.libvirtobj.clear()
>> -    sharedmod.data.clear()
>>       sharedmod.libvirtobj['conn'] = conn
>>       return 0
>>   diff --git a/src/generator.py b/src/generator.py
>> index 0cdc9de..f01f2fb 100644
>> --- a/src/generator.py
>> +++ b/src/generator.py
>> @@ -30,6 +30,7 @@ from testcasexml import xml_file_to_str
>>   import env_parser
>>   import env_inspect
>>   import format
>> +import sharedmod
>>     class FuncGen(object):
>>       """ To generate a callable testcase"""
>> @@ -56,6 +57,7 @@ class FuncGen(object):
>>           self.__case_info_save(activity, testrunid)
>>             self.env = env_parser.Envparser("global.cfg")
>> +        sharedmod.data['env'] = self.env
>>             mapper_obj = mapper.Mapper(activity)
>>           case_list = mapper_obj.module_casename_func_map()
>
>




More information about the libvir-list mailing list