You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2018/05/04 01:23:19 UTC

qpid-dispatch git commit: DISPATCH-963 - Added decorator class that can be used to skip test methods, as unittest2 does not support skipping feature on python 2.6.

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 4f5cc5287 -> 21b7e664f


DISPATCH-963 - Added decorator class that can be used to skip test methods, as unittest2 does not support skipping feature on python 2.6.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/21b7e664
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/21b7e664
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/21b7e664

Branch: refs/heads/master
Commit: 21b7e664f085ed56ec423020b8352f500d8ede9e
Parents: 4f5cc52
Author: Fernando Giorgetti <fg...@redhat.com>
Authored: Thu May 3 18:54:29 2018 -0300
Committer: Fernando Giorgetti <fg...@redhat.com>
Committed: Thu May 3 18:54:29 2018 -0300

----------------------------------------------------------------------
 tests/system_test.py               |  43 ++++++++-
 tests/system_tests_distribution.py | 156 +++++++++++---------------------
 2 files changed, 93 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/21b7e664/tests/system_test.py
----------------------------------------------------------------------
diff --git a/tests/system_test.py b/tests/system_test.py
index 504b4e3..d8baed7 100755
--- a/tests/system_test.py
+++ b/tests/system_test.py
@@ -28,7 +28,7 @@ Features:
 - Sundry other tools.
 """
 
-import errno, os, time, socket, random, subprocess, shutil, unittest, __main__, re
+import errno, os, time, socket, random, subprocess, shutil, unittest, __main__, re, sys
 from copy import copy
 try:
     import queue as Queue   # 3.x
@@ -646,6 +646,47 @@ class TestCase(unittest.TestCase, Tester): # pylint: disable=too-many-public-met
             """For python < 2.7: assert re.search(regexp, text)"""
             assert re.search(regexp, text), msg or "Can't find %r in '%s'" %(regexp, text)
 
+
+class SkipIfNeeded(object):
+    """
+    Decorator class that can be used along with test methods
+    to provide skip test behavior when using both python2.6 or
+    a greater version.
+    This decorator can be used with sub-classes of TestCase and the
+    sub-class must contain a dictionary named "skip" (test_name as key
+    and 0[run] or 1[skip] as the value).
+    """
+    def __init__(self, test_name, reason):
+        self.test_name = test_name
+        self.reason = reason
+
+    def __call__(self, f):
+
+        def wrap(*args, **kwargs):
+            """
+            Wraps original test method's invocation looking for an instance
+            attribute named "skip" (should be a dictionary composed by
+            "test_name" as a key and value of 0 [run] or 1 [skip]).
+            When running test with python < 2.7, if the "skip" dictionary
+            contains the given test_name with a value of 1, the original
+            method won't be called. If running python >= 2.7, then
+            skipTest will be called with given "reason" and original method
+            will be invoked.
+            :param args:
+            :return:
+            """
+            instance = args[0]
+            if isinstance(instance, TestCase) and hasattr(instance, "skip") and instance.skip[self.test_name]:
+                if sys.version_info < (2, 7):
+                    print "%s -> skipping (python<2.7) ..." % self.test_name
+                    return
+                else:
+                    instance.skipTest(self.reason)
+            return f(*args, **kwargs)
+
+        return wrap
+
+
 def main_module():
     """
     Return the module name of the __main__ module - i.e. the filename with the

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/21b7e664/tests/system_tests_distribution.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_distribution.py b/tests/system_tests_distribution.py
index 98c7183..d6ef781 100644
--- a/tests/system_tests_distribution.py
+++ b/tests/system_tests_distribution.py
@@ -17,10 +17,9 @@
 # under the License.
 #
 
-import sys
 import unittest2 as unittest
 from proton          import Message, Timeout
-from system_test     import TestCase, Qdrouterd, main_module, TIMEOUT
+from system_test     import TestCase, Qdrouterd, main_module, TIMEOUT, SkipIfNeeded
 from proton.handlers import MessagingHandler
 from proton.reactor  import Container, LinkOption, ApplicationEvent, EventInjector
 
