예제 #1
0
    def instantiateWebdriver(self):
        os.environ['DISPLAY'] = ":99"
        Machine.runas(Machine.getAdminUser(), "dbus-uuidgen --ensure")
        profile = webdriver.FirefoxProfile()
        profile.set_preference("browser.privatebrowsing.autostart", True)
        profile.set_preference("network.http.phishy-userpass-length", 255)
        profile.set_preference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x")
        profile.accept_untrusted_certs = True
        driver = None
        profile.set_preference("browser.download.manager.showWhenStarting", False)
        profile.set_preference("browser.download.dir", "/tmp")
        profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/zip,application/octet-stream")
        profile.set_preference("browser.helperApps.alwaysAsk.force", False)
        # QE-4343
        profile.set_preference("dom.max_script_run_time", 0)
        from beaver.component.hadoop import Hadoop
        if Hadoop.isUIKerberozied() and Machine.isHumboldt():
            profile.set_preference("network.negotiate-auth.delegation-uris", ".hdinsight.net")
            profile.set_preference("network.negotiate-auth.trusted-uris", ".hdinsight.net")

        def restartXvfb():
            selenium_process_list = Machine.getProcessList(filter='selenium-server')
            selenium_pids = [int(p.split()[1]) for p in selenium_process_list]
            selenium_cmds = [' '.join(p.split()[3:]) for p in selenium_process_list]
            selenium_hub_cmd = None
            selenium_wd_cmd = None
            for cmd in selenium_cmds:
                if "role hub" in cmd:
                    selenium_hub_cmd = cmd + "  > /tmp/selenium-hub.log 2>&1 &"
                if "role webdriver" in cmd:
                    selenium_wd_cmd = cmd + " > /tmp/selenium-node.log 2>&1 &"
            assert selenium_hub_cmd and selenium_wd_cmd, "Failed to find selenium-server processes and restart them"
            for pid in selenium_pids:
                Machine.killProcessRemote(pid, host=None, user=Machine.getAdminUser(), passwd=None, logoutput=True)
            xvfb_pid = [int(p.split()[1]) for p in Machine.getProcessList(filter='Xvfb')]
            for pid in xvfb_pid:
                Machine.killProcessRemote(pid, host=None, user=Machine.getAdminUser(), passwd=None, logoutput=True)
            Machine.rm(Machine.getAdminUser(), None, "/tmp/.X99-lock", isdir=False, passwd=None)
            Machine.runas(Machine.getAdminUser(), selenium_hub_cmd, host=None)
            Machine.runas(Machine.getAdminUser(), selenium_wd_cmd, host=None)
            Machine.runinbackgroundAs(Machine.getAdminUser(), cmd="Xvfb :99 -ac -screen 0 1280x1024x24", host=None)
            time.sleep(10)

        num_attempts = 0
        max_attempts = 5
        while num_attempts < max_attempts:
            try:
                driver = Selenium.getWebDriver(browserType='firefox', platformType='LINUX', browser_profile=profile)
                Selenium.setWebDriverWinSize(driver, 1920, 1080)
                from beaver.component.hadoop import Hadoop
                if Hadoop.isUIKerberozied() and Machine.isHumboldt():
                    keytabFile = Machine.getHeadlessUserKeytab("hrt_qa")
                    kinitCmd = '%s -R -kt %s %s' % (
                        Machine.getKinitCmd(), keytabFile, Machine.get_user_principal("hrt_qa")
                    )
                    exitCode, stdout = Machine.runas("hrt_qa", kinitCmd)
                    assert exitCode == 0
                driver.get(self.getBaseUrl())
                break
            except Exception, e:
                if num_attempts < max_attempts - 1:
                    restartXvfb()
                    pass
                else:
                    logger.error("attempt : %s , Failed to get webdriver for Dataplane : %s" % (num_attempts, e))
                num_attempts = num_attempts + 1
예제 #2
0
class AppPage(BasePage):
    def __init__(self, basePageObj):
        BasePage.__init__(self, basePageObj.driver)

    if not Hadoop.isSecure() or Hadoop.isUIKerberozied():
        locator_dictionary = {
            "appAttemptTable": (By.XPATH, '//*[@id="attempts"]'),
            "killApplication":
            (By.XPATH, '/html/body/table/tbody/tr/td[2]/div[1]/button'),
            "user":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[2]/td/a'),
            "appName":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[3]/td'),
            "appType":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[4]/td'),
            "appPriority":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[6]/td'),
            "appState":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[7]/td'),
            "queue":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[2]/table/tbody/tr[8]/td/a'),
            "appAttemptID": (By.XPATH, '//*[@id="attempts"]/tbody/tr/td[1]/a'),
            "amNode": (By.XPATH, '//*[@id="attempts"]/tbody/tr/td[3]/a'),
        }
    else:
        locator_dictionary = {
            "appAttemptTable": (By.XPATH, '//*[@id="attempts"]'),
            "user":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[2]/td/a'),
            "appName":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[3]/td'),
            "appType":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[4]/td'),
            "appPriority":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[6]/td'),
            "appState":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[7]/td'),
            "queue":
            (By.XPATH,
             '//*[@id="layout"]/tbody/tr/td[2]/div[1]/table/tbody/tr[8]/td/a'),
            "appAttemptID": (By.XPATH, '//*[@id="attempts"]/tbody/tr/td[1]/a'),
            "amNode": (By.XPATH, '//*[@id="attempts"]/tbody/tr/td[3]/a'),
        }

    def isAppPage(self,
                  retryCount=0,
                  timeout=None,
                  restartWebDriver=False,
                  quitWebdriver=False,
                  appID=None):
        return self.checkElementonPage(
            locatorName=self.getUser(returnLocatorName=True),
            locatorMessage='Application %s' % appID,
            retryCount=retryCount,
            timeout=timeout,
            restartWebDriver=restartWebDriver,
            quitWebdriver=quitWebdriver)

    def getUser(self, returnLocatorName=False):
        return self.getElement("user", returnLocatorName)

    def getAppName(self, returnLocatorName=False):
        return self.getElement("appName", returnLocatorName)

    def getAppType(self, returnLocatorName=False):
        return self.getElement("appType", returnLocatorName)

    def getAppPriority(self, returnLocatorName=False):
        return self.getElement("appPriority", returnLocatorName)

    def getAppState(self, returnLocatorName=False):
        return self.getElement("appState", returnLocatorName)

    def getQueue(self, returnLocatorName=False):
        return self.getElement("queue", returnLocatorName)

    def getAppAttempt(self, returnLocatorName=False):
        return self.getElement('appAttemptID', returnLocatorName)

    def getAMNode(self, returnLocatorName=False):
        return self.getElement('amNode', returnLocatorName)

    def clickOnUser(self):
        self.driver.find_element_by_link_text(self.getUser().text).click()

    def clickOnQueue(self):
        self.driver.find_element_by_link_text(self.getQueue().text).click()
