X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=test%2Fremote_test.py;h=134d90ffa834edb493aae8ccd73a93ce5e8a7673;hb=30a819579cb396db1c975ae8e08477129aa7950d;hp=cd2e46fe219e61a41c9515405144d309c8b72119;hpb=7db35de508f4ce1f04eb7e28e454829c66f7635a;p=vpp.git diff --git a/test/remote_test.py b/test/remote_test.py index cd2e46fe219..134d90ffa83 100644 --- a/test/remote_test.py +++ b/test/remote_test.py @@ -1,19 +1,18 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import inspect import os +import reprlib import unittest +from framework import VppTestCase from multiprocessing import Process, Pipe from pickle import dumps +import sys -import six -from six import moves - -from framework import VppTestCase -from aenum import Enum +from enum import IntEnum, IntFlag -class SerializableClassCopy(object): +class SerializableClassCopy: """ Empty class used as a basis for a serializable copy of another class. """ @@ -23,7 +22,7 @@ class SerializableClassCopy(object): return '' % self.__dict__ -class RemoteClassAttr(object): +class RemoteClassAttr: """ Wrapper around attribute of a remotely executed class. """ @@ -110,7 +109,7 @@ class RemoteClass(Process): self._pipe = Pipe() # pipe for input/output arguments def __repr__(self): - return moves.reprlib.repr(RemoteClassAttr(self, None)) + return reprlib.repr(RemoteClassAttr(self, None)) def __str__(self): return str(RemoteClassAttr(self, None)) @@ -144,7 +143,7 @@ class RemoteClass(Process): isinstance(val, RemoteClassAttr): mutable_args[i] = val.get_remote_value() args = tuple(mutable_args) - for key, val in six.iteritems(kwargs): + for key, val in kwargs.items(): if isinstance(val, RemoteClass) or \ isinstance(val, RemoteClassAttr): kwargs[key] = val.get_remote_value() @@ -201,7 +200,7 @@ class RemoteClass(Process): def _get_local_repr(self, path): try: obj = self._get_local_object(path) - return moves.reprlib.repr(obj) + return reprlib.repr(obj) except AttributeError: return None @@ -249,12 +248,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 +271,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)