Merge "pytest-based UI tests add vCPU pCPU test"
This commit is contained in:
commit
7b0bea46f9
97
openstack_dashboard/test/selenium/ui/test_hypervisors.py
Normal file
97
openstack_dashboard/test/selenium/ui/test_hypervisors.py
Normal file
@ -0,0 +1,97 @@
|
||||
# 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 unittest import mock
|
||||
|
||||
from openstack_dashboard import api
|
||||
|
||||
|
||||
def test_vcpu_pcpu_data_display(live_server, driver, user, dashboard_data):
|
||||
with mock.patch.object(api.nova, 'service_list') as mocked_s_l, \
|
||||
mock.patch.object(api.nova, 'hypervisor_list') as mocked_h_l, \
|
||||
mock.patch.object(api.nova, 'hypervisor_stats') as mocked_h_s, \
|
||||
mock.patch.object(api.placement, 'get_providers') as mocked_g_p:
|
||||
mocked_s_l.return_value = dashboard_data.services.list()
|
||||
mocked_h_l.return_value = dashboard_data.hypervisors.list()
|
||||
mocked_h_s.return_value = dashboard_data.hypervisors.stats
|
||||
|
||||
providers = [{}]
|
||||
for p in providers:
|
||||
inventories = {'VCPU': {'total': 16, 'reserved': 4,
|
||||
'allocation_ratio': 4.0},
|
||||
'PCPU': {'total': 4, 'reserved': 2,
|
||||
'allocation_ratio': 1.0}}
|
||||
usages = {'VCPU': 2, 'PCPU': 1}
|
||||
vcpus = inventories.get('VCPU')
|
||||
pcpus = inventories.get('PCPU')
|
||||
p['uuid'] = "test_provider"
|
||||
p['inventories'] = inventories
|
||||
p['usages'] = usages
|
||||
p['vcpus_used'] = usages.get('VCPU')
|
||||
p['vcpus_reserved'] = vcpus['reserved']
|
||||
p['vcpus'] = vcpus['total']
|
||||
p['vcpus_ar'] = vcpus['allocation_ratio']
|
||||
p['vcpus_capacity'] = int(vcpus['allocation_ratio'] *
|
||||
vcpus['total'])
|
||||
p['pcpus_used'] = usages.get('PCPU')
|
||||
p['pcpus_reserved'] = pcpus['reserved']
|
||||
p['pcpus'] = pcpus['total']
|
||||
p['pcpus_ar'] = pcpus['allocation_ratio']
|
||||
p['pcpus_capacity'] = int(pcpus['allocation_ratio'] *
|
||||
pcpus['total'])
|
||||
mocked_g_p.return_value = providers
|
||||
|
||||
driver.get(live_server.url + '/admin/hypervisors')
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='VCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]"
|
||||
f"/div[contains(@class,'h6')]/"
|
||||
f"span[1]").text == str(p['vcpus_used']))
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='VCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]"
|
||||
f"/div[contains(@class,'h6')]/"
|
||||
f"span[2]").text == str(p['vcpus_capacity']))
|
||||
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='PCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]"
|
||||
f"/div[contains(@class,'h6')]/"
|
||||
f"span[1]").text == str(p['pcpus_used']))
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='PCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]"
|
||||
f"/div[contains(@class,'h6')]/"
|
||||
f"span[2]").text == str(p['pcpus_capacity']))
|
||||
|
||||
driver.find_element_by_link_text("Resource Provider").click()
|
||||
resource_provider_tab = driver.find_element_by_id(
|
||||
"hypervisor_info__provider")
|
||||
table_header = resource_provider_tab.find_elements_by_css_selector(
|
||||
".table_column_header th")
|
||||
table_row_test_provider = (
|
||||
resource_provider_tab.find_elements_by_css_selector(
|
||||
"#providers__row__test_provider td"))
|
||||
table_providers = dict(zip((x.text for x in table_header),
|
||||
(x.text for x in table_row_test_provider)))
|
||||
|
||||
want_to_check = {"VCPUs used": p['vcpus_used'],
|
||||
"VCPUs reserved": p['vcpus_reserved'],
|
||||
"VCPUs total": p['vcpus'],
|
||||
"VCPUs allocation ratio": p['vcpus_ar'],
|
||||
"PCPUs used": p['pcpus_used'],
|
||||
"PCPUs reserved": p['pcpus_reserved'],
|
||||
"PCPUs total": p['pcpus'],
|
||||
"PCPUs allocation ratio": p['pcpus_ar']}
|
||||
|
||||
for key, value in want_to_check.items():
|
||||
assert table_providers[key] == str(value)
|
Loading…
x
Reference in New Issue
Block a user