예제 #3
0
    def instantiateWebdriver(self):
        os.environ['DISPLAY'] = ":99"
        Machine.runas(Machine.getAdminUser(), "dbus-uuidgen --ensure")
        profile = webdriver.FirefoxProfile()
        profile.set_preference("browser.privatebrowsing.autostart", True)
        profile.set_preference("network.http.phishy-userpass-length", 255)
        profile.set_preference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x")
        profile.accept_untrusted_certs = True
        driver = None
        profile.set_preference("browser.download.manager.showWhenStarting", False)
        profile.set_preference("browser.download.dir", "/tmp")
        profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/zip,application/octet-stream")
        profile.set_preference("browser.helperApps.alwaysAsk.force", False)
        # QE-4343
        profile.set_preference("dom.max_script_run_time", 0)
        from beaver.component.hadoop import Hadoop
        if Hadoop.isUIKerberozied() and self.proxy == 'false':
            domainName = ".hwx.site"
            if Machine.isIBMPowerPC():
                domainName = ".openstacklocal"
            profile.set_preference("network.negotiate-auth.delegation-uris", domainName)
            profile.set_preference("network.negotiate-auth.trusted-uris", domainName)

        def restartXvfb():
            selenium_process_list = Machine.getProcessList(filter='selenium-server')
            selenium_pids = [int(p.split()[1]) for p in selenium_process_list]
            selenium_cmds = [' '.join(p.split()[3:]) for p in selenium_process_list]
            selenium_hub_cmd = None
            selenium_wd_cmd = None
            for cmd in selenium_cmds:
                if "role hub" in cmd:
                    selenium_hub_cmd = cmd + "  > /tmp/selenium-hub.log 2>&1 &"
                if "role webdriver" in cmd:
                    selenium_wd_cmd = cmd + " > /tmp/selenium-node.log 2>&1 &"
            assert selenium_hub_cmd and selenium_wd_cmd, "Failed to find selenium-server processes and restart them"
            for pid in selenium_pids:
                Machine.killProcessRemote(pid, host=None, user=Machine.getAdminUser(), passwd=None, logoutput=True)
            xvfb_pid = [int(p.split()[1]) for p in Machine.getProcessList(filter='Xvfb')]
            for pid in xvfb_pid:
                Machine.killProcessRemote(pid, host=None, user=Machine.getAdminUser(), passwd=None, logoutput=True)
            Machine.rm(Machine.getAdminUser(), None, "/tmp/.X99-lock", isdir=False, passwd=None)
            Machine.runas(Machine.getAdminUser(), selenium_hub_cmd, host=None)
            Machine.runas(Machine.getAdminUser(), selenium_wd_cmd, host=None)
            Machine.runinbackgroundAs(Machine.getAdminUser(), cmd="Xvfb :99 -ac -screen 0 1280x1024x24", host=None)
            time.sleep(10)

        num_attempts = 0
        max_attempts = 5
        while num_attempts < max_attempts:
            try:
                os.environ["http_proxy"] = ''
                #firefox_binary = FirefoxBinary('/base/tools/firefox-45.0/firefox')
                #driver = Selenium.getWebDriver(browserType='firefox', platformType='LINUX', browser_profile=profile, firefox_binary= firefox_binary)
                driver = Selenium.getWebDriver(browserType='firefox', platformType='LINUX', browser_profile=profile)
                # Adding an implicit wait so that the tests wait for some
                # time (30- seconds) before finding elements on web page
                # JIRA: https://hortonworks.jira.com/browse/QE-15773
                driver.implicitly_wait(30)
                Selenium.setWebDriverWinSize(driver, 1920, 1080)
                driver.get(self.getBaseUrl())
                break
            except Exception, e:
                logger.error("Exception is: %s" % e)
                if num_attempts < max_attempts - 1:
                    restartXvfb()
                    pass
                else:
                    logger.error("attempt : %s , Failed to get webdriver for Dataplane : %s" % (num_attempts, e))
                num_attempts = num_attempts + 1