summaryrefslogtreecommitdiffstats
path: root/hpa/tests
diff options
context:
space:
mode:
authorHaibin Huang <haibin.huang@intel.com>2019-11-12 17:20:03 +0800
committerHaibin Huang <haibin.huang@intel.com>2020-01-20 16:31:46 +0800
commit5f8e9379af90e81ad4a4d27b8cf6afb6edb40569 (patch)
tree17061ffe8fee62f458aee7defbb5faf3b3cccbee /hpa/tests
parent860d099f352eb762f1f181f189867ed2c3f322a9 (diff)
Make hpa discovery as plugin
Issue-ID: MULTICLOUD-695 Change-Id: I04547cfe664dfed457a228c04dfdf71c96b0ded0 Signed-off-by: Haibin Huang <haibin.huang@intel.com>
Diffstat (limited to 'hpa/tests')
-rw-r--r--hpa/tests/__init__.py1
-rw-r--r--hpa/tests/test.py148
-rw-r--r--hpa/tests/test_hpa_discovery.py105
3 files changed, 254 insertions, 0 deletions
diff --git a/hpa/tests/__init__.py b/hpa/tests/__init__.py
new file mode 100644
index 00000000..792d6005
--- /dev/null
+++ b/hpa/tests/__init__.py
@@ -0,0 +1 @@
+#
diff --git a/hpa/tests/test.py b/hpa/tests/test.py
new file mode 100644
index 00000000..a9fdcd77
--- /dev/null
+++ b/hpa/tests/test.py
@@ -0,0 +1,148 @@
+from __future__ import print_function
+
+import argparse
+
+from stevedore import extension
+
+
+if __name__ == '__main__':
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-f', action='store', dest='dpdk', help='dpdk use?')
+ parser.add_argument('-t', action='store', dest='vimtype', help='vim type')
+ parser.add_argument('--version', action='version', version='%(prog)s 1.0')
+ results = parser.parse_args()
+ dpdk = results.dpdk
+ vimtype = results.vimtype
+
+ flavor = {
+ "vcpus": 2,
+ "ram": "2048",
+ "disk": "2G",
+ "swap": False,
+ "OS-FLV-EXT-DATA:ephemeral": False
+ }
+
+ # viminfo
+ viminfo = {
+ "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',
+ 'insecure': 'True'
+ }
+
+ # Add cloud_extra_info in convert_vim_info
+ viminfo_with_dpdk = {
+ "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',
+ 'insecure': 'True',
+ 'cloud_extra_info': '{ \
+ "ovsDpdk": { \
+ "version": "v1", \
+ "arch": "Intel64", \
+ "libname": "dataProcessingAccelerationLibrary", \
+ "libversion": "v12.1" \
+ } \
+ }'
+ }
+
+ # flavor extra specs
+ extra_specs = [
+ # HPA UT1: CPU-Pinning
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:cpu_policy": "dedicated",
+ "hw:cpu_thread_policy": "prefer"
+ },
+ # HPA UT2: CPU-Topology
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:cpu_sockets": "2",
+ "hw:cpu_cores": "4",
+ "hw:cpu_threads": "16"
+ },
+ # HPA UT3: mem_page_size
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:mem_page_size": "large"
+ },
+ # HPA UT4: numa_nodes
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:numa_nodes": "2",
+ "hw:numa_cpus.0": "0,1",
+ "hw:numa_cpus.1": "2,3,4,5",
+ "hw:numa_mem.0": "2048",
+ "hw:numa_mem.1": "2048"
+ },
+ # HPA UT5: instruction set
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:capabilities:cpu_info:features": "avx,acpi"
+ },
+ # HPA UT6: pci passthrough
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "pci_passthrough:alias": "sriov-vf-intel-8086-15b3:4"
+ },
+ # HPA UT7: sriov-nic
+ {
+ "aggregate_instance_extra_specs:sriov_nic": "sriov-nic-intel-8086-15b3-physnet-1:1",
+ "capabilities:cpu_info:model": "Haswell"
+ }
+ ]
+
+
+ def get_hpa_capabilities(ext, data):
+ return (ext.obj.get_hpa_capabilities(data))
+
+ extra_specs = [
+ # HPA UT1: CPU-Pinning
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:cpu_policy": "dedicated",
+ "hw:cpu_thread_policy": "prefer"
+ },
+ ]
+ if dpdk != "dpdk":
+ viminfo = viminfo
+ else:
+ viminfo = viminfo_with_dpdk
+
+ for extra_spec in extra_specs:
+ data = {"flavor": flavor, "extra_specs": extra_spec, "viminfo": viminfo, "vimtype": vimtype}
+ mgr = extension.ExtensionManager(
+ namespace='hpa.discovery',
+ invoke_on_load=True,
+ )
+
+ results = mgr.map(get_hpa_capabilities, data)
+ print(results)
diff --git a/hpa/tests/test_hpa_discovery.py b/hpa/tests/test_hpa_discovery.py
new file mode 100644
index 00000000..c63f377f
--- /dev/null
+++ b/hpa/tests/test_hpa_discovery.py
@@ -0,0 +1,105 @@
+import unittest
+
+from hpa import hpa_discovery
+
+class TestDiscovery(unittest.TestCase):
+ def test_hpa_discovery(self):
+ """
+ Test that it can discovery hpa capability
+ """
+
+ flavor = {
+ "vcpus": 2,
+ "ram": "2048",
+ "disk": "2G",
+ "swap": False,
+ "OS-FLV-EXT-DATA:ephemeral": False
+ }
+
+ # Add cloud_extra_info in convert_vim_info
+ viminfo = {
+ "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',
+ 'insecure': 'True',
+ 'cloud_extra_info': '{ \
+ "ovsDpdk": { \
+ "version": "v1", \
+ "arch": "Intel64", \
+ "libname": "dataProcessingAccelerationLibrary", \
+ "libversion": "v12.1" \
+ } \
+ }'
+ }
+
+ # flavor extra specs
+ extra_specs = [
+ # HPA UT1: CPU-Pinning
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:cpu_policy": "dedicated",
+ "hw:cpu_thread_policy": "prefer"
+ },
+ # HPA UT2: CPU-Topology
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:cpu_sockets": "2",
+ "hw:cpu_cores": "4",
+ "hw:cpu_threads": "16"
+ },
+ # HPA UT3: mem_page_size
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:mem_page_size": "large"
+ },
+ # HPA UT4: numa_nodes
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:numa_nodes": "2",
+ "hw:numa_cpus.0": "0,1",
+ "hw:numa_cpus.1": "2,3,4,5",
+ "hw:numa_mem.0": "2048",
+ "hw:numa_mem.1": "2048"
+ },
+ # HPA UT5: instruction set
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "hw:capabilities:cpu_info:features": "avx,acpi"
+ },
+ # HPA UT6: pci passthrough
+ {
+ "aggregate_instance_extra_specs:storage": "local_image",
+ "capabilities:cpu_info:model": "Haswell",
+ "pci_passthrough:alias": "sriov-vf-intel-8086-15b3:4"
+ },
+ # HPA UT7: sriov-nic
+ {
+ "aggregate_instance_extra_specs:sriov_nic": "sriov-nic-intel-8086-15b3-physnet-1:1",
+ "capabilities:cpu_info:model": "Haswell"
+ }
+ ]
+
+ vimtype = "windriver"
+ hpa = hpa_discovery.HPA_Discovery()
+ for extra_spec in extra_specs:
+ data = {"flavor": flavor, "extra_specs": extra_spec, "viminfo": viminfo, "vimtype": vimtype}
+ results = hpa.get_hpa_capabilities(data)
+
+if __name__ == '__main__':
+ unittest.main()
+