diff options
author | Ole Troan <ot@cisco.com> | 2018-08-02 19:19:21 +0200 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-08-03 15:44:46 +0000 |
commit | b199e98fef4256795db7fb055b180a07ce84de5c (patch) | |
tree | 079a1f975f7cddb1d64c0107495faba2f5c8f821 /src/vpp-api/python | |
parent | b257fc9fc2558139ec315754e98a57cebb358ed4 (diff) |
PAPI: Union pad at the end of short fields instead of at head.
Hopefully that's going to be consistent across platforms, compilers and ABI.
Change-Id: I0b82565288d88fd046278d4d8288ec1488273ba5
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/vpp-api/python')
-rw-r--r-- | src/vpp-api/python/setup.py | 2 | ||||
-rw-r--r-- | src/vpp-api/python/tests/__init__.py | 0 | ||||
-rwxr-xr-x | src/vpp-api/python/tests/test_vpp_serializer.py | 8 | ||||
-rw-r--r-- | src/vpp-api/python/vpp_papi/vpp_serializer.py | 6 |
4 files changed, 7 insertions, 9 deletions
diff --git a/src/vpp-api/python/setup.py b/src/vpp-api/python/setup.py index d97e35fa98f..130967f79f1 100644 --- a/src/vpp-api/python/setup.py +++ b/src/vpp-api/python/setup.py @@ -18,7 +18,7 @@ except ImportError: from distutils.core import setup, find_packages setup(name='vpp_papi', - version='1.5', + version='1.6', description='VPP Python binding', author='Ole Troan', author_email='ot@cisco.com', diff --git a/src/vpp-api/python/tests/__init__.py b/src/vpp-api/python/tests/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/src/vpp-api/python/tests/__init__.py diff --git a/src/vpp-api/python/tests/test_vpp_serializer.py b/src/vpp-api/python/tests/test_vpp_serializer.py index 0c194b46d22..9fee161684d 100755 --- a/src/vpp-api/python/tests/test_vpp_serializer.py +++ b/src/vpp-api/python/tests/test_vpp_serializer.py @@ -15,11 +15,11 @@ class TestAddType(unittest.TestCase): [['u8', 'is_bool'], ['u32', 'is_int']]) - b = un.pack({'is_int': 0x1234}) + b = un.pack({'is_int': 0x12345678}) self.assertEqual(len(b), 4) nt = un.unpack(b) - self.assertEqual(nt.is_bool, 52) - self.assertEqual(nt.is_int, 0x1234) + self.assertEqual(nt.is_bool, 0x12) + self.assertEqual(nt.is_int, 0x12345678) def test_address(self): af = VPPEnumType('vl_api_address_family_t', [["ADDRESS_IP4", 0], @@ -53,7 +53,7 @@ class TestAddType(unittest.TestCase): self.assertEqual(nt.un.ip4.address, inet_pton(AF_INET, '2.2.2.2')) self.assertEqual(nt.un.ip6.address, - inet_pton(AF_INET6, '::0202:0202')) + inet_pton(AF_INET6, '0202:0202::')) def test_arrays(self): # Test cases diff --git a/src/vpp-api/python/vpp_papi/vpp_serializer.py b/src/vpp-api/python/vpp_papi/vpp_serializer.py index 9b30d5caa56..cd9a281964a 100644 --- a/src/vpp-api/python/vpp_papi/vpp_serializer.py +++ b/src/vpp-api/python/vpp_papi/vpp_serializer.py @@ -232,17 +232,15 @@ class VPPUnionType(): for k, v in data.items(): logger.debug("Key: {} Value: {}".format(k, v)) b = self.packers[k].pack(v, kwargs) - offset = self.size - self.packers[k].size break r = bytearray(self.size) - r[offset:] = b + r[:len(b)] = b return r def unpack(self, data, offset=0, result=None): r = [] for k, p in self.packers.items(): - union_offset = self.size - p.size - r.append(p.unpack(data, offset + union_offset)) + r.append(p.unpack(data, offset)) return self.tuple._make(r) |