VTL Cleanup: Fix missing calls to setUpClass/tearDownClass, fix numerous TypeErrors. 92/17092/3
authorPaul Vinciguerra <pvinci@vinciconsulting.com>
Fri, 25 Jan 2019 22:05:48 +0000 (14:05 -0800)
committerOle Trøan <otroan@employees.org>
Mon, 4 Feb 2019 15:39:24 +0000 (15:39 +0000)
* TypeError: assertIsNotNone() got an unexpected keyword argument 'msg'

* Correct missing calls to setUpClass/tearDownClass.
    If you want the setUpClass and tearDownClass on base classes called then you must call up to them yourself.
    The implementations in TestCase are empty.
    https://docs.python.org/2/library/unittest.html#setupclass-and-teardownclass

Cleans up issues in parallel test mode:
-------------
FAILURES AND ERRORS IN TESTS:
  Testcase name: VCL Thru Host Stack Bidir Nsock
    FAILURE: test_vcl.VCLThruHostStackBidirNsock.test_vcl_thru_host_stack_bi_dir_nsock [test_vcl.VCLThruHostStackBidirNsock.test_vcl_thru_host_stack_bi_dir_nsock]
  Testcase name: Bidirectional Forwarding Detection (BFD) (changing auth)
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_change_key_delayed [test_bfd.BFDAuthOnOffTestCase.test_auth_change_key_delayed]
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_change_key_immediate [test_bfd.BFDAuthOnOffTestCase.test_auth_change_key_immediate]
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_off_delayed [test_bfd.BFDAuthOnOffTestCase.test_auth_off_delayed]
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_off_immediate [test_bfd.BFDAuthOnOffTestCase.test_auth_off_immediate]
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_on_delayed [test_bfd.BFDAuthOnOffTestCase.test_auth_on_delayed]
      ERROR: test_bfd.BFDAuthOnOffTestCase.test_auth_on_immediate [test_bfd.BFDAuthOnOffTestCase.test_auth_on_immediate]
  Testcase name: Punt Socket for IPv4
      ERROR: test_punt.TestIP4PuntSocket.test_punt_socket_dump [test_punt.TestIP4PuntSocket.test_punt_socket_dump]
      ERROR: test_punt.TestIP4PuntSocket.test_punt_socket_traffic_multi_port_multi_sockets [test_punt.TestIP4PuntSocket.test_punt_socket_traffic_multi_port_multi_sockets]
      ERROR: test_punt.TestIP4PuntSocket.test_punt_socket_traffic_multi_ports_single_socket [test_punt.TestIP4PuntSocket.test_punt_socket_traffic_multi_ports_single_socket]
      ERROR: test_punt.TestIP4PuntSocket.test_punt_socket_traffic_single_port_single_socket [test_punt.TestIP4PuntSocket.test_punt_socket_traffic_single_port_single_socket]
  Testcase name: Bidirectional Forwarding Detection (BFD) (IPv6)
      ERROR: test_bfd.BFD6TestCase.test_echo [test_bfd.BFD6TestCase.test_echo]
      ERROR: test_bfd.BFD6TestCase.test_echo_looped_back [test_bfd.BFD6TestCase.test_echo_looped_back]
      ERROR: test_bfd.BFD6TestCase.test_intf_deleted [test_bfd.BFD6TestCase.test_intf_deleted]
      ERROR: test_bfd.BFD6TestCase.test_session_up [test_bfd.BFD6TestCase.test_session_up]
      ERROR: test_bfd.BFD6TestCase.test_session_up_by_ip [test_bfd.BFD6TestCase.test_session_up_by_ip]
  Testcase name: Bidirectional Forwarding Detection (BFD) (CLI)
      ERROR: test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp [test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp]
      ERROR: test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp6 [test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp6]
      ERROR: test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp6_auth [test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp6_auth]
      ERROR: test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp_auth [test_bfd.BFDCLITestCase.test_add_mod_del_bfd_udp_auth]
      ERROR: test_bfd.BFDCLITestCase.test_admin_up_down [test_bfd.BFDCLITestCase.test_admin_up_down]
      ERROR: test_bfd.BFDCLITestCase.test_auth_on_off [test_bfd.BFDCLITestCase.test_auth_on_off]
      ERROR: test_bfd.BFDCLITestCase.test_auth_on_off_delayed [test_bfd.BFDCLITestCase.test_auth_on_off_delayed]
      ERROR: test_bfd.BFDCLITestCase.test_set_del_meticulous_sha1_key [test_bfd.BFDCLITestCase.test_set_del_meticulous_sha1_key]
      ERROR: test_bfd.BFDCLITestCase.test_set_del_sha1_key [test_bfd.BFDCLITestCase.test_set_del_sha1_key]
      ERROR: test_bfd.BFDCLITestCase.test_set_del_udp_echo_source [test_bfd.BFDCLITestCase.test_set_del_udp_echo_source]
      ERROR: test_bfd.BFDCLITestCase.test_show [test_bfd.BFDCLITestCase.test_show]
  Testcase name: VAPI test
      ERROR: test_vapi.VAPITestCase.test_vapi_c [test_vapi.VAPITestCase.test_vapi_c]
  Testcase name: Container integration extended testcases
      ERROR: test_container.ContainerIntegrationTestCase.test_0010_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0010_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0011_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0011_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0050_loopback_prepare_test [test_container.ContainerIntegrationTestCase.test_0050_loopback_prepare_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0110_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0110_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0111_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0111_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0200_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0200_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0210_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0210_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0211_basic_conn_test [test_container.ContainerIntegrationTestCase.test_0211_basic_conn_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0300_unconfigure_commands [test_container.ContainerIntegrationTestCase.test_0300_unconfigure_commands]
      ERROR: test_container.ContainerIntegrationTestCase.test_0410_spoof_test [test_container.ContainerIntegrationTestCase.test_0410_spoof_test]
      ERROR: test_container.ContainerIntegrationTestCase.test_0411_spoof_test [test_container.ContainerIntegrationTestCase.test_0411_spoof_test]
  Testcase name: Re-enable IPFIX
      ERROR: test_flowprobe.ReenableIPFIX.test_0011 [test_flowprobe.ReenableIPFIX.test_0011]
  Testcase name: VXLAN over IPv6 Test Case
      ERROR: setUpClass [setUpClass (test_vxlan6.TestVxlan6)]
  Testcase name: JVPP Core Test Case
      ERROR: test_jvpp.TestJVpp.test_vpp_acl_callback_api [test_jvpp.TestJVpp.test_vpp_acl_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_acl_future_api [test_jvpp.TestJVpp.test_vpp_acl_future_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_core_callback_api [test_jvpp.TestJVpp.test_vpp_core_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_core_future_api [test_jvpp.TestJVpp.test_vpp_core_future_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioamexport_callback_api [test_jvpp.TestJVpp.test_vpp_ioamexport_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioamexport_future_api [test_jvpp.TestJVpp.test_vpp_ioamexport_future_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioampot_callback_api [test_jvpp.TestJVpp.test_vpp_ioampot_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioampot_future_api [test_jvpp.TestJVpp.test_vpp_ioampot_future_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioamtrace_callback_api [test_jvpp.TestJVpp.test_vpp_ioamtrace_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_ioamtrace_future_api [test_jvpp.TestJVpp.test_vpp_ioamtrace_future_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_snat_callback_api [test_jvpp.TestJVpp.test_vpp_snat_callback_api]
      ERROR: test_jvpp.TestJVpp.test_vpp_snat_future_api [test_jvpp.TestJVpp.test_vpp_snat_future_api]
  Testcase name: LDP Cut Thru Tests
    FAILURE: test_vcl.LDPCutThruTestCase.test_ldp_cut_thru_iperf3 [test_vcl.LDPCutThruTestCase.test_ldp_cut_thru_iperf3]
  Testcase name: ACL plugin connection-oriented extended testcases
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0000_conn_prepare_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0000_conn_prepare_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0001_basic_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0001_basic_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0002_basic_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0002_basic_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0005_clear_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0005_clear_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0006_clear_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0006_clear_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0011_active_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0011_active_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_0012_active_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_0012_active_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1001_basic_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1001_basic_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1002_basic_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1002_basic_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1005_clear_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1005_clear_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1006_clear_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1006_clear_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1011_active_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1011_active_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_1012_active_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_1012_active_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2000_prepare_for_tcp_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2000_prepare_for_tcp_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2001_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2001_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2002_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2002_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2003_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2003_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2004_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2004_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2005_tcp_transient_teardown_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2005_tcp_transient_teardown_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_2006_tcp_transient_teardown_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_2006_tcp_transient_teardown_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3001_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3001_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3002_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3002_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3003_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3003_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3004_tcp_transient_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3004_tcp_transient_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3005_tcp_transient_teardown_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3005_tcp_transient_teardown_conn_test]
      ERROR: test_acl_plugin_conns.ACLPluginConnTestCase.test_3006_tcp_transient_teardown_conn_test [test_acl_plugin_conns.ACLPluginConnTestCase.test_3006_tcp_transient_teardown_conn_test]
  Testcase name: LDP Thru Host Stack Echo
    FAILURE: test_vcl.LDPThruHostStackEcho.test_ldp_thru_host_stack_echo [test_vcl.LDPThruHostStackEcho.test_ldp_thru_host_stack_echo]
  Testcase name: Bidirectional Forwarding Detection (BFD) - API
      ERROR: test_bfd.BFDAPITestCase.test_activate_auth [test_bfd.BFDAPITestCase.test_activate_auth]
      ERROR: test_bfd.BFDAPITestCase.test_add_auth_nonexistent_key [test_bfd.BFDAPITestCase.test_add_auth_nonexistent_key]
      ERROR: test_bfd.BFDAPITestCase.test_add_bfd [test_bfd.BFDAPITestCase.test_add_bfd]
      ERROR: test_bfd.BFDAPITestCase.test_add_bfd6 [test_bfd.BFDAPITestCase.test_add_bfd6]
      ERROR: test_bfd.BFDAPITestCase.test_add_bfd_sha1 [test_bfd.BFDAPITestCase.test_add_bfd_sha1]
      ERROR: test_bfd.BFDAPITestCase.test_add_sha1_keys [test_bfd.BFDAPITestCase.test_add_sha1_keys]
      ERROR: test_bfd.BFDAPITestCase.test_change_key [test_bfd.BFDAPITestCase.test_change_key]
      ERROR: test_bfd.BFDAPITestCase.test_deactivate_auth [test_bfd.BFDAPITestCase.test_deactivate_auth]
      ERROR: test_bfd.BFDAPITestCase.test_double_add [test_bfd.BFDAPITestCase.test_double_add]
      ERROR: test_bfd.BFDAPITestCase.test_double_add_sha1 [test_bfd.BFDAPITestCase.test_double_add_sha1]
      ERROR: test_bfd.BFDAPITestCase.test_mod_bfd [test_bfd.BFDAPITestCase.test_mod_bfd]
      ERROR: test_bfd.BFDAPITestCase.test_set_del_udp_echo_source [test_bfd.BFDAPITestCase.test_set_del_udp_echo_source]
      ERROR: test_bfd.BFDAPITestCase.test_shared_sha1_key [test_bfd.BFDAPITestCase.test_shared_sha1_key]
  Testcase name: LDP Thru Host Stack Iperf
    FAILURE: test_vcl.LDPThruHostStackIperf.test_ldp_thru_host_stack_iperf3 [test_vcl.LDPThruHostStackIperf.test_ldp_thru_host_stack_iperf3]
  Testcase name: Bidirectional Forwarding Detection (BFD) (SHA1 auth)
      ERROR: test_bfd.BFDSHA1TestCase.test_session_up [test_bfd.BFDSHA1TestCase.test_session_up]
  Testcase name: Punt Socket for IPv6
      ERROR: test_punt.TestIP6PuntSocket.test_punt_socket_dump [test_punt.TestIP6PuntSocket.test_punt_socket_dump]
      ERROR: test_punt.TestIP6PuntSocket.test_punt_socket_traffic_multi_port_multi_sockets [test_punt.TestIP6PuntSocket.test_punt_socket_traffic_multi_port_multi_sockets]
      ERROR: test_punt.TestIP6PuntSocket.test_punt_socket_traffic_multi_ports_single_socket [test_punt.TestIP6PuntSocket.test_punt_socket_traffic_multi_ports_single_socket]
      ERROR: test_punt.TestIP6PuntSocket.test_punt_socket_traffic_single_port_single_socket [test_punt.TestIP6PuntSocket.test_punt_socket_traffic_single_port_single_socket]
  Testcase name: Disable Flowprobe feature
      ERROR: test_flowprobe.DisableFP.test_0001 [test_flowprobe.DisableFP.test_0001]
  Testcase name: Disable IPFIX
      ERROR: test_flowprobe.DisableIPFIX.test_0001 [test_flowprobe.DisableIPFIX.test_0001]
  Testcase name: VPP Object Model Test
      ERROR: test_vom.VOMTestCase.test_vom_cpp [test_vom.VOMTestCase.test_vom_cpp]
  Testcase name: BFD-FIB interactions (IPv6)
      ERROR: test_bfd.BFDFIBTestCase.test_session_with_fib [test_bfd.BFDFIBTestCase.test_session_with_fib]
  Testcase name: Bidirectional Forwarding Detection (BFD)
      ERROR: test_bfd.BFD4TestCase.test_echo [test_bfd.BFD4TestCase.test_echo]
      ERROR: test_bfd.BFD4TestCase.test_echo_looped_back [test_bfd.BFD4TestCase.test_echo_looped_back]
      ERROR: test_bfd.BFD4TestCase.test_intf_deleted [test_bfd.BFD4TestCase.test_intf_deleted]
      ERROR: test_bfd.BFD4TestCase.test_session_down [test_bfd.BFD4TestCase.test_session_down]
      ERROR: test_bfd.BFD4TestCase.test_session_up [test_bfd.BFD4TestCase.test_session_up]
      ERROR: test_bfd.BFD4TestCase.test_session_up_by_ip [test_bfd.BFD4TestCase.test_session_up_by_ip]
  Testcase name: VXLAN-GPE Test Case
      ERROR: test_vxlan_gpe.TestVxlanGpe.test_decap [test_vxlan_gpe.TestVxlanGpe.test_decap]
      ERROR: test_vxlan_gpe.TestVxlanGpe.test_encap [test_vxlan_gpe.TestVxlanGpe.test_encap]
      ERROR: test_vxlan_gpe.TestVxlanGpe.test_ucast_flood [test_vxlan_gpe.TestVxlanGpe.test_ucast_flood]
  Testcase name: Re-enable Flowprobe feature
      ERROR: test_flowprobe.ReenableFP.test_0001 [test_flowprobe.ReenableFP.test_0001]
  Testcase name: LDP IPv6 Cut Thru Tests
    FAILURE: test_vcl.LDPIpv6CutThruTestCase.test_ldp_ipv6_cut_thru_echo [test_vcl.LDPIpv6CutThruTestCase.test_ldp_ipv6_cut_thru_echo]
TESTCASES WHERE NO TESTS WERE SUCCESSFULLY EXECUTED:
  VXLAN over IPv6 Test Case
==============================================================================

0 attempt(s) left.

Change-Id: Id202ed6ee7f57670f34ec87380244c568b509416
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
17 files changed:
test/framework.py
test/test_acl_plugin_conns.py
test/test_bfd.py
test/test_classifier.py
test/test_classifier_ip6.py
test/test_classify_l2_acl.py
test/test_container.py
test/test_flowprobe.py
test/test_ipip.py
test/test_jvpp.py
test/test_punt.py
test/test_srv6.py
test/test_vapi.py
test/test_vcl.py
test/test_vom.py
test/test_vxlan6.py
test/test_vxlan_gpe.py

index 9151fa5..5b29ac4 100644 (file)
@@ -391,6 +391,7 @@ class VppTestCase(unittest.TestCase):
         Perform class setup before running the testcase
         Remove shared memory files, start vpp and connect the vpp-api
         """
+        super(VppTestCase, cls).setUpClass()
         gc.collect()  # run garbage collection first
         random.seed()
         cls.logger = get_logger(cls.__name__)
@@ -550,6 +551,7 @@ class VppTestCase(unittest.TestCase):
 
     def tearDown(self):
         """ Show various debug prints after each test """
+        super(VppTestCase, self).tearDown()
         self.logger.debug("--- tearDown() for %s.%s(%s) called ---" %
                           (self.__class__.__name__, self._testMethodName,
                            self._testMethodDoc))
@@ -576,6 +578,7 @@ class VppTestCase(unittest.TestCase):
 
     def setUp(self):
         """ Clear trace before running each test"""
+        super(VppTestCase, self).setUp()
         self.reporter.send_keep_alive(self)
         self.logger.debug("--- setUp() for %s.%s(%s) called ---" %
                           (self.__class__.__name__, self._testMethodName,
index d3c8581..b6c4737 100644 (file)
@@ -142,6 +142,10 @@ class ACLPluginConnTestCase(VppTestCase):
             i.resolve_arp()
             i.resolve_ndp()
 
+    @classmethod
+    def tearDownClass(cls):
+        super(ACLPluginConnTestCase, cls).tearDownClass()
+
     def tearDown(self):
         """Run standard test teardown and log various show commands
         """
index f40bcc6..a450a33 100644 (file)
@@ -69,6 +69,10 @@ class BFDAPITestCase(VppTestCase):
             super(BFDAPITestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFDAPITestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFDAPITestCase, self).setUp()
         self.factory = AuthKeyFactory()
@@ -302,7 +306,6 @@ class BFDAPITestCase(VppTestCase):
         self.assertFalse(echo_source.have_usable_ip6)
 
 
-@unittest.skipUnless(running_extended_tests, "part of extended tests")
 class BFDTestSession(object):
     """ BFD session as seen from test framework side """
 
@@ -692,6 +695,10 @@ class BFD4TestCase(VppTestCase):
             super(BFD4TestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFD4TestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFD4TestCase, self).setUp()
         self.factory = AuthKeyFactory()
@@ -1498,6 +1505,10 @@ class BFD6TestCase(VppTestCase):
             super(BFD6TestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFD6TestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFD6TestCase, self).setUp()
         self.factory = AuthKeyFactory()
@@ -1687,6 +1698,14 @@ class BFDFIBTestCase(VppTestCase):
     vpp_session = None
     test_session = None
 
+    @classmethod
+    def setUpClass(cls):
+        super(BFDFIBTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(BFDFIBTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFDFIBTestCase, self).setUp()
         self.create_pg_interfaces(range(1))
@@ -1805,6 +1824,10 @@ class BFDSHA1TestCase(VppTestCase):
             super(BFDSHA1TestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFDSHA1TestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFDSHA1TestCase, self).setUp()
         self.factory = AuthKeyFactory()
@@ -2038,6 +2061,10 @@ class BFDAuthOnOffTestCase(VppTestCase):
             super(BFDAuthOnOffTestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFDAuthOnOffTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFDAuthOnOffTestCase, self).setUp()
         self.factory = AuthKeyFactory()
@@ -2245,6 +2272,10 @@ class BFDCLITestCase(VppTestCase):
             super(BFDCLITestCase, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(BFDCLITestCase, cls).tearDownClass()
+
     def setUp(self):
         super(BFDCLITestCase, self).setUp()
         self.factory = AuthKeyFactory()
index f865cb9..8d4bde8 100644 (file)
@@ -267,7 +267,7 @@ class TestClassifier(VppTestCase):
             miss_next_index=0,
             current_data_flag=1,
             current_data_offset=data_offset)
-        self.assertIsNotNone(r, msg='No response msg for add_del_table')
+        self.assertIsNotNone(r, 'No response msg for add_del_table')
         self.acl_tbl_idx[key] = r.new_table_index
 
     def create_classify_session(self, table_index, match, pbr_option=0,
@@ -288,7 +288,7 @@ class TestClassifier(VppTestCase):
             opaque_index=0,
             action=pbr_option,
             metadata=vrfid)
-        self.assertIsNotNone(r, msg='No response msg for add_del_session')
+        self.assertIsNotNone(r, 'No response msg for add_del_session')
 
     def input_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Input ACL interface
@@ -302,7 +302,7 @@ class TestClassifier(VppTestCase):
             is_add,
             intf.sw_if_index,
             ip4_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
     def output_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Output ACL interface
@@ -316,7 +316,7 @@ class TestClassifier(VppTestCase):
             is_add,
             intf.sw_if_index,
             ip4_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
 
 # Tests split to different test case classes because of issue reported in
index cbcf5c4..f6d12c7 100644 (file)
@@ -236,7 +236,7 @@ class TestClassifier(VppTestCase):
             miss_next_index=0,
             current_data_flag=1,
             current_data_offset=data_offset)
-        self.assertIsNotNone(r, msg='No response msg for add_del_table')
+        self.assertIsNotNone(r, 'No response msg for add_del_table')
         self.acl_tbl_idx[key] = r.new_table_index
 
     def create_classify_session(self, table_index, match, vrfid=0, is_add=1):
@@ -254,7 +254,7 @@ class TestClassifier(VppTestCase):
             binascii.unhexlify(match),
             opaque_index=0,
             metadata=vrfid)
-        self.assertIsNotNone(r, msg='No response msg for add_del_session')
+        self.assertIsNotNone(r, 'No response msg for add_del_session')
 
     def input_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Input ACL interface
@@ -268,7 +268,7 @@ class TestClassifier(VppTestCase):
             is_add,
             intf.sw_if_index,
             ip6_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
     def output_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Output ACL interface
@@ -282,7 +282,7 @@ class TestClassifier(VppTestCase):
             is_add,
             intf.sw_if_index,
             ip6_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
 
 class TestClassifierIP6(TestClassifier):
index d9557ee..5c9ccc9 100644 (file)
@@ -209,7 +209,7 @@ class TestClassifyAcl(VppTestCase):
             miss_next_index=0,
             current_data_flag=1,
             current_data_offset=data_offset)
-        self.assertIsNotNone(r, msg='No response msg for add_del_table')
+        self.assertIsNotNone(r, 'No response msg for add_del_table')
         self.acl_tbl_idx[key] = r.new_table_index
 
     def create_classify_session(self, intf, table_index, match,
@@ -229,7 +229,7 @@ class TestClassifyAcl(VppTestCase):
             table_index,
             binascii.unhexlify(match),
             hit_next_index=hit_next_index)
-        self.assertIsNotNone(r, msg='No response msg for add_del_session')
+        self.assertIsNotNone(r, 'No response msg for add_del_session')
 
     def input_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Input ACL interface
@@ -243,7 +243,7 @@ class TestClassifyAcl(VppTestCase):
             is_add,
             intf.sw_if_index,
             l2_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
     def output_acl_set_interface(self, intf, table_index, is_add=1):
         """Configure Output ACL interface
@@ -257,7 +257,7 @@ class TestClassifyAcl(VppTestCase):
             is_add,
             intf.sw_if_index,
             l2_table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for acl_set_interface')
+        self.assertIsNotNone(r, 'No response msg for acl_set_interface')
 
     def create_hosts(self, count, start=0):
         """
index 66b7748..56644bc 100644 (file)
@@ -37,6 +37,10 @@ class ContainerIntegrationTestCase(VppTestCase):
             i.resolve_arp()
             i.resolve_ndp()
 
+    @classmethod
+    def tearDownClass(cls):
+        super(ContainerIntegrationTestCase, cls).tearDownClass()
+
     def tearDown(self):
         """Run standard test teardown and log various show commands
         """
index bb50627..c7b1f72 100644 (file)
@@ -158,6 +158,10 @@ class MethodHolder(VppTestCase):
             super(MethodHolder, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(MethodHolder, cls).tearDownClass()
+
     def create_stream(self, src_if=None, dst_if=None, packets=None,
                       size=None, ip_ver='v4'):
         """Create a packet stream to tickle the plugin
@@ -325,6 +329,14 @@ class MethodHolder(VppTestCase):
 class Flowprobe(MethodHolder):
     """Template verification, timer tests"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(Flowprobe, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(Flowprobe, cls).tearDownClass()
+
     def test_0001(self):
         """ timer less than template timeout"""
         self.logger.info("FFP_TEST_START_0001")
@@ -461,6 +473,14 @@ class Flowprobe(MethodHolder):
 class Datapath(MethodHolder):
     """collect information on Ethernet, IP4 and IP6 datapath (no timers)"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(Datapath, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(Datapath, cls).tearDownClass()
+
     def test_templatesL2(self):
         """ verify template on L2 datapath"""
         self.logger.info("FFP_TEST_START_0000")
@@ -828,6 +848,14 @@ class Datapath(MethodHolder):
 class DisableIPFIX(MethodHolder):
     """Disable IPFIX"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(DisableIPFIX, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(DisableIPFIX, cls).tearDownClass()
+
     def test_0001(self):
         """ disable IPFIX after first packets"""
         self.logger.info("FFP_TEST_START_0001")
@@ -869,6 +897,14 @@ class DisableIPFIX(MethodHolder):
 class ReenableIPFIX(MethodHolder):
     """Re-enable IPFIX"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(ReenableIPFIX, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(ReenableIPFIX, cls).tearDownClass()
+
     def test_0011(self):
         """ disable IPFIX after first packets and re-enable after few packets
         """
@@ -891,7 +927,7 @@ class ReenableIPFIX(MethodHolder):
         self.wait_for_cflow_packet(self.collector, templates[1])
         self.collector.get_capture(4)
 
-        # disble IPFIX
+        # disable IPFIX
         ipfix.disable_exporter()
         self.vapi.cli("ipfix flush")
         self.pg_enable_capture([self.collector])
@@ -930,6 +966,14 @@ class ReenableIPFIX(MethodHolder):
 class DisableFP(MethodHolder):
     """Disable Flowprobe feature"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(DisableFP, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(DisableFP, cls).tearDownClass()
+
     def test_0001(self):
         """ disable flowprobe feature after first packets"""
         self.logger.info("FFP_TEST_START_0001")
@@ -970,6 +1014,14 @@ class DisableFP(MethodHolder):
 class ReenableFP(MethodHolder):
     """Re-enable Flowprobe feature"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(ReenableFP, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(ReenableFP, cls).tearDownClass()
+
     def test_0001(self):
         """ disable flowprobe feature after first packets and re-enable
         after few packets """
index e4a893b..cb2eaaf 100644 (file)
@@ -250,6 +250,7 @@ class TestIPIP6(VppTestCase):
         cls.interfaces = list(cls.pg_interfaces)
 
     def setUp(self):
+        super(TestIPIP6, self).setUp()
         for i in self.interfaces:
             i.admin_up()
             i.config_ip4()
index b716af3..9a58ca4 100644 (file)
@@ -17,6 +17,14 @@ REGISTRY_JAR_PREFIX = "jvpp-registry"
 class TestJVpp(VppTestCase):
     """ JVPP Core Test Case """
 
+    @classmethod
+    def setUpClass(cls):
+        super(TestJVpp, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestJVpp, cls).tearDownClass()
+
     def invoke_for_jvpp_core(self, api_jar_name, test_class_name):
         self.jvpp_connection_test(api_jar_name=api_jar_name,
                                   test_class_name=test_class_name,
index d57a847..7959b98 100644 (file)
@@ -119,6 +119,14 @@ class TestPuntSocket(VppTestCase):
     portsCheck = dict()
     nr_packets = 256
 
+    @classmethod
+    def setUpClass(cls):
+        super(TestPuntSocket, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestPuntSocket, cls).tearDownClass()
+
     @classmethod
     def setUpConstants(cls):
         cls.extra_vpp_punt_config = [
@@ -135,6 +143,7 @@ class TestPuntSocket(VppTestCase):
 
     def tearDown(self):
         del self.sock_servers[:]
+        super(TestPuntSocket, self).tearDown()
 
     def socket_client_create(self, sock_name, id=None):
         thread = serverSocketThread(id, sock_name, self.portsCheck)
@@ -149,6 +158,14 @@ class TestPuntSocket(VppTestCase):
 class TestIP4PuntSocket(TestPuntSocket):
     """ Punt Socket for IPv4 """
 
+    @classmethod
+    def setUpClass(cls):
+        super(TestIP4PuntSocket, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestIP4PuntSocket, cls).tearDownClass()
+
     def setUp(self):
         super(TestIP4PuntSocket, self).setUp()
 
@@ -385,6 +402,14 @@ class TestIP4PuntSocket(TestPuntSocket):
 class TestIP6PuntSocket(TestPuntSocket):
     """ Punt Socket for IPv6"""
 
+    @classmethod
+    def setUpClass(cls):
+        super(TestIP6PuntSocket, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestIP6PuntSocket, cls).tearDownClass()
+
     def setUp(self):
         super(TestIP6PuntSocket, self).setUp()
 
index 47832e2..46660f5 100644 (file)
@@ -1231,7 +1231,7 @@ class TestSRv6(VppTestCase):
             match_n_vectors=(len(mask) - 1) // 32 + 1,
             current_data_flag=1,
             skip_n_vectors=2)  # data offset
-        self.assertIsNotNone(r, msg='No response msg for add_del_table')
+        self.assertIsNotNone(r, 'No response msg for add_del_table')
         table_index = r.new_table_index
 
         # add the source routign node as a ip6 inacl netxt node
@@ -1247,7 +1247,7 @@ class TestSRv6(VppTestCase):
             hit_next_index=inacl_next_node_index,
             action=3,
             metadata=0)  # sr policy index
-        self.assertIsNotNone(r, msg='No response msg for add_del_session')
+        self.assertIsNotNone(r, 'No response msg for add_del_session')
 
         # log the classify table used in the steering policy
         self.logger.info(self.vapi.cli("show classify table"))
@@ -1257,7 +1257,7 @@ class TestSRv6(VppTestCase):
             sw_if_index=self.pg3.sw_if_index,
             ip6_table_index=table_index)
         self.assertIsNotNone(r,
-                             msg='No response msg for input_acl_set_interface')
+                             'No response msg for input_acl_set_interface')
 
         # log the ip6 inacl
         self.logger.info(self.vapi.cli("show inacl type ip6"))
@@ -1292,7 +1292,7 @@ class TestSRv6(VppTestCase):
             sw_if_index=self.pg3.sw_if_index,
             ip6_table_index=table_index)
         self.assertIsNotNone(r,
-                             msg='No response msg for input_acl_set_interface')
+                             'No response msg for input_acl_set_interface')
 
         # log the ip6 inacl after cleaning
         self.logger.info(self.vapi.cli("show inacl type ip6"))
@@ -1313,13 +1313,13 @@ class TestSRv6(VppTestCase):
             0,
             table_index,
             binascii.unhexlify(match))
-        self.assertIsNotNone(r, msg='No response msg for add_del_session')
+        self.assertIsNotNone(r, 'No response msg for add_del_session')
 
         r = self.vapi.classify_add_del_table(
             0,
             binascii.unhexlify(mask),
             table_index=table_index)
-        self.assertIsNotNone(r, msg='No response msg for add_del_table')
+        self.assertIsNotNone(r, 'No response msg for add_del_table')
 
         self.logger.info(self.vapi.cli("show classify table"))
 
index ebd189c..7bb815d 100644 (file)
@@ -12,6 +12,14 @@ from framework import VppTestCase, running_extended_tests, \
 class VAPITestCase(VppTestCase):
     """ VAPI test """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VAPITestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VAPITestCase, cls).tearDownClass()
+
     def test_vapi_c(self):
         """ run C VAPI tests """
         var = "TEST_DIR"
index 34cf0e2..bd7eb76 100644 (file)
@@ -32,7 +32,15 @@ class VCLAppWorker(Worker):
 class VCLTestCase(VppTestCase):
     """ VCL Test Class """
 
-    def __init__(self, methodName):
+    @classmethod
+    def setUpClass(cls):
+        super(VCLTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLTestCase, cls).tearDownClass()
+
+    def setUp(self):
         var = "VPP_BUILD_DIR"
         self.build_dir = os.getenv(var, None)
         if self.build_dir is None:
@@ -51,7 +59,7 @@ class VCLTestCase(VppTestCase):
         if os.path.isfile("/tmp/ldp_server_af_unix_socket"):
             os.remove("/tmp/ldp_server_af_unix_socket")
 
-        super(VCLTestCase, self).__init__(methodName)
+        super(VCLTestCase, self).setUp()
 
     def cut_thru_setup(self):
         self.vapi.session_enable_disable(is_enabled=1)
@@ -222,6 +230,14 @@ class VCLTestCase(VppTestCase):
 class LDPCutThruTestCase(VCLTestCase):
     """ LDP Cut Thru Tests """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPCutThruTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPCutThruTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(LDPCutThruTestCase, self).setUp()
 
@@ -290,6 +306,14 @@ class LDPCutThruTestCase(VCLTestCase):
 class VCLCutThruTestCase(VCLTestCase):
     """ VCL Cut Thru Tests """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLCutThruTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLCutThruTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(VCLCutThruTestCase, self).setUp()
 
@@ -339,6 +363,14 @@ class VCLCutThruTestCase(VCLTestCase):
 class LDPThruHostStackEcho(VCLTestCase):
     """ LDP Thru Host Stack Echo """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPThruHostStackEcho, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPThruHostStackEcho, cls).tearDownClass()
+
     def setUp(self):
         super(LDPThruHostStackEcho, self).setUp()
 
@@ -362,6 +394,14 @@ class LDPThruHostStackEcho(VCLTestCase):
 class VCLThruHostStackEcho(VCLTestCase):
     """ VCL Thru Host Stack Echo """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLThruHostStackEcho, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLThruHostStackEcho, cls).tearDownClass()
+
     def setUp(self):
         super(VCLThruHostStackEcho, self).setUp()
 
@@ -385,6 +425,14 @@ class VCLThruHostStackEcho(VCLTestCase):
 class VCLThruHostStackBidirNsock(VCLTestCase):
     """ VCL Thru Host Stack Bidir Nsock """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLThruHostStackBidirNsock, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLThruHostStackBidirNsock, cls).tearDownClass()
+
     def setUp(self):
         super(VCLThruHostStackBidirNsock, self).setUp()
 
@@ -414,6 +462,14 @@ class VCLThruHostStackBidirNsock(VCLTestCase):
 class LDPThruHostStackBidirNsock(VCLTestCase):
     """ LDP Thru Host Stack Bidir Nsock """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPThruHostStackBidirNsock, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPThruHostStackBidirNsock, cls).tearDownClass()
+
     def setUp(self):
         super(LDPThruHostStackBidirNsock, self).setUp()
 
@@ -449,6 +505,14 @@ class LDPThruHostStackBidirNsock(VCLTestCase):
 class LDPThruHostStackNsock(VCLTestCase):
     """ LDP Thru Host Stack Nsock """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPThruHostStackNsock, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPThruHostStackNsock, cls).tearDownClass()
