diff options
author | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2019-03-28 09:53:44 -0700 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2019-03-29 16:02:27 +0000 |
commit | 3593a9174a8e9faddb8d4eb451d1b4632c1e0df1 (patch) | |
tree | 69e94c2f92662b09cef02a14167d1145a9ed575b /test/vpp_object.py | |
parent | 60f3e6547aa75a31fad1f78bea11c950cc30d63c (diff) |
tests: refactor vpp_object.py
Move __str__ to super for all subclasses of VppObject
Implement __repr__ in VppObject
Implement __hash__ and __eq__
Change-Id: Ibd4ea37b84b17f499ab86630fb5b9ed9c8b4b1c2
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Diffstat (limited to 'test/vpp_object.py')
-rw-r--r-- | test/vpp_object.py | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/test/vpp_object.py b/test/vpp_object.py index a0b9fe3abf2..2c07d472a65 100644 --- a/test/vpp_object.py +++ b/test/vpp_object.py @@ -27,10 +27,29 @@ class VppObject(object): """ Remove the configuration for this object from vpp. """ pass - @abc.abstractmethod def object_id(self): """ Return a unique string representing this object. """ - pass + return "Undefined. for <%s %s>" % (self.__class__.__name__, id(self)) + + def __str__(self): + return self.object_id() + + def __repr__(self): + return '<%s>' % self.object_id() + + def __hash__(self): + return hash(self.object_id()) + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return NotImplemented + if other.object_id() == self.object_id(): + return True + return False + + # This can be removed when python2 support is dropped. + def __ne__(self, other): + return not self.__eq__(other) class VppObjectRegistry(object): @@ -84,6 +103,6 @@ class VppObjectRegistry(object): if failed: logger.error("REG: Couldn't remove configuration for object(s):") for obj in failed: - logger.error(moves.reprlib.repr(obj)) + logger.error(repr(obj)) raise Exception("Couldn't remove configuration for object(s): %s" % (", ".join(str(x) for x in failed))) |