Create UTs for Extension Views 73/13573/1
authorVictor Morales <victor.morales@intel.com>
Tue, 19 Sep 2017 18:56:43 +0000 (11:56 -0700)
committerVictor Morales <victor.morales@intel.com>
Tue, 19 Sep 2017 19:23:25 +0000 (12:23 -0700)
This change add a Unit tests for EpaCaps and Extensions ApiView
Classes.

Change-Id: I8913b63260e4fc884d7c22f376f7a9380a67d999
Signed-off-by: Victor Morales <victor.morales@intel.com>
Issue-Id: MULTICLOUD-83

newton/newton/extensions/tests/__init__.py [new file with mode: 0644]
newton/newton/extensions/tests/test_epacaps.py [new file with mode: 0644]
newton/newton/extensions/tests/test_extensions.py [new file with mode: 0644]
newton/newton/extensions/views/epacaps.py
newton/newton/extensions/views/extensions.py

diff --git a/newton/newton/extensions/tests/__init__.py b/newton/newton/extensions/tests/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/newton/newton/extensions/tests/test_epacaps.py b/newton/newton/extensions/tests/test_epacaps.py
new file mode 100644 (file)
index 0000000..65125a4
--- /dev/null
@@ -0,0 +1,67 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import json
+
+import mock
+from django.test import Client
+from rest_framework import status
+import unittest
+
+from newton.requests.views.util import VimDriverUtils
+
+MOCK_VIM_INFO = {
+    "createTime": "2017-04-01 02:22:27",
+    "domain": "Default",
+    "name": "TiS_R4",
+    "password": "admin",
+    "tenant": "admin",
+    "type": "openstack",
+    "url": "http://128.224.180.14:5000/v3",
+    "userName": "admin",
+    "vendor": "WindRiver",
+    "version": "newton",
+    "vimId": "windriver-hudson-dc_RegionOne",
+    'cloud_owner':'windriver-hudson-dc',
+    'cloud_region_id':'RegionOne',
+    'cloud_extra_info':'',
+    'cloud_epa_caps':'{"huge_page":"true","cpu_pinning":"true",\
+        "cpu_thread_policy":"true","numa_aware":"true","sriov":"true",\
+        "dpdk_vswitch":"true","rdt":"false","numa_locality_pci":"true"}',
+    'insecure':'True',
+}
+
+
+class TestEpaCaps(unittest.TestCase):
+    def setUp(self):
+        self.client = Client()
+
+    @mock.patch.object(VimDriverUtils, 'get_vim_info')
+    def test_get_epa_caps_info(self, mock_get_vim_info):
+        mock_get_vim_info.return_value = MOCK_VIM_INFO
+        cloud_owner = "windriver-hudson-dc"
+        cloud_region_id = "RegionOne"
+        vimid = cloud_owner + "_" + cloud_region_id
+
+        response = self.client.get(
+            "/api/multicloud-newton/v0/" + vimid + "/extensions/epa-caps")
+        json_content = response.json()
+
+        self.assertEquals(status.HTTP_200_OK, response.status_code)
+        self.assertEquals(4, len(json_content.keys()))
+        self.assertEquals(cloud_owner, json_content["cloud-owner"])
+        self.assertEquals(cloud_region_id, json_content["cloud-region-id"])
+        self.assertEquals(vimid, json_content["vimid"])
+        self.assertEquals(json.loads(MOCK_VIM_INFO['cloud_epa_caps']),
+                          json_content["cloud-epa-caps"])
\ No newline at end of file
diff --git a/newton/newton/extensions/tests/test_extensions.py b/newton/newton/extensions/tests/test_extensions.py
new file mode 100644 (file)
index 0000000..89ef0d1
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from django.test import Client
+from rest_framework import status
+import unittest
+
+
+class TestExtensions(unittest.TestCase):
+    def setUp(self):
+        self.client = Client()
+
+    def test_get_extensions_info(self):
+        cloud_owner = "windriver-hudson-dc"
+        cloud_region_id = "RegionOne"
+        vimid = cloud_owner + "_" + cloud_region_id
+
+        response = self.client.get(
+            "/api/multicloud-newton/v0/" + vimid + "/extensions/")
+        json_content = response.json()
+
+        self.assertEquals(status.HTTP_200_OK, response.status_code)
+        self.assertEquals(4, len(json_content.keys()))
+
+        self.assertEquals(cloud_owner, json_content["cloud-owner"])
+        self.assertEquals(cloud_region_id, json_content["cloud-region-id"])
+        self.assertEquals(vimid, json_content["vimid"])
+
+        self.assertEquals("epa-caps", json_content["extensions"][0]["alias"])
+        self.assertEquals("Multiple network support", json_content["extensions"][0]["description"])
+        self.assertEquals("EPACapsQuery", json_content["extensions"][0]["name"])
+        self.assertEquals("http://127.0.0.1:80/api/multicloud-newton/v0/%s/extensions/epa-caps" % vimid,
+                          json_content["extensions"][0]["url"])
+        self.assertEquals("", json_content["extensions"][0]["spec"])
\ No newline at end of file
index 54bd0eb..e41d16c 100644 (file)
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
 import logging
 import json
 import traceback
 
-from django.core.cache import cache
-
 from keystoneauth1.exceptions import HttpError
 from rest_framework import status
 from rest_framework.response import Response
@@ -29,8 +28,6 @@ from newton.pub.msapi import extsys
 
 logger = logging.getLogger(__name__)
 
-DEBUG=True
-
 
 class EpaCaps(APIView):
 
@@ -55,7 +52,6 @@ class EpaCaps(APIView):
                 "cloud-epa-caps": caps_json,
             }
             return Response(data=content, status=status.HTTP_200_OK)
-            #return resp
         except VimDriverNewtonException as e:
             return Response(data={'error': e.content}, status=e.status_code)
         except HttpError as e:
index a196edc..c9f4df7 100644 (file)
@@ -52,7 +52,7 @@ class Extensions(APIView):
                         "alias": "epa-caps",
                         "description": "Multiple network support",
                         "name": "EPACapsQuery",
-                        "url": self.proxy_prefix+"/%s/extensions/epa-caps" \
+                        "url": self.proxy_prefix + "/%s/extensions/epa-caps" \
                                        % (vimid),
                         "spec": ""
                     }