diff options
-rw-r--r-- | glustolibs-gluster/glustolibs/gluster/gluster_base_class.py | 26 | ||||
-rw-r--r-- | tests/functional/glusterd/test_peer_status.py | 5 |
2 files changed, 28 insertions, 3 deletions
diff --git a/glustolibs-gluster/glustolibs/gluster/gluster_base_class.py b/glustolibs-gluster/glustolibs/gluster/gluster_base_class.py index b475eddd1..ae842b055 100644 --- a/glustolibs-gluster/glustolibs/gluster/gluster_base_class.py +++ b/glustolibs-gluster/glustolibs/gluster/gluster_base_class.py @@ -90,6 +90,32 @@ class GlusterBaseClass(unittest.TestCase): volume_type = None mount_type = None + @staticmethod + def get_super_method(obj, method_name): + """PY2/3 compatible method for getting proper parent's (super) methods. + + Useful for test classes wrapped by 'runs_on' decorator which has + duplicated original test class [py3] as parent instead of the + base class as it is expected. + + Example for calling 'setUp()' method of the base class from the + 'setUp' method of a test class which was decorated with 'runs_on': + + @runs_on([['distributed'], ['glusterfs']]) + class TestDecoratedClass(GlusterBaseClass): + ... + def setUp(self): + self.get_super_method(self, 'setUp')() + ... + + """ + if (getattr(super(obj.__class__, obj), method_name) != getattr( + obj, method_name)): + return getattr(super(obj.__class__, obj), method_name) + # NOTE(vponomar): we always have here just one base as 'obj' is + # expected to be renamed copy of it's parent. + return getattr(super(obj.__class__.__bases__[0], obj), method_name) + @classmethod def inject_msg_in_gluster_logs(cls, msg): """Inject all the gluster logs on servers, clients with msg diff --git a/tests/functional/glusterd/test_peer_status.py b/tests/functional/glusterd/test_peer_status.py index cc282de57..65e8db9ed 100644 --- a/tests/functional/glusterd/test_peer_status.py +++ b/tests/functional/glusterd/test_peer_status.py @@ -34,8 +34,7 @@ from glustolibs.gluster.peer_ops import (peer_probe, peer_status, peer_detach, class TestPeerStatus(GlusterBaseClass): def setUp(self): - - GlusterBaseClass.setUp.im_func(self) + self.get_super_method(self, 'setUp')() # Performing peer detach ret = peer_detach_servers(self.mnode, self.servers) @@ -67,7 +66,7 @@ class TestPeerStatus(GlusterBaseClass): "servers %s" % self.servers) g.log.info("Peer probe success for detached " "servers %s", self.servers) - GlusterBaseClass.tearDown.im_func(self) + self.get_super_method(self, 'tearDown')() def test_peer_probe_status(self): |