+
     def setUp(self):
         super(LDPThruHostStackNsock, self).setUp()
 
@@ -481,6 +545,14 @@ class LDPThruHostStackNsock(VCLTestCase):
 class VCLThruHostStackNsock(VCLTestCase):
     """ VCL Thru Host Stack Nsock """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLThruHostStackNsock, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLThruHostStackNsock, cls).tearDownClass()
+
     def setUp(self):
         super(VCLThruHostStackNsock, self).setUp()
 
@@ -513,6 +585,14 @@ class VCLThruHostStackNsock(VCLTestCase):
 class LDPThruHostStackIperf(VCLTestCase):
     """ LDP Thru Host Stack Iperf  """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPThruHostStackIperf, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPThruHostStackIperf, cls).tearDownClass()
+
     def setUp(self):
         super(LDPThruHostStackIperf, self).setUp()
 
@@ -544,6 +624,14 @@ class LDPThruHostStackIperf(VCLTestCase):
 class LDPIpv6CutThruTestCase(VCLTestCase):
     """ LDP IPv6 Cut Thru Tests """
 
+    @classmethod
+    def setUpClass(cls):
+        super(LDPIpv6CutThruTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(LDPIpv6CutThruTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(LDPIpv6CutThruTestCase, self).setUp()
 
@@ -619,6 +707,14 @@ class LDPIpv6CutThruTestCase(VCLTestCase):
 class VCLIpv6CutThruTestCase(VCLTestCase):
     """ VCL IPv6 Cut Thru Tests """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLIpv6CutThruTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLIpv6CutThruTestCase, cls).tearDownClass()
+
     def setUp(self):
         super(VCLIpv6CutThruTestCase, self).setUp()
 
@@ -674,6 +770,14 @@ class VCLIpv6CutThruTestCase(VCLTestCase):
 class VCLIpv6ThruHostStackEcho(VCLTestCase):
     """ VCL IPv6 Thru Host Stack Echo """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
+
     def setUp(self):
         super(VCLIpv6ThruHostStackEcho, self).setUp()
 
index 222d72c..a27d531 100644 (file)
@@ -12,6 +12,14 @@ from framework import VppTestCase, running_extended_tests, \
 class VOMTestCase(VppTestCase):
     """ VPP Object Model Test """
 
+    @classmethod
+    def setUpClass(cls):
+        super(VOMTestCase, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(VOMTestCase, cls).tearDownClass()
+
     def test_vom_cpp(self):
         """ run C++ VOM tests """
         var = "TEST_DIR"
index fd89f05..5ae8e7e 100644 (file)
@@ -171,6 +171,10 @@ class TestVxlan6(BridgeDomain, VppTestCase):
             super(TestVxlan6, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(TestVxlan6, cls).tearDownClass()
+
     # Method to define VPP actions before tear down of the test case.
     #  Overrides tearDown method in VppTestCase class.
     #  @param self The object pointer.
index 7c2df4c..f635bb1 100644 (file)
@@ -221,6 +221,10 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
             super(TestVxlanGpe, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(TestVxlanGpe, cls).tearDownClass()
+
     @unittest.skip("test disabled for vxlan-gpe")
     def test_mcast_flood(self):
         """ inherited from BridgeDomain """