Ocata UT for capacity check successfully 63/37363/1
authorYun Huang <yun.huang@windriver.com>
Wed, 21 Mar 2018 07:43:51 +0000 (15:43 +0800)
committerYun Huang <yun.huang@windriver.com>
Wed, 21 Mar 2018 07:45:45 +0000 (15:45 +0800)
Change-Id: I1a1720e073d6906cb0969e1765c0fd6a924b87f2
Issue-ID: MULTICLOUD-168
Signed-off-by: Yun Huang <yun.huang@windriver.com>
ocata/ocata/resource/tests/__init__.py [new file with mode: 0644]
ocata/ocata/resource/tests/test_capacity.py [new file with mode: 0644]

diff --git a/ocata/ocata/resource/tests/__init__.py b/ocata/ocata/resource/tests/__init__.py
new file mode 100644 (file)
index 0000000..afa702d
--- /dev/null
@@ -0,0 +1,14 @@
+# Copyright (c) 2017-2018 Wind River Systems, Inc.
+#
+# 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.
+
diff --git a/ocata/ocata/resource/tests/test_capacity.py b/ocata/ocata/resource/tests/test_capacity.py
new file mode 100644 (file)
index 0000000..605aed8
--- /dev/null
@@ -0,0 +1,92 @@
+# Copyright (c) 2017-2018 Wind River Systems, Inc.
+#
+# 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 mock
+
+from rest_framework import status
+
+from common.utils import restcall
+from newton_base.tests import mock_info
+from newton_base.tests import test_base
+from newton_base.util import VimDriverUtils
+
+MOCK_GET_TENANT_LIMIT_RESPONSE = {
+   "limits" : {
+      "rate" : [],
+      "absolute" : {
+         "maxTotalRAMSize" : 128*1024,
+         "totalRAMUsed" : 8*1024,
+         "totalCoresUsed" : 4,
+         "maxTotalCores" : 20,
+      }
+   }
+}
+
+MOCK_GET_HYPER_STATATICS_RESPONSE = {
+   "hypervisor_statistics" : {
+      "vcpus_used" : 4,
+      "free_ram_mb" : 120*1024,
+      "vcpus" : 10,
+      "free_disk_gb" : 300
+   }
+}
+
+MOCK_GET_STORAGE_RESPONSE = {
+   "limits" : {
+      "rate" : [],
+      "absolute" : {
+         "totalGigabytesUsed" : 200,
+         "maxTotalVolumeGigabytes" : 500,
+      }
+   }
+}
+
+TEST_REQ_SUCCESS_SOURCE = {
+    "vCPU": "4",
+    "Memory": "4096",
+    "Storage": "200"
+}
+
+class TestCapacity(test_base.TestRequest):
+    def setUp(self):
+        super(TestCapacity, self).setUp()
+
+    def _get_mock_response(self, return_value=None):
+        mock_response = mock.Mock(spec=test_base.MockResponse)
+        mock_response.status_code = status.HTTP_200_OK
+        mock_response.json.return_value = return_value
+        return mock_response
+
+    @mock.patch.object(VimDriverUtils, 'get_session')
+    @mock.patch.object(VimDriverUtils, 'get_vim_info')
+    def test_capacity_check_success(self, mock_get_vim_info, mock_get_session):
+        mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
+        mock_get_session.return_value = test_base.get_mock_session(
+            ["get"], {
+                "side_effect": [
+                    self._get_mock_response(MOCK_GET_TENANT_LIMIT_RESPONSE),
+                    self._get_mock_response(MOCK_GET_HYPER_STATATICS_RESPONSE),
+                    self._get_mock_response(MOCK_GET_STORAGE_RESPONSE),
+                ]
+            })
+
+        response = self.client.post((
+            "/api/%s/v0/windriver-hudson-dc_RegionOne/"
+            "capacity_check" % test_base.MULTIVIM_VERSION),
+            TEST_REQ_SUCCESS_SOURCE,
+            HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
+
+        self.assertEquals(status.HTTP_200_OK, response.status_code)
+        self.assertEqual({"result": True}, response.data)
+