@@ -525,64 +524,57 @@ class DistributionTests ( TestCase ):
 
 
 
+    @SkipIfNeeded('test_01', 'Test skipped during development.')
     def test_01_targeted_sender_AC ( self ):
-        name = 'test_01'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_01'
         test = TargetedSenderTest ( name, self.A_addr, self.C_addr, "closest/01" )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_02', 'Test skipped during development.')
     def test_02_targeted_sender_DC ( self ):
-        name = 'test_02'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_02'
         test = TargetedSenderTest ( name, self.D_addr, self.C_addr, "closest/02" )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_03', 'Test skipped during development.')
     def test_03_anonymous_sender_AC ( self ):
-        name = 'test_03'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_03'
         test = AnonymousSenderTest ( name, self.A_addr, self.C_addr )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_04', 'Test skipped during development.')
     def test_04_anonymous_sender_DC ( self ):
-        name = 'test_04'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_04'
         test = AnonymousSenderTest ( name, self.D_addr, self.C_addr )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_05', 'Test skipped during development.')
     def test_05_dynamic_reply_to_AC ( self ):
-        name = 'test_05'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_05'
         test = DynamicReplyTo ( name, self.A_addr, self.C_addr )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_06', 'Test skipped during development.')
     def test_06_dynamic_reply_to_DC ( self ):
-        name = 'test_06'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_06'
         test = DynamicReplyTo ( name, self.D_addr, self.C_addr )
         test.run()
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_07', 'Test skipped during development.')
     def test_07_linkroute ( self ):
