PAPI: Union pad at the end of short fields instead of at head. 11/13911/6
authorOle Troan <ot@cisco.com>
Thu, 2 Aug 2018 17:19:21 +0000 (19:19 +0200)
committerDave Barach <openvpp@barachs.net>
Fri, 3 Aug 2018 15:44:46 +0000 (15:44 +0000)
Hopefully that's going to be consistent across platforms, compilers and ABI.

Change-Id: I0b82565288d88fd046278d4d8288ec1488273ba5
Signed-off-by: Ole Troan <ot@cisco.com>
extras/rpm/vpp.spec
src/vpp-api/python/setup.py
src/vpp-api/python/tests/__init__.py [new file with mode: 0644]
src/vpp-api/python/tests/test_vpp_serializer.py
src/vpp-api/python/vpp_papi/vpp_serializer.py

index 69d4d6b..4915914 100644 (file)
@@ -398,6 +398,7 @@ fi
 %files api-python
 %defattr(644,root,root)
 %{python2_sitelib}/vpp_*
+%{python2_sitelib}/tests/*
 
 %files selinux-policy
 %defattr(-,root,root,0755)
index d97e35f..130967f 100644 (file)
@@ -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 (file)
index 0000000..e69de29
index 0c194b4..9fee161 100755 (executable)
@@ -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
index 9b30d5c..cd9a281 100644 (file)
@@ -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)