[libvirt] [libvirt-test-API][PATCH 3/3] Modify the case to cover two new APIs

jiahu jiahu at redhat.com
Thu Apr 23 07:37:49 UTC 2015


Check two new APIs in this case:
storagePoolLookupByUUIDString/storagePoolLookupByUUID
---
 repos/storage/pool_uuid.py | 49 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/repos/storage/pool_uuid.py b/repos/storage/pool_uuid.py
index bb6bf63..2f371eb 100644
--- a/repos/storage/pool_uuid.py
+++ b/repos/storage/pool_uuid.py
@@ -1,4 +1,8 @@
 #!/usr/bin/env python
+#To test "virsh pool-uuid" command and related APIs
+#To test 2 APIs in this case:
+#    storagePoolLookupByUUID
+#    storagePoolLookupByUUIDString
 
 import os
 import sys
@@ -6,7 +10,10 @@ import re
 import time
 import commands
 
+import binascii
 import libvirt
+
+from xml.dom import minidom
 from libvirt import libvirtError
 
 from src import sharedmod
@@ -15,6 +22,7 @@ required_params = ('poolname',)
 optional_params = {}
 
 VIRSH_POOLUUID = "virsh pool-uuid"
+POOLPATH = "/etc/libvirt/storage/"
 
 def check_pool_uuid(poolname, UUIDString, logger):
     """ check UUID String of a pool """
@@ -32,10 +40,25 @@ def check_pool_uuid(poolname, UUIDString, logger):
         else:
             return False
 
+def checking_uuid(logger,poolname,pooluuid):
+    """check two uuid of pool which are from API and pool's XML"""
+    global POOLPATH
+    POOLPATH = POOLPATH + poolname + ".xml"
+    xml = minidom.parse(POOLPATH)
+    pool = xml.getElementsByTagName('pool')[0]
+    uuid = pool.getElementsByTagName('uuid')[0].childNodes[0].data
+    if uuid == pooluuid:
+        return True
+    else:
+       return False
+
 def pool_uuid(params):
-    """ call appropriate API to generate the UUIDStirng
+    """ 1. call appropriate API to generate the UUIDStirng
         of a pool , then compared to the output of command
         virsh pool-uuid
+        2. check 2 APIs in the case:
+               storagePoolLookupByUUID
+               storagePoolLookupByUUIDString
     """
     logger = params['logger']
     poolname = params['poolname']
@@ -53,6 +76,30 @@ def pool_uuid(params):
     try:
         UUIDString = poolobj.UUIDString()
         logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString))
+
+        #For a transient pool, set another path
+        if not poolobj.isPersistent() == 1:
+            logger.info("Can not check a transient pool by now.")
+            return 0
+        #allowing '-' and ' ' anywhere between character pairs,just check
+        #one of them
+        UUIDString1 = UUIDString.replace("-"," ")
+        pool1 = conn.storagePoolLookupByUUIDString(UUIDString1)
+        pool_name1 = pool1.name()
+        logger.debug("The given UUID is \"%s\", the pool is \"%s\" using\
+ storagePoolLookupByUUIDString" %(UUIDString1,pool_name1))
+
+        UUIDString2 = UUIDString.replace("-","")
+        UUID_ascii = binascii.a2b_hex(UUIDString2)
+        pool2 = conn.storagePoolLookupByUUID(UUID_ascii)
+        pool_name2 = pool2.name()
+        logger.debug("The given UUID is \"%s\", the pool is \"%s\" using \
+storagePoolLookupByUUID" %(UUIDString2,pool_name2))
+
+        if pool_name1 == pool_name2 and checking_uuid(logger,pool_name1,UUIDString):
+            logger.info("Successed to get pool name \"%s\" using \"%s\""\
+ %(pool_name1,UUIDString))
+
         if check_pool_uuid(poolname, UUIDString, logger):
             logger.info(VIRSH_POOLUUID + " test succeeded.")
             return 0
-- 
1.8.3.1




More information about the libvir-list mailing list