Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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