-        name = 'test_07'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_07'
         test = LinkAttachRouting ( name,
                                    self.container_ids[0],
                                    self.C_addr,
@@ -594,10 +586,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_08', 'Test skipped during development.')
     def test_08_linkroute_check_only ( self ):
-        name = 'test_08'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_08'
         test = LinkAttachRoutingCheckOnly ( name,
                                             self.container_ids[0],
                                             self.C_addr,
@@ -609,10 +600,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_09', 'Test skipped during development.')
     def test_09_closest_linear ( self ):
-        name = 'test_09'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_09'
         test = ClosestTest ( name,
                              self.A_addr,
                              self.B_addr,
@@ -623,10 +613,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_10', 'Test skipped during development.')
     def test_10_closest_mesh ( self ):
-        name = 'test_10'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_10'
         test = ClosestTest ( name,
                              self.A_addr,
                              self.B_addr,
@@ -704,10 +693,9 @@ class DistributionTests ( TestCase ):
         #     100     55           33           12
         #
 
+    @SkipIfNeeded('test_11', 'Test skipped during development.')
     def test_11_balanced_linear ( self ):
-        name = 'test_11'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_11'
         # slop is how much the second two values may diverge from
         # the expected.  But they still must sum to total - A.
         total      = 100
@@ -737,10 +725,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_12', 'Test skipped during development.')
     def test_12_balanced_linear_omit_middle_receiver ( self ):
-        name = 'test_12'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_12'
         # If we omit the middle receiver, then router A will count
         # up to cost ( A, B ) and the keep counting up a further
         # cost ( B, C ) before it starts to spill over.
@@ -834,10 +821,9 @@ class DistributionTests ( TestCase ):
         #       2. B and D sum to 100 - A
         #       3. B and D are both with 1 of their expected values.
         #
+    @SkipIfNeeded('test_13', 'Test skipped during development.')
     def test_13_balanced_mesh ( self ):
-        name = 'test_13'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_13'
         total      = 100
         expected_A = 54
         expected_B = 43
@@ -860,10 +846,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_14', 'Test skipped during development.')
     def test_14_multicast_linear ( self ):
-        name = 'test_14'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_14'
         test = MulticastTest ( name,
                                self.A_addr,
                                self.B_addr,
@@ -874,10 +859,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_15', 'Test skipped during development.')
     def test_15_multicast_mesh ( self ):
-        name = 'test_15'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_15'
         test = MulticastTest ( name,
                                self.A_addr,
                                self.B_addr,
@@ -888,14 +872,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_16', 'Test skipped during development.')
     def test_16_linkroute_linear_all_local ( self ) :
-        name = 'test_16'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest ( "" )
+        name='test_16'
         """
         This test should route all senders' link-attaches
         to the local containers on router A.
@@ -982,14 +961,9 @@ class DistributionTests ( TestCase ):
 
 
 
+    @SkipIfNeeded('test_17', 'Test skipped during development.')
     def test_17_linkroute_linear_all_B ( self ) :
-        name = 'test_17'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest ( "" )
+        name='test_17'
         """
         This test should route all senders' link-attaches
         to the remote connections on router B.
@@ -1076,14 +1050,9 @@ class DistributionTests ( TestCase ):
 
 
 
+    @SkipIfNeeded('test_18', 'Test skipped during development.')
     def test_18_linkroute_linear_all_C ( self ) :
-        name = 'test_18'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest (  ""  )
+        name='test_18'
         """
         This test should route all senders' link-attaches
         to the remote connections on router C.
@@ -1169,14 +1138,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_19', 'Test skipped during development.')
     def test_19_linkroute_linear_kill ( self ) :
-        name = 'test_19'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest (  ""  )
+        name='test_19'
         """
         Start out as usual, making four senders and seeing their link-attaches
         routed to router A (local). But then kill the two route-container
@@ -1323,14 +1287,9 @@ class DistributionTests ( TestCase ):
 
 
 
+    @SkipIfNeeded('test_20', 'Test skipped during development.')
     def test_20_linkroute_mesh_all_local ( self ) :
-        name = 'test_20'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest ( '' )
+        name='test_20'
         """
                        c           c
         senders --->   A --------- B
@@ -1430,14 +1389,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_21', 'Test skipped during development.')
     def test_21_linkroute_mesh_nonlocal ( self ) :
-        name = 'test_21'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest (  ""  )
+        name='test_21'
         """
                                    c
         senders --->   A --------- B
@@ -1539,14 +1493,9 @@ class DistributionTests ( TestCase ):
 
 
 
+    @SkipIfNeeded('test_22', 'Test skipped during development.')
     def test_22_linkroute_mesh_kill ( self ) :
-        name = 'test_22'
-
-        if sys.version_info < (2, 7):
-            return
-
-        if self.skip [ name ] :
-            self.skipTest (  ""  )
+        name='test_22'
         """
                        c           c
         senders --->   A --------- B
@@ -1701,10 +1650,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual ( None, test.error )
 
 
+    @SkipIfNeeded('test_23', 'Test skipped during development.')
     def test_23_waypoint ( self ) :
-        name = 'test_23'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_23'
         test = WaypointTest ( name,
                               self.container_ids[1],
                               self.A_addr,
@@ -1716,10 +1664,9 @@ class DistributionTests ( TestCase ):
         self.assertEqual(None, test.error)
 
 
+    @SkipIfNeeded('test_24', 'Test skipped during development.')
     def test_24_serial_waypoint_test ( self ):
-        name = 'test_24'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_24'
         test = SerialWaypointTest ( name,
                                     self.container_ids[2],
                                     self.A_addr,
@@ -1730,10 +1677,9 @@ class DistributionTests ( TestCase ):
         test.run()
         self.assertEqual(None, test.error)
 
+    @SkipIfNeeded('test_25', 'Test skipped during development.')
     def test_25_parallel_waypoint_test ( self ):
-        name = 'test_25'
-        if self.skip [ name ] :
-            self.skipTest ( "Test skipped during development." )
+        name='test_25'
         test = ParallelWaypointTest ( name,
                                       self.container_ids[3],
                                       self.A_addr,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org