From 98c3ee82a241467428fd7192fbc07f4f588e50e7 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Tue, 19 Sep 2017 11:56:43 -0700 Subject: Create UTs for Extension Views This change add a Unit tests for EpaCaps and Extensions ApiView Classes. Change-Id: I8913b63260e4fc884d7c22f376f7a9380a67d999 Signed-off-by: Victor Morales Issue-Id: MULTICLOUD-83 --- newton/newton/extensions/tests/__init__.py | 0 newton/newton/extensions/tests/test_epacaps.py | 67 +++++++++++++++++++++++ newton/newton/extensions/tests/test_extensions.py | 45 +++++++++++++++ newton/newton/extensions/views/epacaps.py | 6 +- newton/newton/extensions/views/extensions.py | 2 +- 5 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 newton/newton/extensions/tests/__init__.py create mode 100644 newton/newton/extensions/tests/test_epacaps.py create mode 100644 newton/newton/extensions/tests/test_extensions.py (limited to 'newton') diff --git a/newton/newton/extensions/tests/__init__.py b/newton/newton/extensions/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/newton/newton/extensions/tests/test_epacaps.py b/newton/newton/extensions/tests/test_epacaps.py new file mode 100644 index 00000000..65125a43 --- /dev/null +++ b/newton/newton/extensions/tests/test_epacaps.py @@ -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 index 00000000..89ef0d11 --- /dev/null +++ b/newton/newton/extensions/tests/test_extensions.py @@ -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 diff --git a/newton/newton/extensions/views/epacaps.py b/newton/newton/extensions/views/epacaps.py index 54bd0ebe..e41d16c2 100644 --- a/newton/newton/extensions/views/epacaps.py +++ b/newton/newton/extensions/views/epacaps.py @@ -11,12 +11,11 @@ # 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: diff --git a/newton/newton/extensions/views/extensions.py b/newton/newton/extensions/views/extensions.py index a196edcc..c9f4df7b 100644 --- a/newton/newton/extensions/views/extensions.py +++ b/newton/newton/extensions/views/extensions.py @@ -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": "" } -- cgit 1.2.3-korg