aboutsummaryrefslogtreecommitdiffstats
path: root/test/vpp_object.py
diff options
context:
space:
mode:
authorKlement Sekera <ksekera@cisco.com>2017-02-14 02:55:31 +0100
committerKlement Sekera <ksekera@cisco.com>2017-02-14 03:38:37 +0100
commitacb9b8e8c3394d06964ad0f8387b764c01f43152 (patch)
treec6d0df90d666732a8a3bf171e0c0bdaca696b16b /test/vpp_object.py
parent2bce0332d368901ea66c7e582119719757e37e42 (diff)
make test: improve stability
Disable automatic garbage collection and run it manually before running each test case to minimize stalls. Improve vpp subprocess cleanup. Reduce helper thread count to one and properly clean that thread once it's not needed. Change-Id: I3ea78ed9628552b5ef3ff29cc7bcf2d3fc42f2c3 Signed-off-by: Klement Sekera <ksekera@cisco.com>
Diffstat (limited to 'test/vpp_object.py')
-rw-r--r--test/vpp_object.py35
1 files changed, 17 insertions, 18 deletions
diff --git a/test/vpp_object.py b/test/vpp_object.py
index 1997bf55d29..0d74baa53ab 100644
--- a/test/vpp_object.py
+++ b/test/vpp_object.py
@@ -1,3 +1,5 @@
+""" abstract vpp object and object registry """
+
from abc import ABCMeta, abstractmethod
@@ -5,9 +7,6 @@ class VppObject(object):
""" Abstract vpp object """
__metaclass__ = ABCMeta
- def __init__(self):
- VppObjectRegistry().register(self)
-
@abstractmethod
def add_vpp_config(self):
""" Add the configuration for this object to vpp. """
@@ -42,13 +41,13 @@ class VppObjectRegistry(object):
if not hasattr(self, "_object_dict"):
self._object_dict = dict()
- def register(self, o, logger):
+ def register(self, obj, logger):
""" Register an object in the registry. """
- if not o.object_id() in self._object_dict:
- self._object_registry.append(o)
- self._object_dict[o.object_id()] = o
+ if obj.object_id() not in self._object_dict:
+ self._object_registry.append(obj)
+ self._object_dict[obj.object_id()] = obj
else:
- logger.debug("REG: duplicate add, ignoring (%s)" % o)
+ logger.debug("REG: duplicate add, ignoring (%s)" % obj)
def remove_vpp_config(self, logger):
"""
@@ -60,23 +59,23 @@ class VppObjectRegistry(object):
return
logger.info("REG: Removing VPP configuration for registered objects")
# remove the config in reverse order as there might be dependencies
- for o in reversed(self._object_registry):
- if o.query_vpp_config():
- logger.info("REG: Removing configuration for %s" % o)
- o.remove_vpp_config()
+ for obj in reversed(self._object_registry):
+ if obj.query_vpp_config():
+ logger.info("REG: Removing configuration for %s" % obj)
+ obj.remove_vpp_config()
else:
logger.info(
"REG: Skipping removal for %s, configuration not present" %
- o)
+ obj)
failed = []
- for o in self._object_registry:
- if o.query_vpp_config():
- failed.append(o)
+ for obj in self._object_registry:
+ if obj.query_vpp_config():
+ failed.append(obj)
self._object_registry = []
self._object_dict = dict()
if failed:
logger.error("REG: Couldn't remove configuration for object(s):")
- for x in failed:
- logger.error(repr(x))
+ for obj in failed:
+ logger.error(repr(obj))
raise Exception("Couldn't remove configuration for object(s): %s" %
(", ".join(str(x) for x in failed)))