vxlan: vxlan/vxlan.api API cleanup
[vpp.git] / test / remote_test.py
index cd2e46f..8b3def2 100644 (file)
@@ -1,16 +1,19 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import inspect
 import os
 import unittest
+from framework import VppTestCase
 from multiprocessing import Process, Pipe
 from pickle import dumps
-
 import six
 from six import moves
+import sys
 
-from framework import VppTestCase
-from aenum import Enum
+if sys.version_info < (3,):
+    from aenum import IntEnum, IntFlag
+else:
+    from enum import IntEnum, IntFlag
 
 
 class SerializableClassCopy(object):
@@ -249,12 +252,14 @@ class RemoteClass(Process):
             if name[0] == '_':
                 if name in ['__weakref__']:
                     continue
+                if name in ['__dict__']:
+                    continue
                 if not (name.startswith('__') and name.endswith('__')):
                     continue
             if callable(member) and not isinstance(member, property):
                 continue
             if not self._serializable(member):
-                continue
+                member = self._make_serializable(member)
             setattr(copy, name, member)
         return copy
 
@@ -270,7 +275,7 @@ class RemoteClass(Process):
             if type(obj) is tuple:
                 rv = tuple(rv)
             return rv
-        elif (isinstance(obj, Enum)):
+        elif (isinstance(obj, IntEnum) or isinstance(obj, IntFlag)):
             return obj.value
         else:
             return self._make_obj_serializable(obj)