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 <[email protected]> --- 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 <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
