[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



ACK and Pushed

Thanks
Hongming

On 04/23/2015 03:37 PM, jiahu wrote:
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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]