def test_config_ini_file(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder=ea_log_path) removeall(ea_log_path) tps_step = '1-5' ts_auto.ts_start(delay=5) ea_start(delay=15) passed = browser_auto.run_normal_test() time_sleep(20) ea_close() ts_closed = ts_auto.ts_close() try: self.assertTrue(passed, 'Browser Automation Failed!') self.assertTrue(ts_closed, 'TestStand close Failed!') self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue( lookup_keyword_in_ea_log(active_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') self.assertTrue( lookup_keyword_in_ea_log(task_executed_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical( tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def config_test(self, opt, inp_str, veri_keywords=active_kwd_list, expect_result=True): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder=ea_log_path) removeall(ea_log_path) logger = logging.getLogger("COSMO.config.login") tps_step = opt + ' = ' + inp_str logger.critical(tps_state_str.format(tps_name, tps_step, 'BEGIN')) if opt != None: config_file.change_option('Server', opt, '"{}"'.format(inp_str)) ea_start(delay=15) ea_close() try: self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue( expect_result == lookup_keyword_in_ea_log( active_kwd_list, ea_log_file), 'Expected result is {}, not satisfied!'.format(expect_result)) except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical( tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def test_config_ini_file(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder = ea_log_path) removeall(ea_log_path) tps_step = '1-5' ts_auto.ts_start(delay=5) ea_start(delay=15) passed = browser_auto.run_normal_test() time_sleep(20) ea_close() ts_closed = ts_auto.ts_close() try: self.assertTrue(passed, 'Browser Automation Failed!') self.assertTrue(ts_closed, 'TestStand close Failed!') self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') self.assertTrue(lookup_keyword_in_ea_log(task_executed_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def restart_time_test(self, opt, inp_str, veri_keywords=active_kwd_list, expect_result=True): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder = ea_log_path) removeall(ea_log_path) logger = logging.getLogger("COSMO.config.login") tps_step = opt + ' = ' + inp_str logger.critical(tps_state_str.format(tps_name, tps_step, 'BEGIN')) if opt != None: config_file.change_option('Server', opt, '"{}"'.format(inp_str)) ea_start(delay=15) time_gui_closed = time.time() logger.info('gui closed now.') ea_close() time_process_ended = time.time() logger.info('process is ended now.') time_result = time_process_ended - time_gui_closed try: self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue(expect_result == lookup_keyword_in_ea_log(active_kwd_list, ea_log_file), 'Expected result is {}, not satisfied!'.format(expect_result)) except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) finally: logger.critical('Seconds to restart EA is {}'.format(time_result))
def stress_test(repeat_times = 10): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) logger.critical("Initialize Stress Test.") #ea_initialize_test(log_folder=ea_log_path) config_file.initialize(log_folder=ea_log_path) '''shutil.copy('ea/Configuration.ini', config_file) ea_start(delay=15) ea_click(item='file_name') ea_config('folder', ea_log_path) ea_close()''' logger.critical("Initialize Stress Test Finished.") cnt = 0 passed_number = 0 while cnt < repeat_times: cnt += 1 logger.critical("Stress Test No.{} BEGIN.".format(cnt)) removeall(ea_log_path) ea_start(delay=0) passed = browser_auto.run_normal_test() ea_close() try: assert passed, 'Browser Automation FAILED!' assert os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file) assert lookup_keyword_in_ea_log(active_kwd_list + task_executed_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!' except AssertionError as e: logger.critical("Stress Test No.{} FAILED.".format(cnt)) logger.critical(str(e)) except Exception as e: logger.critical("Stress Test No.{} UNKOWN ERROR.".format(cnt)) logger.critical(str(e)) else: logger.critical("Stress Test No.{} PASSED.".format(cnt)) passed_number += 1 logger.critical('Pass rate till now is {}'.format(passed_number/cnt)) if cnt%100 == 0: time_sleep(2) #delete temp file too hurry might prevent firefox from closing removeall(r'C:\Users\msun\AppData\Local\temp') #the files here could be too large, if running for hours
def test_config_ini_file(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder = ea_log_path) removeall(ea_log_path) tps_step = '1-5' ea_start(delay=5) if not ts_auto.ts_close():# todo: ts_close is not stable enough logger.critical('Close TestStand FAILED!') ea_close() try: self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue(lookup_keyword_in_ea_log(shutdown_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def test_config_ini_file(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) tps_step = '1-2' removeall(config_file) ea_start(handle_ts=False) try: with open(config_file, 'r') as f: self.assertTrue(len(f.read()) == 0, 'config file is not empty') except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) tps_step = '3' # test_items = ['server', 'username', 'password', 'project_area', 'adapter_name'] # todo: cann't test password; encrypt make the file a mess, python could not read that file test_items = ['server', 'username', 'project_area', 'adapter_name'] for i in test_items: t_i = 'test_' + i print(t_i) ea_config(i, t_i) ea_close() try: with open(config_file, 'r') as f: config_content = f.read() for i in test_items: t_i = 'test_' + i if i != 'password': self.assertTrue( t_i in config_content, 'content: {} could not be found'.format(t_i)) else: self.assertTrue(t_i not in config_content, 'password is read directly') except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def initialize(server=default_server, username=default_username, password=default_password, project_area=default_project_area, adapter_name=default_adapter_name, resource_folder=default_resource_folder, log_folder=default_log_folder, remove_original_file=False): if not os.path.exists(config_path): os.makedirs(config_path) if not os.path.exists(config_file): f = open(config_file, 'w') f.close() shutil.copy('Configuration.ini', config_file) os.chmod(config_file, stat.S_IREAD | stat.S_IWRITE) if remove_original_file: removeall(config_file) with open(config_file, 'w') as f: pass change_option('Server', 'server address', '"{}"'.format(server)) change_option('Server', 'username', '"{}"'.format(username)) change_option( 'Server', 'password', '"{}"'.format(password)) # this is the 'test' with encryption change_option('Server', 'projectarea', '"{}"'.format(project_area)) change_option('Client', 'name', '"{}"'.format(adapter_name)) change_option('Client', 'rootresourcefolder', '"{}"'.format(resource_folder)) change_option('Client', 'systemlogfolder', '"{}"'.format(log_folder)) change_option('Client', 'systemlognamestyle', '"StaticName"') change_option('Client', 'connectatstartup', 'TRUE') # use the same adapter id to avoid adapter choose in webpage change_option('Do not touch items in this section', 'adapterid', '"_hYzYFDFYEeOfmKniIK943w"')
def test_config_ini_file(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) config_file.initialize(log_folder=ea_log_path) removeall(ea_log_path) tps_step = '1-5' ea_start(delay=5) if not ts_auto.ts_close(): # todo: ts_close is not stable enough logger.critical('Close TestStand FAILED!') ea_close() try: self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue( lookup_keyword_in_ea_log(shutdown_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical( tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))
def initialize( server = default_server, username = default_username, password = default_password, project_area = default_project_area, adapter_name = default_adapter_name, resource_folder = default_resource_folder, log_folder = default_log_folder, remove_original_file = False ): if not os.path.exists(config_path): os.makedirs(config_path) if not os.path.exists(config_file): f = open(config_file, 'w') f.close() shutil.copy('Configuration.ini', config_file) os.chmod( config_file, stat.S_IREAD | stat.S_IWRITE ) if remove_original_file: removeall(config_file) with open(config_file, 'w') as f: pass change_option('Server', 'server address', '"{}"'.format(server)) change_option('Server', 'username', '"{}"'.format(username)) change_option('Server', 'password', '"{}"'.format(password)) # this is the 'test' with encryption change_option('Server', 'projectarea', '"{}"'.format(project_area)) change_option('Client', 'name', '"{}"'.format(adapter_name)) change_option('Client', 'rootresourcefolder', '"{}"'.format(resource_folder)) change_option('Client', 'systemlogfolder', '"{}"'.format(log_folder)) change_option('Client', 'systemlognamestyle', '"StaticName"') change_option('Client', 'connectatstartup', 'TRUE') # use the same adapter id to avoid adapter choose in webpage change_option('Do not touch items in this section', 'adapterid', '"_hYzYFDFYEeOfmKniIK943w"')
ch2 = logging.StreamHandler(open(autotest_log_file,'at')) ch2.setLevel(logging.WARNING) ch2.setFormatter(logging.Formatter('%(asctime)s : %(levelname)s : %(message)s')) logger.addHandler(ch2) ch_debug = logging.StreamHandler(open(debug_log_file,'at')) ch_debug.setLevel(logging.DEBUG) ch_debug.setFormatter(logging.Formatter('%(asctime)s : %(levelname)s : %(message)s')) logger.addHandler(ch_debug) cnt = 0 while cnt < TEST_REPEAT: cnt += 1 logger.critical("Stress Test No.{} begin.".format(cnt)) unittest.main(verbosity=2, exit=False) if cnt%100 == 0: time.sleep(2) #delete temp file too hurry might prevent firefox from closing removeall(r'C:\Users\msun\AppData\Local\temp') #the files here could be too large, if running for hours '''while 1: try: unittest.main(verbosity=2,exit=False) except: print("An exception is detected.") logging.warning("An exception is detected.") continue else: suc_cnt += 1 print("Test {} successed.".format(suc_cnt)) logging.info("Test {} successed.".format(suc_cnt))'''
def test_config_log(self): ea_log_path, ea_log_file, logger = initialize_test_folders(test_name) logger = logging.getLogger("COSMO.config.log") tps_name = 'Configurations of log file' # initialize tps_step = 'Initialize log path' logger.critical(tps_state_str.format(tps_name, tps_step, 'BEGIN')) config_file.initialize(log_folder= ea_log_path) # step 1-2 removeall(ea_log_path) tps_step = '1 - 2' logger.critical(tps_state_str.format(tps_name, tps_step, 'BEGIN')) ea_start(delay=15) ea_close() try: self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) # step 3 removeall(ea_log_path) tps_step = '3' logger.critical(tps_state_str.format(tps_name, tps_step, 'BEGIN')) ea_start(delay=15) passed = browser_auto.run_normal_test() time_sleep(20) ea_close() try: self.assertTrue(passed, 'Browser Automation Failed!') self.assertTrue(os.path.exists(ea_log_file), 'EA log: {} not found!'.format(ea_log_file)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') self.assertTrue(lookup_keyword_in_ea_log(task_executed_kwd_list, ea_log_file), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) # step 4 tps_step = '4' logger.critical('TPS: {}, step: {}, test begin.'.format(tps_name, tps_step)) ea_log_path_exists = ea_log_path + 'exists\\' ea_log_file_step4 = os.path.join(ea_log_path_exists, 'system log.html') config_file.change_option('Client', 'systemlogfolder', '"{}"'.format(ea_log_path_exists)) removeall(ea_log_path) os.mkdir(ea_log_path_exists) ea_start(delay=15) ea_close() try: self.assertTrue(os.path.exists(ea_log_file_step4), 'EA log: {} not found!'.format(ea_log_file_step4)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file_step4), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) # step 5 tps_step = '5' logger.critical('TPS: {}, step: {}, test begin.'.format(tps_name, tps_step)) ea_log_path_not_exists = ea_log_path + 'not_exists\\' ea_log_file_step5 = os.path.join(ea_log_path_not_exists, 'system log.html') config_file.change_option('Client', 'systemlogfolder', '"{}"'.format(ea_log_path_not_exists)) removeall(ea_log_path) ea_start(delay=15) ea_close() try: self.assertTrue(os.path.exists(ea_log_file_step5), 'EA log: {} not found!'.format(ea_log_file_step5)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file_step5), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED')) # step 6 tps_step = '6' logger.critical('TPS: {}, step: {}, test begin.'.format(tps_name, tps_step)) config_file.change_option('Client', 'systemlogfolder', '"{}"'.format(ea_log_path)) config_file.change_option('Client', 'systemlognamestyle', '"TimeStampedFilename"') removeall(ea_log_path) ea_start(delay=15) ea_close() try: validate_str = datetime.datetime.now().strftime('system log %Y-%m-%d ') + '*.html' validate_str = ea_log_path + validate_str logger.debug('Validate string is {}'.format(validate_str)) files_found = glob.glob(validate_str) self.assertTrue(len(files_found) == 1, '{} of log(s) with {} format were found'.format(len(files_found), validate_str)) ea_log_file_step6 = files_found[0] self.assertTrue(os.path.exists(ea_log_file_step6), 'EA log: {} not found!'.format(ea_log_file_step6)) self.assertTrue(lookup_keyword_in_ea_log(active_kwd_list, ea_log_file_step6), 'Not all the keywords were found in EA log!') except AssertionError as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'FAILED')) logger.critical(str(e)) except Exception as e: logger.critical(tps_state_str.format(tps_name, tps_step, 'UNKOWN ERROR')) logger.critical(str(e)) else: logger.critical(tps_state_str.format(tps_name, tps_step, 'PASSED'))