Change in vdsm[master]: functional tests: Wait till backend server of storage connec...

zhshzhou at linux.vnet.ibm.com zhshzhou at linux.vnet.ibm.com
Tue Dec 25 04:07:45 UTC 2012


Zhou Zheng Sheng has uploaded a new change for review.

Change subject: functional tests: Wait till backend server of storage connection reference is connected
......................................................................

functional tests: Wait till backend server of storage connection reference is connected

Storage connection reference performs the actual connecting in
asynchronous manner, so add a retryAssert on the storage connection
status to wait it gets connected. Otherwise the creation of storage
domain will fail if the backend connection in VDSM is not ready.

Extract a super class for backend servers in functional test, the
waiting for the ready of the connection is put in the super class,
because this waiting can be useful to iscsi and glusterfs testing.

Change-Id: I466b8e8cbfe6e1b04f8ad902f54fa1177b746feb
Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
---
M tests/functional/xmlrpcTests.py
1 file changed, 36 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/52/10352/1

diff --git a/tests/functional/xmlrpcTests.py b/tests/functional/xmlrpcTests.py
index c259533..482266e 100644
--- a/tests/functional/xmlrpcTests.py
+++ b/tests/functional/xmlrpcTests.py
@@ -24,6 +24,7 @@
 import grp
 import shutil
 from contextlib import contextmanager
+from functools import partial
 
 from testrunner import VdsmTestCase as TestCaseBase
 from nose.plugins.skip import SkipTest
@@ -336,11 +337,44 @@
         self.retryAssert(assertTaskOK, timeout=20)
 
 
-class LocalFSServer(object):
+class BackendServer(object):
+    '''Super class of various backend servers'''
+
     def __init__(self, vdsmServer, asserts):
         self.s = vdsmServer
         self.asserts = asserts
 
+    def _createBackend(self, backendDef, rollback):
+        raise RuntimeError("Not implemented")
+
+    def _assertBackendConnected(self, connections):
+        r = self.s.storageServer_ConnectionRefs_statuses()
+        self.asserts.assertVdsOK(r)
+        status = r['connectionslist']
+        for refid in connections:
+            self.asserts.assertEquals(status[refid]['connected'], True)
+
+    def _connectBackend(self, connections, rollback):
+        r = self.s.storageServer_ConnectionRefs_acquire(connections)
+        self.asserts.assertVdsOK(r)
+        undo = lambda: self.asserts.assertVdsOK(
+            self.s.storageServer_ConnectionRefs_release(connections.keys()))
+        rollback.prependDefer(undo)
+        for _refid, status in r['results'].iteritems():
+            self.asserts.assertEquals(status, 0)
+        self.asserts.retryAssert(
+            partial(self._assertBackendConnected, connections), timeout=40)
+
+    def _genTypeSpecificArgs(self, connections, rollback):
+        raise RuntimeError("Not implemented")
+
+    def prepare(self, backendDef, rollback):
+        connections = self._createBackend(backendDef, rollback)
+        self._connectBackend(connections, rollback)
+        return self._genTypeSpecificArgs(connections, rollback)
+
+
+class LocalFSServer(BackendServer):
     def _createBackend(self, backendDef, rollback):
         uid = pwd.getpwnam(VDSM_USER)[2]
         gid = grp.getgrnam(VDSM_GROUP)[2]
@@ -365,31 +399,14 @@
 
         return connections
 
-    def _connectBackend(self, connections, rollback):
-        r = self.s.storageServer_ConnectionRefs_acquire(connections)
-        self.asserts.assertVdsOK(r)
-        undo = lambda: self.asserts.assertVdsOK(
-            self.s.storageServer_ConnectionRefs_release(connections.keys()))
-        rollback.prependDefer(undo)
-        for _refid, status in r['results'].iteritems():
-            self.asserts.assertEquals(status, 0)
-
     def _genTypeSpecificArgs(self, connections, rollback):
         args = {}
         for uuid, conn in connections.iteritems():
             args[uuid] = conn['params']['path']
         return args
 
-    def prepare(self, backendDef, rollback):
-        connections = self._createBackend(backendDef, rollback)
-        self._connectBackend(connections, rollback)
-        return self._genTypeSpecificArgs(connections, rollback)
 
-
-class IscsiServer(object):
-    def __init__(self, vdsmServer):
-        self.s = vdsmServer
-
+class IscsiServer(BackendServer):
     def _createBackend(self, backendDef, rollback):
         # Create iscsi target
         pass


--
To view, visit http://gerrit.ovirt.org/10352
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I466b8e8cbfe6e1b04f8ad902f54fa1177b746feb
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>


More information about the vdsm-patches mailing list