From a5c49294962bf324c42a2984275707c7e8466431 Mon Sep 17 00:00:00 2001 From: Prachi Yadav Date: Mon, 16 Oct 2017 19:39:55 +0530 Subject: [PATCH 1/2] crosslink test created --- tests/test_openshift_provider.py | 16 +++++- views/eap_crosslink.py | 35 +++++++++++++ views/mm_openshift_provider.py | 86 ++++++++++++-------------------- views/topology_crosslink.py | 33 ++++++++++++ 4 files changed, 115 insertions(+), 55 deletions(-) create mode 100644 views/eap_crosslink.py create mode 100644 views/topology_crosslink.py diff --git a/tests/test_openshift_provider.py b/tests/test_openshift_provider.py index 023d655..8c79792 100644 --- a/tests/test_openshift_provider.py +++ b/tests/test_openshift_provider.py @@ -1,11 +1,16 @@ import pytest from common.session import session from views.mm_openshift_provider import mm_openshift_providers +from views.eap_crosslink import eap_crosslink +from views.topology_crosslink import topology_crosslink +from views.providers import providers +from views.eap_crosslink import eap_crosslink + @pytest.fixture (scope='session') def web_session(request): - web_session = session(add_provider=False) + web_session = session(add_provider=True) return web_session @@ -13,3 +18,12 @@ def web_session(request): def test_cfui_add_provider(web_session): provs = mm_openshift_providers(web_session) provs.add_mm_openshift_provider() + +def test_cfui_eap_crosslink(web_session): + provs = eap_crosslink(web_session) + provs.crosslink_eap() + +def test_cfui_topology_crosslink(web_session): + provs= topology_crosslink(web_session) + provs.crosslink_topology() + diff --git a/views/eap_crosslink.py b/views/eap_crosslink.py new file mode 100644 index 0000000..745de17 --- /dev/null +++ b/views/eap_crosslink.py @@ -0,0 +1,35 @@ +from common.ui_utils import ui_utils +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from hawkular.hawkular_api import hawkular_api +from common.view import view +from common.db import db +from common.openshift_utils import openshift_utils +import time +from common.timeout import timeout + +class eap_crosslink(): + web_session = None + MIQ_BASE_VERSION = "master" + ui_utils = None + + def __init__(self, web_session): + self.web_session = web_session + self.web_driver = web_session.web_driver + self.hawkular_api = hawkular_api(self.web_session) + + def crosslink_eap(self): + self.web_session.web_driver.get("{}/middleware_server/show_list".format(self.web_session.MIQ_URL)) + ui_utils(self.web_session).sleep(10) + assert ui_utils(self.web_session).waitForTextOnPage("Middleware Servers", 40) + self.web_driver.find_element_by_xpath("//span[contains(.,'Local')]").click() + assert ui_utils(self.web_session).waitForTextOnPage("Local (Summary)", 15) + self.web_driver.find_element_by_xpath("//td[contains(.,'Underlying Container')]").click() + assert ui_utils(self.web_session).waitForTextOnPage("hawkular-services (Summary)", 15) + self.web_driver.find_element_by_xpath("//td[contains(.,'Containers Provider')]").click() + assert ui_utils(self.web_session).waitForTextOnPage("Aggregated Node Utilization", 15) + + return True + + diff --git a/views/mm_openshift_provider.py b/views/mm_openshift_provider.py index 9bf326f..4e574bd 100644 --- a/views/mm_openshift_provider.py +++ b/views/mm_openshift_provider.py @@ -8,7 +8,6 @@ from common.openshift_utils import openshift_utils import time from common.timeout import timeout -from common.navigate import navigate class mm_openshift_providers(): web_session = None @@ -31,27 +30,27 @@ def add_mm_openshift_provider(self, delete_if_provider_present=True, port=None, # Check if any provider already exist. If exist, first delete all the providers and then add a provider. - if db(self.web_session).is_container_provider_present(self.web_session.OPENSHIFT_PROVIDER_NAME): - self.web_session.logger.info("Container Provider already exist.") + if self.does_provider_exist(): + self.web_session.logger.info("Openshift Provider already exist.") return else: - self.web_session.logger.info("Adding openshift Middleware Provider to ManageIQ instance") + self.web_session.logger.info("Adding openshift Provider to ManageIQ instance") - navigate(self.web_session).get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) - assert ui_utils(self.web_session).waitForTextOnPage("Containers Providers", 15) + self.web_session.web_driver.get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) + assert ui_utils(self.web_session).waitForTextOnPage("Containers Providers", 15) - self.web_driver.find_element_by_xpath("//button[@title='Configuration']").click() - self.ui_utils.waitForElementOnPage(By.XPATH,"//a[@title='Add a new Containers Provider']", 5) - elem_add_new_provider = self.web_driver.find_element_by_xpath("//a[@title='Add a new Containers Provider']") - elem_add_new_provider.click() - self.web_driver.implicitly_wait(15) - assert ui_utils(self.web_session).waitForTextOnPage("Add New Containers Provider", 50) - ui_utils(self.web_session).sleep(2) + self.web_driver.find_element_by_xpath("//button[@title='Configuration']").click() + self.ui_utils.waitForElementOnPage(By.XPATH,"//a[@title='Add a new Containers Provider']", 5) + elem_add_new_provider = self.web_driver.find_element_by_xpath("//a[@title='Add a new Containers Provider']") + elem_add_new_provider.click() + self.web_driver.implicitly_wait(15) + assert ui_utils(self.web_session).waitForTextOnPage("Add New Containers Provider", 50) + ui_utils(self.web_session).sleep(2) - self.web_session.logger.info("The appliance version in use is: {} ".format(self.web_session.appliance_version)) + self.web_session.logger.info("The appliance version in use is: {} ".format(self.web_session.appliance_version)) - self.submit_provider_form_cfme(validate_provider) - self.verify_add_provider_success() + self.submit_provider_form_cfme(validate_provider) + self.verify_add_provider_success() def submit_provider_form_cfme(self, validate_provider=True): @@ -77,50 +76,28 @@ def submit_provider_form_cfme(self, validate_provider=True): self.save_provider() - def verify_refresh_status_success(self): - refresh_value_success = "Success" - - self.refresh_provider() - - # Refresh the page till till the table value for Last Refresh shows the value - Success + def does_provider_exist(self): + self.web_session.logger.info("Checking if provider exists") - assert self.wait_for_provider_refresh_status(refresh_value_success, 600) - provider_details = ui_utils(self.web_session).get_generic_table_as_dict() - - # Verify if the 'Last Refresh' value from table contains 'Success: - refresh_status = provider_details.get("Last Refresh") - - if str(refresh_status).__contains__(refresh_value_success): - self.web_session.logger.info("The Last refresh status is - " + refresh_status) - return True + # For performance reasons, check if the provider is present via DB + if db(self.web_session).is_container_provider_present(self.provider_name): + self.web_session.logger.info("Container Provider already exist.") + return else: - return False - - - def refresh_provider(self): - self.web_driver.find_element_by_xpath("//button[@title='Configuration']").click() - el = self.web_driver.find_element_by_xpath("//a[@id='ems_container_vmdb_choice__ems_container_refresh']") - assert self.ui_utils.wait_until_element_displayed(el, 5) - el.click() - ui_utils(self.web_session).accept_alert(10) - ui_utils(self.web_session).waitForTextOnPage("Refresh Provider initiated", 15) - - def validate_providers_list(self): + self.web_session.logger.info("Adding Container Provider to ManageIQ instance") - # Test to validate provider list page in UI and validate matching providers hostname, port number + def delete_provider(self, delete_all_providers=True): - self.web_session.logger.info("Begin providers list test.") - navigate(self.web_session).get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) - providers_ui = self.ui_utils.get_list_table() - assert len(providers_ui) > 0, "Providers list is empty." + self.web_session.web_driver.get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) + assert ui_utils(self.web_session).waitForTextOnPage("Containers Providers", 30) + # self.ui_utils.sleep(15) - for prov_ui in providers_ui: - - if prov_ui.get('Name') == self.web_session.OPENSHIFT_PROVIDER_NAME: - assert (prov_ui.get('Hostname') == self.web_session.OPENSHIFT_HOSTNAME), "Hostname mismatch" - assert (prov_ui.get('Port') == self.web_session.OPENSHIFT_PORT), "Port Number mismatch" + # Delete the provider + if delete_all_providers: + self.clear_all_providers() + else: + self.delete_hawkular_provider() - return True def verify_add_provider_success(self): @@ -163,3 +140,4 @@ def save_provider(self): time.sleep(1) + diff --git a/views/topology_crosslink.py b/views/topology_crosslink.py new file mode 100644 index 0000000..1e4ef26 --- /dev/null +++ b/views/topology_crosslink.py @@ -0,0 +1,33 @@ +from common.ui_utils import ui_utils +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from hawkular.hawkular_api import hawkular_api +from common.view import view +from common.db import db +from common.openshift_utils import openshift_utils +import time +from common.timeout import timeout +from views.topology import topology + +class topology_crosslink(): + web_session = None + MIQ_BASE_VERSION = "master" + ui_utils = None + + def __init__(self, web_session): + self.web_session = web_session + self.web_driver = web_session.web_driver + self.hawkular_api = hawkular_api(self.web_session) + + def crosslink_topology(self): + self.web_session.web_driver.get("{}/middleware_topology/show".format(self.web_session.MIQ_URL)) + ui_utils(self.web_session).sleep(10) + assert ui_utils(self.web_session).waitForTextOnPage("Servers", 40) + self.web_driver.find_element_by_xpath(".//*[@title='Name: hawkular-services Type: Container Status: Unknown").click().click() + #assert ui_utils(self.web_session).waitForTextOnPage("hawkular-services (Summary)", 15) + #top=topology() + #top.validate_middleware_container_entities() + #assert ui_utils(self.web_session).waitForTextOnPage("Aggregated Node Utilization", 15) + + return True From bf1386a54ba425d15cd5cf262142d701b5fbcf99 Mon Sep 17 00:00:00 2001 From: Sunil Kondkar Date: Wed, 13 Dec 2017 21:16:27 +0530 Subject: [PATCH 2/2] refactoring on opneshift provider tests. --- tests/test_openshift_provider.py | 19 ++----- views/eap_crosslink.py | 35 ------------ views/mm_openshift_provider.py | 97 ++++++++++++++++++++++---------- views/topology_crosslink.py | 33 ----------- 4 files changed, 72 insertions(+), 112 deletions(-) delete mode 100644 views/eap_crosslink.py delete mode 100644 views/topology_crosslink.py diff --git a/tests/test_openshift_provider.py b/tests/test_openshift_provider.py index 8c79792..101670b 100644 --- a/tests/test_openshift_provider.py +++ b/tests/test_openshift_provider.py @@ -1,29 +1,22 @@ import pytest from common.session import session from views.mm_openshift_provider import mm_openshift_providers -from views.eap_crosslink import eap_crosslink -from views.topology_crosslink import topology_crosslink -from views.providers import providers -from views.eap_crosslink import eap_crosslink - @pytest.fixture (scope='session') def web_session(request): web_session = session(add_provider=True) - - return web_session def test_cfui_add_provider(web_session): provs = mm_openshift_providers(web_session) provs.add_mm_openshift_provider() -def test_cfui_eap_crosslink(web_session): - provs = eap_crosslink(web_session) - provs.crosslink_eap() +def test_cfui_hawkular_Services_crosslink(web_session): + provs = mm_openshift_providers(web_session) + provs.verify_hawkular_Services_crosslink() -def test_cfui_topology_crosslink(web_session): - provs= topology_crosslink(web_session) - provs.crosslink_topology() +def test_cfui_hawkular_Services_topology_crosslink(web_session): + provs= mm_openshift_providers(web_session) + provs.verify_topology_crosslink_to_hawkular_services_container() diff --git a/views/eap_crosslink.py b/views/eap_crosslink.py deleted file mode 100644 index 745de17..0000000 --- a/views/eap_crosslink.py +++ /dev/null @@ -1,35 +0,0 @@ -from common.ui_utils import ui_utils -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.by import By -from selenium.webdriver.support import expected_conditions as EC -from hawkular.hawkular_api import hawkular_api -from common.view import view -from common.db import db -from common.openshift_utils import openshift_utils -import time -from common.timeout import timeout - -class eap_crosslink(): - web_session = None - MIQ_BASE_VERSION = "master" - ui_utils = None - - def __init__(self, web_session): - self.web_session = web_session - self.web_driver = web_session.web_driver - self.hawkular_api = hawkular_api(self.web_session) - - def crosslink_eap(self): - self.web_session.web_driver.get("{}/middleware_server/show_list".format(self.web_session.MIQ_URL)) - ui_utils(self.web_session).sleep(10) - assert ui_utils(self.web_session).waitForTextOnPage("Middleware Servers", 40) - self.web_driver.find_element_by_xpath("//span[contains(.,'Local')]").click() - assert ui_utils(self.web_session).waitForTextOnPage("Local (Summary)", 15) - self.web_driver.find_element_by_xpath("//td[contains(.,'Underlying Container')]").click() - assert ui_utils(self.web_session).waitForTextOnPage("hawkular-services (Summary)", 15) - self.web_driver.find_element_by_xpath("//td[contains(.,'Containers Provider')]").click() - assert ui_utils(self.web_session).waitForTextOnPage("Aggregated Node Utilization", 15) - - return True - - diff --git a/views/mm_openshift_provider.py b/views/mm_openshift_provider.py index 4e574bd..77b9171 100644 --- a/views/mm_openshift_provider.py +++ b/views/mm_openshift_provider.py @@ -8,10 +8,13 @@ from common.openshift_utils import openshift_utils import time from common.timeout import timeout +from views.servers import servers + class mm_openshift_providers(): web_session = None MIQ_BASE_VERSION = "master" + openshift_container_name = "hawkular-services" ui_utils = None def __init__(self, web_session): @@ -20,7 +23,7 @@ def __init__(self, web_session): self.ui_utils = ui_utils(self.web_session) self.openshift_utils= openshift_utils(self.web_session) - def add_mm_openshift_provider(self, delete_if_provider_present=True, port=None, validate_provider=True): + def add_mm_openshift_provider(self, port=None, validate_provider=True): self.provider_name = self.web_session.OPENSHIFT_PROVIDER_NAME self.host_name = self.web_session.OPENSHIFT_HOSTNAME self.port = self.web_session.OPENSHIFT_PORT if port == None else port @@ -28,7 +31,7 @@ def add_mm_openshift_provider(self, delete_if_provider_present=True, port=None, self.openshift_token= self.openshift_utils.get_token() ui_utils(self.web_session).sleep(2) - # Check if any provider already exist. If exist, first delete all the providers and then add a provider. + # Check if any provider already exist. if self.does_provider_exist(): self.web_session.logger.info("Openshift Provider already exist.") @@ -54,7 +57,8 @@ def add_mm_openshift_provider(self, delete_if_provider_present=True, port=None, def submit_provider_form_cfme(self, validate_provider=True): - # Enter the form details and submit if the appliance version is CFME Downstream + + # Enter the form details and submit self.web_driver.find_element_by_xpath("//input[@id='ems_name']").send_keys(self.provider_name) self.web_driver.find_element_by_xpath("//button[contains(.,'')]").click() @@ -62,59 +66,49 @@ def submit_provider_form_cfme(self, validate_provider=True): self.web_driver.find_element_by_xpath("//a[contains(.,'OpenShift')]").click() self.web_driver.find_element_by_xpath("//input[@id='default_hostname']").send_keys(self.host_name) - # self.web_driver.find_element_by_xpath("//input[@id='default_api_port']").send_keys(self.port) - self.web_driver.find_element_by_xpath("//button[@data-id='default_security_protocol']").click() assert ui_utils(self.web_session).waitForTextOnPage("SSL without validation", 15) self.web_driver.find_element_by_xpath("//a[contains(.,'SSL without validation')]").click() self.web_driver.find_element_by_xpath("//input[@id='default_password']").send_keys(self.openshift_token) - if validate_provider: self.validate_provider() self.save_provider() - def does_provider_exist(self): self.web_session.logger.info("Checking if provider exists") # For performance reasons, check if the provider is present via DB + if db(self.web_session).is_container_provider_present(self.provider_name): self.web_session.logger.info("Container Provider already exist.") - return - else: - self.web_session.logger.info("Adding Container Provider to ManageIQ instance") - - def delete_provider(self, delete_all_providers=True): - - self.web_session.web_driver.get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) - assert ui_utils(self.web_session).waitForTextOnPage("Containers Providers", 30) - # self.ui_utils.sleep(15) + #if openshift provider exists, refresh Middleware provider + servers(self.web_session).navigate_and_refresh_provider() + return True - # Delete the provider - if delete_all_providers: - self.clear_all_providers() else: - self.delete_hawkular_provider() - + self.web_session.logger.info("Adding Container Provider to ManageIQ instance") + return False def verify_add_provider_success(self): - assert ui_utils(self.web_session).waitForTextOnPage( - 'Containers Providers "{}" was saved'.format(self.provider_name), 90) + assert ui_utils(self.web_session).waitForTextOnPage( + 'Containers Providers "{}" was saved'.format(self.provider_name), 90) - if ui_utils(self.web_session).isElementPresent(By.XPATH, "//a[contains(@title,'Name: {}')]".format( - self.provider_name)): - self.web_session.logger.info("Container Provider added successfully.") + if ui_utils(self.web_session).isElementPresent(By.XPATH, "//a[contains(@title,'Name: {}')]".format( + self.provider_name)): + self.web_session.logger.info("Container Provider added successfully.") - # Navigate to the provider details page and check if the last refresh status is - Success. + # Navigate to the openshift provider details page refresh relationships. - view(self.web_session).list_View() - assert ui_utils(self.web_session).waitForTextOnPage(self.web_session.OPENSHIFT_PROVIDER_NAME, 30) - ui_utils(self.web_session).click_on_row_containing_text(self.web_session.OPENSHIFT_PROVIDER_NAME) + view(self.web_session).list_View() + assert ui_utils(self.web_session).waitForTextOnPage(self.web_session.OPENSHIFT_PROVIDER_NAME, 30) + ui_utils(self.web_session).click_on_row_containing_text(self.web_session.OPENSHIFT_PROVIDER_NAME) + self.refresh_openshift_provider() - assert ui_utils(self.web_session).waitForTextOnPage("Status", 30) + # Refresh Middleware provider + servers(self.web_session).navigate_and_refresh_provider() def validate_provider(self): validate = WebDriverWait(self.web_driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(.,'Validate')]"))) @@ -140,4 +134,45 @@ def save_provider(self): time.sleep(1) + def refresh_openshift_provider(self): + self.web_driver.find_element_by_xpath("//button[@title='Configuration']").click() + el = self.web_driver.find_element_by_id('ems_container_vmdb_choice__ems_container_refresh') + assert self.ui_utils.wait_until_element_displayed(el, 5) + el.click() + ui_utils(self.web_session).accept_alert(10) + ui_utils(self.web_session).waitForTextOnPage("Refresh Provider initiated", 15) + self.verify_refresh_success() + + def verify_refresh_success(self): + self.web_driver.find_element_by_xpath("//button[@id='view_summary']").click() + ui_utils(self.web_session).waitForTextOnPage("Openshift-Provider (Summary)", 15) + ui_utils(self.web_session).refresh_until_text_appears('Success', 120) + + def verify_hawkular_Services_crosslink(self): + + self.web_session.web_driver.get("{}/middleware_server/show_list".format(self.web_session.MIQ_URL)) + assert ui_utils(self.web_session).waitForTextOnPage("Local", 40) + self.web_driver.find_element_by_xpath("//span[contains(.,'Local')]").click() + assert ui_utils(self.web_session).waitForTextOnPage("Local (Summary)", 15) + + while True: + timeout = time.time() + 60 * 5 + if ui_utils(self.web_session).isElementPresent(By.XPATH, + "//td[contains(.,'Underlying Container')]") or time.time() > timeout: + break + else: + self.web_driver.refresh() + + self.web_driver.find_element_by_xpath("//td[contains(.,'Underlying Container')]").click() + assert ui_utils(self.web_session).waitForTextOnPage("Containers Provider", 15) + + return True + + def verify_topology_crosslink_to_hawkular_services_container(self): + self.web_session.web_driver.get("{}/middleware_topology/show".format(self.web_session.MIQ_URL)) + self.ui_utils.wait_until_element_displayed(self.web_driver.find_element_by_class_name('btn-default'), 10) + assert ui_utils(self.web_session).waitForTextOnPage("{}".format(self.openshift_container_name), 15) + + return True + diff --git a/views/topology_crosslink.py b/views/topology_crosslink.py deleted file mode 100644 index 1e4ef26..0000000 --- a/views/topology_crosslink.py +++ /dev/null @@ -1,33 +0,0 @@ -from common.ui_utils import ui_utils -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.by import By -from selenium.webdriver.support import expected_conditions as EC -from hawkular.hawkular_api import hawkular_api -from common.view import view -from common.db import db -from common.openshift_utils import openshift_utils -import time -from common.timeout import timeout -from views.topology import topology - -class topology_crosslink(): - web_session = None - MIQ_BASE_VERSION = "master" - ui_utils = None - - def __init__(self, web_session): - self.web_session = web_session - self.web_driver = web_session.web_driver - self.hawkular_api = hawkular_api(self.web_session) - - def crosslink_topology(self): - self.web_session.web_driver.get("{}/middleware_topology/show".format(self.web_session.MIQ_URL)) - ui_utils(self.web_session).sleep(10) - assert ui_utils(self.web_session).waitForTextOnPage("Servers", 40) - self.web_driver.find_element_by_xpath(".//*[@title='Name: hawkular-services Type: Container Status: Unknown").click().click() - #assert ui_utils(self.web_session).waitForTextOnPage("hawkular-services (Summary)", 15) - #top=topology() - #top.validate_middleware_container_entities() - #assert ui_utils(self.web_session).waitForTextOnPage("Aggregated Node Utilization", 15) - - return True