def _nav_to_snapshot_mgmt(self): locator = ("//div[@class='dhtmlxInfoBarLabel' and contains(. , " + "'\"Snapshots\" for Virtual Machine \"{}\"') ]".format( self.name)) if not sel.is_displayed(locator): self.vm.load_details() sel.click(InfoBlock.element("Properties", "Snapshots"))
def step(self): try: sel.click( InfoBlock.element('Relationships', 'Middleware Server Group')) except NoSuchElementException: raise MiddlewareServerGroupNotFound( 'Server does not belong to Server Group')
def test_host_devices(provider): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name, provider=provider) assert int(host.get_detail("Properties", "Devices")) > 0
def test_host_memory(provider): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name, provider=provider) result = int(host.get_detail("Properties", "Memory").split()[0]) assert result > 0
def get_clusters(self): """returns the list of clusters belonging to the provider""" web_clusters = [] sel.force_navigate('infrastructure_provider', context={'provider': self}) sel.click(InfoBlock.element('Relationships', 'Clusters')) icons = Quadicon.all(qtype='cluster') for icon in icons: web_clusters.append(Cluster(icon.name, self)) return web_clusters
def test_host_role_type(provider): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: role_name = str(quad.name) role_name = re.search(r'\((\w+)\)', role_name).group(1) assert role_name in ROLES
def get_clusters(self): """returns the list of clusters belonging to the provider""" web_clusters = [] navigate_to(self, "Details") sel.click(InfoBlock.element("Relationships", "Clusters")) icons = Quadicon.all(qtype="cluster") for icon in icons: web_clusters.append(Cluster(icon.name, self)) return web_clusters
def test_smbios_data(provider): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name) result = get_integer_value(host.get_detail("Properties", "Memory")) assert result > 0
def test_templates(provider, soft_assert): navigate_to(provider, 'Details') images = [i.name for i in provider.mgmt.images] assert int(provider.get_detail('Relationships', 'Templates')) == len(images) sel.click(InfoBlock.element('Relationships', 'Templates')) table = Table("//table[contains(@class, 'table')]") for image in images: cell = table.find_cell('Name', image) soft_assert(cell, 'Missing template: {}'.format(image))
def test_host_zones_assigned(provider): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 my_quads = filter(lambda q: True if 'Compute' in q.name else False, my_quads) for quad in my_quads: host = Host(name=quad.name, provider=provider) result = host.get_detail('Relationships', 'Availability Zone') assert result, "Availability zone doesn't specified"
def test_host_cpu_resources(provider, soft_assert): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name, provider=provider) fields = ['Number of CPUs', 'Number of CPU Cores', 'CPU Cores Per Socket'] for field in fields: value = int(host.get_detail("Properties", field)) soft_assert(value > 0, "Aggregate Node {} is 0".format(field))
def test_smbios_data(provider): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name) host.run_smartstate_analysis() wait_for(lambda: is_host_analysis_finished(host.name), delay=15, timeout="10m", fail_func=lambda: toolbar.select('Reload')) result = get_integer_value(host.get_detail("Properties", "Memory")) assert result > 0
def test_host_role_type(provider): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 result = True while result: for quad in my_quads: role_name = str(quad.name) role_name = re.search(r'\((\w+)\)', role_name).group(1) if role_name not in ROLES: result = False assert result
def register(self, file_path): """Register new nodes (Openstack) Fill a form for new host with json file format This function is valid only for RHOS10 and above Args: file_path - file path of json file with new node details, navigation MUST be from a specific self """ navigate_to(self, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) tb.select('Configuration', 'Register Nodes') my_form = {'file': file_path} fill(register_nodes_form, my_form, action=register_nodes_form.register)
def test_images_rel(provider, rel, detailfield): """ https://bugzilla.redhat.com/show_bug.cgi?id=1365878 """ # Nav to provider first navigate_to(provider, 'Details') # Then to container images for that provider # Locate Relationships table in provider details images_key = ({ version.LOWEST: 'Images', '5.7': 'Container Images' }) sel.click(InfoBlock.element('Relationships', version.pick(images_key))) # Get the names of all the container images from the table list_tbl_image = CheckboxTable( table_locator="//div[@id='list_grid']//table") ui_images = [r.name.text for r in list_tbl_image.rows()] for name in ui_images: img = Image(name, provider) navigate_to(img, 'Details') val = img.get_detail('Relationships', rel) assert val != 'Unknown image source' sel.click(InfoBlock.element('Relationships', rel)) # Containers Provider and Image Registry are string values # Other rows in the table show the number of the given items if rel in ['Containers Provider', 'Image Registry']: assert val == InfoBlock.text('Properties', detailfield) else: val = int(val) # There might be more than 1 page of items if paginator.page_controls_exist(): paginator.results_per_page(1000) assert len([r for r in list_tbl_image.rows()]) == val
def test_host_assigned_zones(provider): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: if quad.name != NODE_TYPE: break host = Host(name=quad.name) host.run_smartstate_analysis() wait_for(lambda: is_host_analysis_finished(host.name), delay=15, timeout="10m", fail_func=lambda: toolbar.select('Reload')) result = host.get_detail('Relationships', 'Availability Zone') assert result == 'nova'
def test_host_configuration(provider, soft_assert): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name, provider=provider) host.run_smartstate_analysis() wait_for(is_host_analysis_finished, [host.name], delay=15, timeout="10m", fail_func=toolbar.refresh) fields = ['Packages', 'Services', 'Files'] for field in fields: value = int(host.get_detail("Configuration", field)) soft_assert(value > 0, 'Nodes number of {} is 0'.format(field))
def test_host_security(provider, soft_assert): navigate_to(provider, 'Details') sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name, provider=provider) soft_assert( int(host.get_detail("Security", "Users")) > 0, 'Nodes number of Users is 0') soft_assert( int(host.get_detail("Security", "Groups")) > 0, 'Nodes number of Groups is 0')
def test_nodes_rel(provider, rel): navigate_to(provider, 'Details') sel.click(InfoBlock.element('Relationships', 'Nodes')) list_tbl_node = CheckboxTable( table_locator="//div[@id='list_grid']//table") ui_nodes = [r.name.text for r in list_tbl_node.rows()] mgmt_objs = provider.mgmt.list_node() assert set(ui_nodes).issubset( [obj.name for obj in mgmt_objs]), 'Missing objects' for name in ui_nodes: node = Node(name, provider) val = node.get_detail('Relationships', rel) if val == '0': # the row can't be clicked when there are no items, and has class 'no-hover' logger.info('No items for node relationship: {}'.format(rel)) continue # Should already be here, but just in case navigate_to(node, 'Details') sel.click(InfoBlock.element('Relationships', rel)) try: val = int(val) # best effort to include all items from rel in one page if paginator.page_controls_exist(): logger.info('Setting results per page to 1000 for {}'.format(rel)) paginator.results_per_page(1000) else: logger.warning('Unable to increase results per page, ' 'assertion against number of rows may fail.') assert len([r for r in list_tbl_node.rows()]) == val except ValueError: # if the conversion to integer failed, its a non-scalar relationship assert val == InfoBlock.text('Properties', 'Name')
def test_host_cpu_resources(provider, soft_assert): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name) soft_assert(get_integer_value(host.get_detail("Properties", "Number of CPUs")) > 0, "Aggregate Node CPU resources is 0") soft_assert(get_integer_value( host.get_detail("Properties", "Number of CPU Cores")) > 0, "Aggregate node CPUs is 0") soft_assert(get_integer_value( host.get_detail("Properties", "CPU Cores Per Socket")) > 0, "Aggregate Node CPU Cores is 0")
def test_host_security(provider, soft_assert): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name) host.run_smartstate_analysis() wait_for(lambda: is_host_analysis_finished(host.name), delay=15, timeout="10m", fail_func=lambda: toolbar.select('Reload')) soft_assert( int(host.get_detail("Security", "Users")) > 0, 'Nodes number of Users is 0') soft_assert( int(host.get_detail("Security", "Groups")) > 0, 'Nodes number of Groups is 0')
def test_host_cpu_resources(provider, soft_assert): provider.load_details() sel.click(InfoBlock.element("Relationships", "Nodes")) my_quads = list(Quadicon.all()) assert len(my_quads) > 0 for quad in my_quads: host = Host(name=quad.name) host.run_smartstate_analysis() wait_for(lambda: is_host_analysis_finished(host.name), delay=15, timeout="10m", fail_func=lambda: toolbar.select('Reload')) soft_assert(get_integer_value(host.get_detail("Properties", "Number of CPUs")) > 0, "Aggregate Node CPU resources is 0") soft_assert(get_integer_value( host.get_detail("Properties", "Number of CPU Cores")) > 0, "Aggregate node CPUs is 0") soft_assert(get_integer_value( host.get_detail("Properties", "CPU Cores Per Socket")) > 0, "Aggregate Node CPU Cores is 0")
def step(self, *args, **kwargs): sel.click(InfoBlock.element('Relationships', 'Images'))
def step(self): sel.click(InfoBlock.element('Relationships', 'Middleware Deployments'))
def navigate(self): self.o.load_details() sel.click(InfoBlock.element("Relationships", "Genealogy"))
def _nav_to_snapshot_mgmt(self): snapshot_title = '"Snapshots" for Virtual Machine "{}"'.format( self.vm.name) if summary_title() != snapshot_title: self.vm.load_details() sel.click(InfoBlock.element("Properties", "Snapshots"))
def step(self): sel.click(InfoBlock.element('Relationships', 'Middleware Datasources'))
def step(self): sel.click( InfoBlock.element('Relationships', 'Middleware Server Groups'))
def step(self): sel.click(InfoBlock.element('Relationships', 'Middleware Server Groups'))
def nav_step(): test_vm.load_details() pytest.sel.click(InfoBlock.element('Relationships', 'Host')) toolbar.select('Monitoring', 'Timelines')
def step(self): sel.click(InfoBlock.element('Relationships', 'Middleware Messagings'))
def nav_step(): test_vm.load_details() pytest.sel.click(InfoBlock.element('Relationships', 'Cluster')) toolbar.select('Monitoring', 'Timelines')
def _nav_to_snapshot_mgmt(self): locator = ("//div[@class='dhtmlxInfoBarLabel' and contains(. , " + "'\"Snapshots\" for Virtual Machine \"{}\"') ]".format(self.name)) if not sel.is_displayed(locator): self.vm.load_details() sel.click(InfoBlock.element("Properties", "Snapshots"))
def _nav_to_snapshot_mgmt(self): snapshot_title = '"Snapshots" for Virtual Machine "{}"'.format(self.vm.name) if summary_title() != snapshot_title: self.vm.load_details() sel.click(InfoBlock.element("Properties", "Snapshots"))
def nav_step(): test_instance.load_details() pytest.sel.click(InfoBlock.element('Relationships', 'Availability Zone')) toolbar.select('Monitoring', 'Timelines')