def wait_for_download_complete(): time.sleep(10) # This is to wait the download process to start download_path = ConfigAdapter.get_testdata_path().replace("\\\\", "\\") temp_file = '' for file in os.listdir(download_path): if re.match(r'restore_.*\.part$', file): temp_file = os.path.join(download_path, file) if temp_file == '': # KPIHelper.log_error(category="Web", kpiname="Download", result="SUCCESS", message="Download Completed.") LogHelper.info('Download Completed!') return True else: time.sleep(5) for i in range(100): if os.path.isfile(temp_file): time.sleep(4) else: # KPIHelper.log_error(category="Web", kpiname="Download", result="SUCCESS", message="Download Completed.") LogHelper.info('Download Completed!') return True # KPIHelper.log_error(category="Web", kpiname="Download", result="Fail", message="Timeout.") LogHelper.error('ERROR: Download Failed!') return False
def kill_fb(cls): """ kill file beat process :return: """ result = False if PlatformHelper.is_mac() or PlatformHelper.is_Linux(): cmd = "ps aux | grep 'filebeat -c' | grep -v 'grep'" output = CmdHelper.run(cmd) process_id = output.split()[1] kill_fb_cmd = "kill -9 %s" % process_id output = CmdHelper.run(kill_fb_cmd) if PlatformHelper.is_win(): cmd = "sc stop filebeat" output = CmdHelper.run(cmd) LogHelper.debug(output) if cls.is_fb_running(): LogHelper.error( "filebeat service CAN NOT be stopped successfully.") else: LogHelper.info("filebeat service is stopped") result = True return result
def check_entity(self, entity_name): """ in Freyja main page, check a dir or files by its name :param entity_name: :return: """ #check minus #right_click_target = "//tr[contains(@id, '\"{entity_name}\"')]/td[@class='center col col-checkbox']//span".format(entity_name=entity_name) #right_click_target = "//span[text()='" + entity_name + "']" cb_target = '//tr[contains(@id, "{entity_name}")]/td[1]/div/span[contains(@class, "check")]'.format( entity_name=entity_name) LogHelper.info(cb_target) try: self.locate_element(cb_target).click() actionPanel = self.locate_element( '//div[contains(@class, "panel-toggle") and @title="View Actions pane"]' ) LogHelper.info(str(actionPanel)) actionPanel.click() self.locate_element( '//div[text()="Large Download Options..."]').click() return True except Exception: LogHelper.error("Fail to click Large Download Options.") return False
def write_to_elasticsearch(self, sendes=True): if sendes: url = GLOBAL_CONFIG['ELASTICSEARCH'].get( 'URL') or "http://localhost" port = GLOBAL_CONFIG['ELASTICSEARCH'].get('PORT') or "8080" es = ElasticsearchHelper(url, port) #LogHelper.debug("Start to Write testresult to ES") result = es.index(index='kpi', doc_type='kpi', body=self.__create_es_body(), _id=self.id) if result: message = result.get('result') print message # if message.strip().lstrip() not in ("created", 'updated'): # LogHelper.error("create testresult message is %s" %message) # else: # LogHelper.warn("create test result is %s" %message) return result else: LogHelper.error("Fail to send KPI info to ES.") return else: print "Don't Send KPI to ES..." return self.read()
def wait_state(self, state, timeout=None, granularity=None): """ :param state: :param timeout: :param granularity: :return: """ result = True if timeout is None: timeout = GLOBAL_CONFIG["TIMEOUT"] if granularity is None: granularity = GLOBAL_CONFIG["GRANULARITY"] expected_state = [] if type(state) == str: expected_state.append(state) else: expected_state = state current = self.current_state() elapsed = 0 while (current.upper() not in expected_state) and elapsed <= timeout: LogHelper.debug("current state is %s" % current) time.sleep(granularity) elapsed += granularity current = self.current_state() if current.upper() not in expected_state: LogHelper.error("wait %s failed" % expected_state) raise Exception("Expected Result %s is not shownup" % expected_state) return result
def step_impl(context): winclient = Windows_Client(RUNNER_CONFIG.get('OEM_CLIENT', "mozypro")) result = winclient.controller.search_result_in_history() if result[0] == -9: LogHelper.info("backup is cancelled successfully") else: LogHelper.error("backup is cancelled unsuccessfully")
def create_mzd(self): try: self.locate_element(self.xpaths['restoreName']).click() time.sleep(1) self.locate_element(self.xpaths['restoreName']).send_keys( FRYR_CONFIG['RESTORE']['MZD_TAG']) self.locate_element(self.xpaths['restoreNextBtn']).click() self.locate_element(self.xpaths['mzdRadioBtn']).click() self.locate_element(self.xpaths['restoreNextBtn']).click() skip_btn = self.is_element_exist(self.xpaths['skipDownloadLink'], 10) if skip_btn: skip_btn.click() else: el = self.is_element_exist(self.xpaths['downloadFryRLink'], 2) if el: el.click() self.locate_element(self.xpaths['beginDownloadBtn']).click() time.sleep(5) self.locate_element(self.xpaths['closeBtn']).click() return True except Exception, e: LogHelper.error(repr(e)) LogHelper.error("Fail to create mzd file.") return False
def after_scenario(context, scenario): context.tc.end_time = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()) context.tc.duration = int(scenario.duration) context.tc.test_result = scenario.status if context.senddb: if not (RUNNER_CONFIG.get("PRODUCT") or '').lower() == 'mts': native_client = NativeClientFactory.get_client(product=RUNNER_CONFIG.get("PRODUCT"), oem=RUNNER_CONFIG.get("OEM_CLIENT")) KPIHelper.testcase = context.tc.name KPIHelper.extract_kpi(native_client.controller.log, starttime=context.log_starttime, hostname=context.tc.machine_hostname, ip=context.tc.machine_ip, env=context.env) if "-" in KPIHelper.thost: context.tc.thost = KPIHelper.thost.split("-")[1] # tds06-ut4.triton.mozy.com else: context.tc.thost = KPIHelper.thost # ut4.triton.mozy.com context.tc.write_to_elasticsearch() log = context.log_capture for line in log.getvalue().splitlines(): if line.find("ERROR") >=0: LogHelper.error(line)
def step_impl(context): is_installed = LinuxClient().controller.is_client_installed() LogHelper.info("Check Whether Linux Client Installed successfully") try: is_installed.should.equal(True) except AssertionError as e: LogHelper.error(e.message) raise e
def select_folder(self): try: Page.wait_for_element_list(self.xpaths['folderIcon']).click() return True except Exception: LogHelper.error("Select folder failed.") # Page.quit() return False
def click_button(btn_handle): #LogHelper.info('click button {}'.format(btn_handle.AXTitle)) try: btn_handle.Press() except ErrorCannotComplete as e: LogHelper.error(e.message) except Error as e: LogHelper.error(e.message)
def click_client_configuration(cls): try: Page.delayed_click(cls.xpaths['client_configuration_link'], sleep_time=2) return True except Exception: LogHelper.error("Click Client Configration link failed.") # Page.quit() return False
def start_use_mozy(cls): try: Page.delayed_click(cls.xpaths['start_using_mozy_btn'], sleep_time=2) return True except Exception: LogHelper.error("Click Start Using Mozy Button failed.") # Page.quit() return False
def act_as_partner(cls): try: Page.delayed_click(cls.xpaths['act_as_link'], sleep_time=2) cls.start_use_mozy() return True except Exception: LogHelper.error("Act as partner failed.") # Page.quit() return False
def select_combobox(combo_box, index=0): result = False try: combo_box.Select(index) except NotImplementedError as e: LogHelper.error(e.message) else: result = True return result
def step_impl(context, restore_dir, backup_dir): result = FileHelper.is_dir_same(restore_dir, backup_dir) if result: for diff in result: LogHelper.error("diff files found {path}".format(path=diff)) len(result).should.equal(0)
def select_folder(cls): try: el = Page.wait_for_element_list(cls.xpaths['folderIcon']) el.click() return True except Exception: LogHelper.error("BUS Select folder failed.") # Page.quit() return False
def verify_ui(self): try: self.locate_element(self.xpaths['folder_list']).is_displayed() LogHelper.info('Folder list is displayed for ' + self.machine_name) except: LogHelper.error('Folder list is not displayed for ' + self.machine_name) raise AssertionError('Folder list is not displayed for ' + self.machine_name)
def click_radio_button(radio_button_handle): LogHelper.info('click radio button {}'.format( radio_button_handle.AXTitle)) try: radio_button_handle.Press() except ErrorCannotComplete as e: LogHelper.error(e.message) except Error as e: LogHelper.error(e.message)
def step_impl(context, backupsetname, func): root_path = WIN_CONFIG.get('TESTDATA_PATH', "c:/testdata") if func == "CLI": Windows_Client(RUNNER_CONFIG.get('OEM_CLIENT', "mozypro")).cli.create_backupset(root_path, backupsetname) elif func.upper() == "UI": # TODO: Further invesigate pywinauto to support right click popup menu pass else: LogHelper.error("ERROR: Only support start backup from MozyUTIL or UI.")
def step_impl(context, expected_state): expected_state.upper() LogHelper.debug("expected status is %s" % expected_state) actual_status = LinuxGUIClient.state_cmd.current_state().upper() LogHelper.debug("actual_status status is %s" % actual_status) try: expected_state.upper().should.equal(actual_status.upper()) except AssertionError as e: LogHelper.error(e.message) raise e
def activate_auto(self, username): cmd = '"' + self.mozyutil + '"' + " /autoactivate " + username print cmd result = CmdHelper.run(cmd) if "Error" in result: LogHelper.error("Activation Failed with an Error: %s" % result) return False else: return True
def activate_productkey(self, email, password, productkey): cmd = '"' + self.mozyutil + '"' + " /activate " + email + " " + password + " /productkey " + productkey print cmd result = CmdHelper.run(cmd) if "Error" in result: LogHelper.error("Activation Failed with an Error: %s" % result) return False else: return True
def input_edit_content(edit, content): result = False LogHelper.info(content) try: edit.type_keys(content) except NotImplementedError as e: LogHelper.error(e.message) else: result = True return result
def click_button(button): result = False try: button.set_focus() button.Click() except NotImplementedError as e: LogHelper.error(e.message) else: result = True return result
def click_radio_button(radio_button): result = False try: radio_button.set_focus() radio_button.CheckByClick() except NotImplementedError as e: LogHelper.error(e.message) else: result = True return result
def search_partner(cls, partnername = None,): try: Page.locate_element(cls.xpaths['partnerSearchTxtBox']).send_keys(partnername) Page.locate_element(cls.xpaths['partnerSubmitSearch']).click() Page.delayed_click(cls.xpaths['partnerLink'], sleep_time=5) return True except Exception: LogHelper.error("Search partner failed.") # Page.quit() return False
def verify_ui(self): for i in range(3): try: self.locate_element(self.xpaths['folder_list'], wait_time=60).is_displayed() LogHelper.info('Folder list is displayed for ' + self.machine_name) return except: self.navigate_to(self.machine_index) LogHelper.error('Folder list is not displayed for ' + self.machine_name) raise AssertionError('Folder list is not displayed for ' + self.machine_name)
def step_impl(context): #Generate dir full path LogHelper.info('Generate directory full path') root = ConfigAdapter.get_testdata_path() for row in context.table: dir_name = row.get('entity') full_path = os.path.join(root, dir_name) #remve unwanted empty string drill_down_list = filter(lambda x: len(x) > 0, full_path.split(os.path.sep)) if RUNNER_CONFIG.get('PRODUCT').upper() in ('MAC', "LINUX", 'MAC_MACFRYR'): drill_down_list.insert(0, os.path.sep) # Drill down folders result = FreyjaPage.drill_down_folders(drill_down_list[0:-1]) try: (result).should.be(True) except AssertionError: LogHelper.error("Frejya fail to Expand folder.") FreyjaPage.quit() else: # Select folder checkbox result = FreyjaPage.check_entity(full_path) try: (result).should.be(True) except AssertionError: LogHelper.error("Frejya fail to check folder checkbox.") FreyjaPage.quit() else: context.kpi = KPI(testcase=context.tc.name, category="Web", start_time=strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()), name="Frejya Create MZD", result="Fail", hostname=context.tc.machine_hostname, ip=context.tc.machine_ip, env=context.env) result = FreyjaPage.create_mzd() try: (result).should.be(True) except AssertionError: context.kpi.message = "Frejya fail to create MZD." FreyjaPage.quit() else: context.kpi.result = "SUCCESS" finally: context.kpi.end_time = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()) context.kpi.write_to_elasticsearch(context.senddb) context.kpi = None Page.quit()
def activate_keyless(self, email, password, encryption_type="customkeytext", key=""): cmd = '"' + self.mozyutil + '"' + " /keylessactivate /email " + email + " /pass " + password + " /customkeytext " + key print cmd result = CmdHelper.run(cmd) if "Error" in result: LogHelper.error("Activation Failed with an Error: %s" % result) return False else: return True