Add unittest to exercise python compatibility
[osm/IM.git] / tests / test_python.py
diff --git a/tests/test_python.py b/tests/test_python.py
new file mode 100644 (file)
index 0000000..f6b4f7d
--- /dev/null
@@ -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