summaryrefslogtreecommitdiffstats
path: root/newton/newton/registration/tests/test_registration.py
diff options
context:
space:
mode:
Diffstat (limited to 'newton/newton/registration/tests/test_registration.py')
-rw-r--r--newton/newton/registration/tests/test_registration.py169
1 files changed, 161 insertions, 8 deletions
diff --git a/newton/newton/registration/tests/test_registration.py b/newton/newton/registration/tests/test_registration.py
index 78d75341..0e9be29f 100644
--- a/newton/newton/registration/tests/test_registration.py
+++ b/newton/newton/registration/tests/test_registration.py
@@ -14,9 +14,11 @@
import mock
+from django.conf import settings
from rest_framework import status
from common.utils import restcall
+from newton_base.openoapi.flavor import Flavors
from newton_base.tests import mock_info
from newton_base.tests import test_base
from newton_base.util import VimDriverUtils
@@ -45,6 +47,149 @@ MOCK_GET_FLAVOR_RESPONSE = {
]
}
+MOCK_GET_EXTRA_SPECS_RESPONSE = {
+ "extra_specs": {
+ "hw:cpu_sockets": 4,
+ "hw:cpu_cores": 4,
+ "hw:cpu_policy": "dedicated",
+ "hw:numa_nodes": 3,
+ "hw:numa_cpus.1": [0, 1],
+ "hw:numa_mem.1": 2,
+ "pci_passthrough:alias": "mycrypto-8086-0443:4",
+ "hw:mem_page_size": "1GB"
+ }
+}
+
+MOCK_HPA_RESPONSE = """{
+ "basicCapabilities": {
+ "info": {
+ "hpa-feature": "basicCapabilities",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "vcpus": {
+ "key": "numVirtualCpu",
+ "unit": null
+ },
+ "ram": {
+ "key": "virtualMemSize",
+ "unit": "GB"
+ }
+ }
+ },
+ "localStorage": {
+ "info": {
+ "hpa-feature": "localStorage",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "disk": {
+ "key": "diskSize",
+ "unit": "GB"
+ },
+ "swap": {
+ "key": "swapMemSize",
+ "unit": "MB"
+ }
+ }
+ },
+ "cpuTopology": {
+ "info": {
+ "hpa-feature": "cpuTopology",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "hw:cpu_sockets": {
+ "key": "numCpuSockets",
+ "unit": null
+ },
+ "hw:cpu_cores": {
+ "key": "numCpuCores",
+ "unit": null
+ },
+ "hw:cpu_threads": {
+ "key": "numCpuThreads",
+ "unit": null
+ }
+ }
+ },
+ "cpuPinning": {
+ "info": {
+ "hpa-feature": "cpuPinning",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "hw:cpu_thread_policy": {
+ "key": "logicalCpuThreadPinningPolicy",
+ "unit": null
+ },
+ "hw:cpu_policy": {
+ "key": "logicalCpuPinningPolicy",
+ "unit": null
+ }
+ }
+ },
+ "numa": {
+ "info": {
+ "hpa-feature": "numa",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "hw:numa_nodes": {
+ "key": "numaNodes",
+ "unit": null
+ },
+ "hw:numa_cpus": {
+ "key": "numaCpu",
+ "unit": null
+ },
+ "hw:numa_mem": {
+ "key": "numaMem",
+ "unit": "GB"
+ }
+ }
+ },
+ "hugePages": {
+ "info": {
+ "hpa-feature": "hugePages",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "hw:mem_page_size": {
+ "key": "memoryPageSize",
+ "unit": null
+ }
+ }
+ },
+ "pciePassthrough": {
+ "info": {
+ "hpa-feature": "pciePassthrough",
+ "hpa-version": "v1",
+ "architecture": "generic"
+ },
+ "hpa-attributes": {
+ "pci_count": {
+ "key": "pciCount",
+ "unit": null
+ },
+ "pci_vendor_id": {
+ "key": "pciVendorId",
+ "unit": null
+ },
+ "pci_device_id": {
+ "key": "pciDeviceId",
+ "unit": null
+ }
+ }
+ }
+}"""
+
MOCK_GET_IMAGE_RESPONSE = {
"images": [
{
@@ -135,10 +280,13 @@ class TestFlavors(test_base.TestRequest):
mock_response.json.return_value = return_value
return mock_response
+ @mock.patch.object(Flavors, '_get_flavor_extra_specs')
@mock.patch.object(VimDriverUtils, 'get_session')
@mock.patch.object(VimDriverUtils, 'get_vim_info')
def test_register_endpoint_successfully(
- self, mock_get_vim_info, mock_get_session):
+ self, mock_get_vim_info, mock_get_session,
+ mock_get_extra_specs):
+ settings.AAI_SCHEMA_VERSION = "v13"
restcall.req_to_aai = mock.Mock()
restcall.req_to_aai.return_value = (0, {}, status.HTTP_200_OK)
mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO
@@ -157,15 +305,20 @@ class TestFlavors(test_base.TestRequest):
MOCK_GET_HYPERVISOR_RESPONSE)
]
})
+ mock_extra_specs_response = mock.Mock(spec=test_base.MockResponse)
+ mock_extra_specs_response.status_code = status.HTTP_200_OK
+ mock_extra_specs_response.json.return_value = MOCK_GET_EXTRA_SPECS_RESPONSE
+ mock_get_extra_specs.return_value = mock_extra_specs_response
- response = self.client.post((
- "/api/%s/v0/windriver-hudson-dc_RegionOne/"
- "registry" % test_base.MULTIVIM_VERSION),
- TEST_REGISTER_ENDPOINT_REQUEST,
- HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
+ with mock.patch('__builtin__.open', mock.mock_open(read_data=MOCK_HPA_RESPONSE)) as mock_file:
+ response = self.client.post((
+ "/api/%s/v0/windriver-hudson-dc_RegionOne/"
+ "registry" % test_base.MULTIVIM_VERSION),
+ TEST_REGISTER_ENDPOINT_REQUEST,
+ HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID)
- self.assertEquals(status.HTTP_202_ACCEPTED,
- response.status_code)
+ self.assertEquals(status.HTTP_202_ACCEPTED,
+ response.status_code)
@mock.patch.object(VimDriverUtils, 'delete_vim_info')
def test_unregister_endpoint_successfully(