def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False if not "cases" in test_set: return False disabledlog = os.environ.get('disabledlog','') cases, exetype, ctype = test_set[ "cases"], test_set["exetype"], test_set["type"] #print 'exetype', exetype if len(cases) == 0: return False # start debug trace thread if disabledlog == 'True': pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) if self.opts['test_type'] == "webapi": if ctype == 'ref': exetype = 'manual' return self.__run_web_test(sessionid, self.opts['testset_name'], exetype, ctype, cases) elif self.opts['test_type'] == "coreapi": return self.__run_core_test(sessionid, self.opts['testset_name'], exetype, cases) #elif self.opts['test_type'] == "jqunit": elif self.opts['test_type'] in ["jqunit",'pyunit']: return self.__run_jqt_test(sessionid, self.opts['testset_name'], cases) else: LOGGER.info("[ unsupported test suite type ! ]") return False
def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False disabledlog = os.environ.get("disabledlog","") # start debug trace thread if len(disabledlog) > 0 : pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) # self.opts['async_th'] = threading.Thread( # target=_pyunit_test_exec, # args=(sessionid, test_set['test_set_src'], test_set, self.result_obj) # ) self.opts['async_th'] = threading.Thread( target=_pyunit_test_exec, args=(sessionid, test_set, self.result_obj) ) self.opts['async_th'].start() return True
def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False disabledlog = os.environ.get("disabledlog","") # start debug trace thread if len(disabledlog) > 0 : pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) self.opts['async_th'] = threading.Thread( target=_xcunit_test_exec, args=(sessionid, test_set, self.result_obj, self.session_dir) ) self.opts['async_th'].start() return True
def run_test(self, sessionid, test_set): """ process the execution for a test set """ extension = test_set["extension"] if sessionid is None: return False if not "cases" in test_set: return False disabledlog = os.environ.get('disabledlog','') cases, exetype, ctype = test_set[ "cases"], test_set["exetype"], test_set["type"] if len(cases) == 0: return False # start debug trace thread if disabledlog == 'True': pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) if self.opts['test_type'] == "webapi": if ctype == 'ref': exetype = 'manual' return self.__run_web_test(sessionid, self.opts['testset_name'], exetype, ctype, cases, extension) elif self.opts['test_type'] == "coreapi": return self.__run_core_test(sessionid, self.opts['testset_name'], exetype, cases) #elif self.opts['test_type'] == "jqunit": elif self.opts['test_type'] in ["jqunit",'pyunit']: return self.__run_jqt_test(sessionid, self.opts['testset_name'], cases) else: LOGGER.info("[ unsupported test suite type ! ]") return False
def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False # start debug trace thread self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) self.opts['async_th'] = threading.Thread( target=_pyunit_test_exec, args=(sessionid, test_set['test_set_src'], self.result_obj) ) self.opts['async_th'].start() return True
class TestWorker(object): """Test executor for testkit-lite""" def __init__(self, conn): super(TestWorker, self).__init__() self.conn = conn self.server_url = None self.result_obj = None self.opts = dict({ 'block_size': 300, 'test_type': None, 'auto_iu': False, 'fuzzy_match': False, 'self_exec': False, 'self_repeat': False, 'debug_mode': False }) def __init_test_stub(self, stub_app, stub_port, debug_opt): # init testkit-stub deamon process timecnt = 0 blaunched = False while timecnt < CNT_RETRY: if not self.conn.check_process(stub_app): LOGGER.info( "[ no stub process activated, now try to launch %s ]" % stub_app) self.conn.launch_stub(stub_app, stub_port, debug_opt) timecnt += 1 else: blaunched = True break if not blaunched: LOGGER.info("[ launch stub process failed! ]") return False if self.server_url is None: self.server_url = self.conn.get_server_url(stub_port) timecnt = 0 blaunched = False while timecnt < CNT_RETRY: ret = http_request( get_url(self.server_url, "/check_server_status"), "GET", {}) if ret is None: LOGGER.info("[ check server status, not ready yet! ]") timecnt += 1 time.sleep(1) else: blaunched = True break return blaunched def __init_webtest_opt(self, params): """init the test runtime, mainly process the star up of test stub""" if params is None: return None session_id = str(uuid.uuid1()) stub_app = params.get('stub-name', 'testkit-stub') stub_port = params.get('stub-port', '8000') testsuite_name = params.get('testsuite-name', '') testset_name = params.get('testset-name', '') capability_opt = params.get("capability", None) test_launcher = params.get('test-launcher', '') test_extension = params.get('test-extension', None) test_widget = params.get('test-widget', None) test_opt = self.conn.get_launcher_opt(test_launcher, test_extension, test_widget, testsuite_name, testset_name) if test_opt is None: LOGGER.info("[ init the test launcher, get failed ]") return None LOGGER.info("[ web test launcher: %s ]" % test_opt["launcher"]) LOGGER.info("[ web test app: %s ]" % test_opt["test_app_id"]) self.opts.update(test_opt) self.opts['debug_mode'] = params.get("debug", False) # uifw, this suite don't need stub if self.opts['self_exec'] or self.opts['self_repeat']: self.opts['test_type'] = "jqunit" return session_id # enable debug information stub_debug_opt = "--debug" if self.opts['debug_mode'] else "" # suite_id to be removed in later version test_opt["suite_id"] = test_opt["test_app_id"] if self.__init_test_stub(stub_app, stub_port, stub_debug_opt): ret = http_request(get_url(self.server_url, "/init_test"), "POST", test_opt) if ret is None: LOGGER.info("[ init test suite failed! ]") return None elif "error_code" in ret: LOGGER.info("[ init test suite, " "get error code %d ! ]" % ret["error_code"]) return None if capability_opt is not None: ret = http_request(get_url(self.server_url, "/set_capability"), "POST", capability_opt) return session_id else: LOGGER.info("[ Init test failed ! ]") return None def init_test(self, params): """init the test envrionment""" self.opts['testset_name'] = params.get('testset-name', '') self.opts['testsuite_name'] = params.get('testsuite-name', '') self.opts['debug_log_base'] = params.get("debug-log-base", '') if params.get('test-launcher') is not None: self.opts['test_type'] = "webapi" return self.__init_webtest_opt(params) elif params.get('set_type') in ['ref', 'js']: self.opts['test_type'] = "webapi" params['test-launcher'] = "xwalk" return self.__init_webtest_opt(params) else: self.opts['test_type'] = "coreapi" return str(uuid.uuid1()) def __run_core_test(self, sessionid, test_set_name, exetype, cases): """ process the execution for core api test """ self.opts['async_th'] = threading.Thread(target=_core_test_exec, args=(self.conn, sessionid, test_set_name, exetype, cases, self.result_obj)) self.opts['async_th'].start() return True def __run_jqt_test(self, sessionid, test_set_name, cases): """ process the execution for Qunit testing """ exetype = "auto" if self.opts['self_exec'] else "" self.opts['async_th'] = threading.Thread( target=_webuifw_test_exec, args=(self.conn, self.opts['test_app_id'], sessionid, test_set_name, exetype, cases, self.result_obj)) self.opts['async_th'].start() return True def __run_web_test(self, sessionid, test_set_name, exetype, ctype, cases): """ process the execution for web api test may be splitted to serveral blocks, with the unit size defined by block_size """ case_count = len(cases) blknum = 0 if case_count % self.opts['block_size'] == 0: blknum = case_count / self.opts['block_size'] else: blknum = case_count / self.opts['block_size'] + 1 idx = 1 test_set_queues = [] while idx <= blknum: block_data = {} block_data["exetype"] = exetype block_data["type"] = ctype block_data["totalBlk"] = str(blknum) block_data["currentBlk"] = str(idx) block_data["casecount"] = str(case_count) start = (idx - 1) * self.opts['block_size'] if idx == blknum: end = case_count else: end = idx * self.opts['block_size'] block_data["cases"] = cases[start:end] test_set_queues.append(block_data) idx += 1 self.opts['async_th'] = threading.Thread( target=_web_test_exec, args=(self.conn, self.server_url, self.opts['test_app_id'], exetype, test_set_queues, self.result_obj)) self.opts['async_th'].start() return True def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False if not "cases" in test_set: return False cases, exetype, ctype = test_set["cases"], test_set[ "exetype"], test_set["type"] if len(cases) == 0: return False # start debug trace thread self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut(self.opts['testsuite_name'], self.opts['testset_name']) if self.opts['test_type'] == "webapi": if ctype == 'ref': exetype = 'manual' return self.__run_web_test(sessionid, self.opts['testset_name'], exetype, ctype, cases) elif self.opts['test_type'] == "coreapi": return self.__run_core_test(sessionid, self.opts['testset_name'], exetype, cases) elif self.opts['test_type'] == "jqunit": return self.__run_jqt_test(sessionid, self.opts['testset_name'], cases) else: LOGGER.info("[ unsupported test suite type ! ]") return False def get_test_status(self, sessionid): """poll the test task status""" if sessionid is None: return None result = {} result["msg"] = [] result["finished"] = str(self.result_obj.get_status()) return result def get_test_result(self, sessionid): """get the test result for a test set """ result = {} if sessionid is None: return result result = self.result_obj.get_result() return result def finalize_test(self, sessionid): """clear the test stub and related resources""" if sessionid is None: return False if self.result_obj is not None: self.result_obj.set_status(1) # stop test app if self.opts['test_type'] == "webapi": self.conn.kill_app(self.opts['test_app_id']) # uninstall test app if self.opts['auto_iu']: self.conn.uninstall_app(self.opts['test_app_id']) # stop debug thread self.conn.stop_debug() return True
class TestWorker(object): """Test executor for testkit-lite""" def __init__(self, conn): super(TestWorker, self).__init__() self.conn = conn self.server_url = None self.result_obj = None self.session_dir = None self.opts = dict({'block_size': 300, 'test_type': None, 'auto_iu': False, 'fuzzy_match': False, 'self_exec': False, 'self_repeat': False, 'debug_mode': False }) def init_test(self, params): """init the test envrionment""" self.session_dir =params.get('session_dir', '') self.opts['testset_name'] = params.get('testset-name', '') self.opts['testsuite_name'] = params.get('testsuite-name', '') self.opts['debug_log_base'] = params.get("debug-log-base", '') return str(uuid.uuid1()) def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False disabledlog = os.environ.get("disabledlog","") # start debug trace thread if len(disabledlog) > 0 : pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) self.opts['async_th'] = threading.Thread( target=_mocha_test_exec, args=(sessionid, test_set, self.result_obj, self.session_dir) ) self.opts['async_th'].start() return True def get_test_status(self, sessionid): """poll the test task status""" if sessionid is None: return None result = {} result["msg"] = [] result["finished"] = str(self.result_obj.get_status()) return result def get_test_result(self, sessionid): """get the test result for a test set """ result = {} if sessionid is None: return result result = self.result_obj.get_result() return result def finalize_test(self, sessionid): """clear the test stub and related resources""" if sessionid is None: return False if self.result_obj is not None: self.result_obj.set_status(1) # stop debug thread self.conn.stop_debug() return True
class TestWorker(object): """Test executor for testkit-lite""" def __init__(self, conn): super(TestWorker, self).__init__() self.conn = conn self.server_url = None self.result_obj = None self.opts = dict({'block_size': 300, 'test_type': None, 'auto_iu': False, 'fuzzy_match': False, 'self_exec': False, 'self_repeat': False, 'debug_mode': False }) def __init_test_stub(self, stub_app, stub_port, debug_opt): # init testkit-stub deamon process timecnt = 0 blaunched = False while timecnt < CNT_RETRY: #print 'stub_app' ,stub_app if not self.conn.check_process(stub_app): LOGGER.info("[ no stub process activated, now try to launch %s ]" % stub_app) self.conn.launch_stub(stub_app, stub_port, debug_opt) timecnt += 1 else: blaunched = True break if not blaunched: LOGGER.info("[ launch stub process failed! ]") return False if self.server_url is None: self.server_url = self.conn.get_server_url(stub_port) timecnt = 0 blaunched = False while timecnt < CNT_RETRY: ret = http_request(get_url( self.server_url, "/check_server_status"), "GET", {}) if ret is None: LOGGER.info("[ check server status, not ready yet! ]") timecnt += 1 time.sleep(1) else: blaunched = True break return blaunched def __init_webtest_opt(self, params): """init the test runtime, mainly process the star up of test stub""" if params is None: return None session_id = str(uuid.uuid1()) stub_app = params.get('stub-name', 'testkit-stub') stub_port = params.get('stub-port', '8000') testsuite_name = params.get('testsuite-name', '') testset_name = params.get('testset-name', '') capability_opt = params.get("capability", None) test_launcher = params.get('test-launcher', '') test_extension = params.get('test-extension', None) test_widget = params.get('test-widget', None) test_opt = self.conn.get_launcher_opt( test_launcher, test_extension, test_widget, testsuite_name, testset_name) if test_opt is None: LOGGER.info("[ init the test launcher, get failed ]") return None LOGGER.info("[ web test launcher: %s ]" % test_opt["launcher"]) LOGGER.info("[ web test app: %s ]" % test_opt["test_app_id"]) self.opts.update(test_opt) self.opts['debug_mode'] = params.get("debug", False) # uifw, this suite don't need stub if self.opts['self_exec'] or self.opts['self_repeat']: self.opts['test_type'] = "jqunit" return session_id # enable debug information stub_debug_opt = "--debug" if self.opts['debug_mode'] else "" # suite_id to be removed in later version test_opt["suite_id"] = test_opt["test_app_id"] if self.__init_test_stub(stub_app, stub_port, stub_debug_opt): ret = http_request(get_url( self.server_url, "/init_test"), "POST", test_opt) if ret is None: LOGGER.info("[ init test suite failed! ]") return None elif "error_code" in ret: LOGGER.info("[ init test suite, " "get error code %d ! ]" % ret["error_code"]) return None if capability_opt is not None: ret = http_request(get_url(self.server_url, "/set_capability"), "POST", capability_opt) return session_id else: LOGGER.info("[ Init test failed ! ]") return None def init_test(self, params): """init the test envrionment""" self.opts['testset_name'] = params.get('testset-name', '') self.opts['testsuite_name'] = params.get('testsuite-name', '') self.opts['debug_log_base'] = params.get("debug-log-base", '') if params.get('test-launcher') is not None: self.opts['test_type'] = "webapi" return self.__init_webtest_opt(params) elif params.get('set_type') in ['ref','js']: self.opts['test_type'] = "webapi" params['test-launcher'] = "xwalk" return self.__init_webtest_opt(params) else: self.opts['test_type'] = "coreapi" return str(uuid.uuid1()) def __run_core_test(self, sessionid, test_set_name, exetype, cases): """ process the execution for core api test """ self.opts['async_th'] = threading.Thread( target=_core_test_exec, args=( self.conn, sessionid, test_set_name, exetype, cases, self.result_obj) ) self.opts['async_th'].start() return True def __run_jqt_test(self, sessionid, test_set_name, cases): """ process the execution for Qunit testing """ exetype = "auto" if self.opts['self_exec'] else "" self.opts['async_th'] = threading.Thread( target=_webuifw_test_exec, args=( self.conn, self.opts['test_app_id'], sessionid, test_set_name, exetype, cases, self.result_obj) ) self.opts['async_th'].start() return True def __run_web_test(self, sessionid, test_set_name, exetype, ctype, cases): """ process the execution for web api test may be splitted to serveral blocks, with the unit size defined by block_size """ #print 'web test' case_count = len(cases) blknum = 0 if case_count % self.opts['block_size'] == 0: blknum = case_count / self.opts['block_size'] else: blknum = case_count / self.opts['block_size'] + 1 idx = 1 test_set_queues = [] while idx <= blknum: block_data = {} block_data["exetype"] = exetype block_data["type"] = ctype block_data["totalBlk"] = str(blknum) block_data["currentBlk"] = str(idx) block_data["casecount"] = str(case_count) start = (idx - 1) * self.opts['block_size'] if idx == blknum: end = case_count else: end = idx * self.opts['block_size'] block_data["cases"] = cases[start:end] test_set_queues.append(block_data) idx += 1 self.opts['async_th'] = threading.Thread( target=_web_test_exec, args=( self.conn, self.server_url, self.opts['test_app_id'], exetype, test_set_queues, self.result_obj) ) self.opts['async_th'].start() return True def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False if not "cases" in test_set: return False disabledlog = os.environ.get('disabledlog','') cases, exetype, ctype = test_set[ "cases"], test_set["exetype"], test_set["type"] #print 'exetype', exetype if len(cases) == 0: return False # start debug trace thread if disabledlog == 'True': pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) if self.opts['test_type'] == "webapi": if ctype == 'ref': exetype = 'manual' return self.__run_web_test(sessionid, self.opts['testset_name'], exetype, ctype, cases) elif self.opts['test_type'] == "coreapi": return self.__run_core_test(sessionid, self.opts['testset_name'], exetype, cases) #elif self.opts['test_type'] == "jqunit": elif self.opts['test_type'] in ["jqunit",'pyunit']: return self.__run_jqt_test(sessionid, self.opts['testset_name'], cases) else: LOGGER.info("[ unsupported test suite type ! ]") return False def get_test_status(self, sessionid): """poll the test task status""" if sessionid is None: return None result = {} result["msg"] = [] result["finished"] = str(self.result_obj.get_status()) return result def get_test_result(self, sessionid): """get the test result for a test set """ result = {} if sessionid is None: return result result = self.result_obj.get_result() return result def finalize_test(self, sessionid): """clear the test stub and related resources""" if sessionid is None: return False if self.result_obj is not None: self.result_obj.set_status(1) # stop test app if self.opts['test_type'] == "webapi": self.conn.kill_app(self.opts['test_app_id']) # uninstall test app if self.opts['auto_iu']: self.conn.uninstall_app(self.opts['test_app_id'].split('.')[0][1:]) # stop debug thread self.conn.stop_debug() return True
class TestWorker(object): """Test executor for testkit-lite""" def __init__(self, conn): super(TestWorker, self).__init__() self.conn = conn self.server_url = None self.result_obj = None self.session_dir = None self.opts = dict({'block_size': 300, 'test_type': None, 'auto_iu': False, 'fuzzy_match': False, 'self_exec': False, 'self_repeat': False, 'debug_mode': False }) def init_test(self, params): """init the test envrionment""" self.session_dir =params.get('session_dir', '') self.opts['testset_name'] = params.get('testset-name', '') self.opts['testsuite_name'] = params.get('testsuite-name', '') self.opts['debug_log_base'] = params.get("debug-log-base", '') return str(uuid.uuid1()) def run_test(self, sessionid, test_set): """ process the execution for a test set """ if sessionid is None: return False disabledlog = os.environ.get("disabledlog","") # start debug trace thread if len(disabledlog) > 0 : pass else: self.conn.start_debug(self.opts['debug_log_base']) time.sleep(1) self.result_obj = TestSetResut( self.opts['testsuite_name'], self.opts['testset_name']) self.opts['async_th'] = threading.Thread( target=_bdd_test_exec, args=(sessionid, test_set, self.result_obj, self.session_dir) ) self.opts['async_th'].start() return True def get_test_status(self, sessionid): """poll the test task status""" if sessionid is None: return None result = {} result["msg"] = [] result["finished"] = str(self.result_obj.get_status()) return result def get_test_result(self, sessionid): """get the test result for a test set """ result = {} if sessionid is None: return result result = self.result_obj.get_result() return result def finalize_test(self, sessionid): """clear the test stub and related resources""" if sessionid is None: return False if self.result_obj is not None: self.result_obj.set_status(1) # stop debug thread self.conn.stop_debug() return True