From 658dd3c4a146ee3581e666066d9eea30177d49fd Mon Sep 17 00:00:00 2001 From: Adam Israel Date: Thu, 30 Nov 2017 15:49:03 -0500 Subject: [PATCH] Add unittest to exercise python compatibility It was recently discovered that the IM module is not Python3 compatible due to issues with the pyangbind library. This patch adds a specific test that will exercise basic parsing of a VNFD, which passes under Python2 but fails under Python3. This will be useful for verifying Python3 support when it lands in pyangbind. Signed-off-by: Adam Israel --- tests/test_python.py | 78 ++++++++++++++++++++++++++++++++++++++++++++ tox.ini | 1 + 2 files changed, 79 insertions(+) create mode 100644 tests/test_python.py diff --git a/tests/test_python.py b/tests/test_python.py new file mode 100644 index 0000000..f6b4f7d --- /dev/null +++ b/tests/test_python.py @@ -0,0 +1,78 @@ +import osm_im.vnfd as vnfd_catalog +from pyangbind.lib.serialise import pybindJSONDecoder +import unittest +import yaml + +VNFD_YAML = """ +vnfd-catalog: + vnfd: + - id: cirros_vnfd + name: cirros_vnf + short-name: cirros_vnf + description: Simple VNF example with a cirros + vendor: OSM + version: '1.0' + + # Place the logo as png in icons directory and provide the name here + logo: cirros-64.png + + # Management interface + mgmt-interface: + cp: eth0 + + # Atleast one VDU need to be specified + vdu: + - id: cirros_vnfd-VM + name: cirros_vnfd-VM + description: cirros_vnfd-VM + count: 1 + + # Flavour of the VM to be instantiated for the VDU + # flavor below can fit into m1.micro + vm-flavor: + vcpu-count: 1 + memory-mb: 256 + storage-gb: 2 + + # Image/checksum or image including the full path + image: 'cirros034' + #checksum: + + interface: + # Specify the external interfaces + # There can be multiple interfaces defined + - name: eth0 + type: EXTERNAL + virtual-interface: + type: VIRTIO + bandwidth: '0' + vpci: 0000:00:0a.0 + external-connection-point-ref: eth0 + + connection-point: + - name: eth0 + type: VPORT +""" + +class PythonTest(unittest.TestCase): + + + def test_python_compatibility(self): + """A simple test to verify Python compatibility. + + This test exercises basic IM interoperability with supported versions + of Python in order to verify the IM libraries compatibility. + + As of 30 Nov 2017, the IM library fails with Python3. This invokes that + failing code so that it can be repeatably tested: + + ValueError: '_pybind_generated_by' in __slots__ conflicts with class variable + """ + + try: + data = yaml.load(VNFD_YAML) + + myvnfd = vnfd_catalog.vnfd() + pybindJSONDecoder.load_ietf_json(data, None, None, obj=myvnfd) + except ValueError: + assert False diff --git a/tox.ini b/tox.ini index 4493390..c1c0215 100644 --- a/tox.ini +++ b/tox.ini @@ -5,6 +5,7 @@ toxworkdir={homedir}/.tox [testenv] deps=nose mock + pyyaml commands=nosetests [testenv:flake8] -- 2.17.1