예제 #1
0
    def GenCase(self, mtdList, exeIteration, tsType, debug):
        """generate each test case
    
        params:    
            mtdList: method node list
            exeIteration: number of this execution iteration
            tsType: test suite type
        """

        mtSeq = 0
        for mtd in mtdList:

            caseItem = []
            caseItemPara = []
            caseItemRows = 0
            caseItemDataset = ""

            # test case start command, which is the path of template executor
            caseItem.append(Path.templateExecutorPath)

            # try to attach pre parameters, it is optional
            try:
                mtdName = Parser.getNodeVal(self, mtd, "name")

                #configuration for template executor
                caseItemPara.append("--method " + mtdName)
                caseItemPara.append("--algorithm " + self.algorithm)
                caseItemPara.append("--spec_file " + os.path.join(
                    os.getcwd(), Path.CfgSpecPath + Path.algorithmsSpecXml))

                caseItemPara.extend(self.preParas[mtdName])

            except Exception, exp:
                #print 'pre', str(exp)
                pass

            # try to attach parameters, it is optional
            try:
                paraList = Parser.getNodeList(self, mtd, "parameter")
                for para in paraList:
                    paraName = Parser.getNodeVal(self, para, "name")
                    paraVal = Parser.getNodeVal(self, para, "value")
                    caseItemPara.extend(
                        self.paraHandler.handle(paraName, paraVal, "para",
                                                mtdName))

                    if "dataset" == paraName:
                        caseItemDataset = paraVal
                    if "rows" == paraName:
                        caseItemRows = paraVal
            except Exception, exp:
                pass
예제 #2
0
    def GenCase(self, mtdList, exeIteration, tsType, debug):
        """generate each test case
    
        params:    
            mtdList: method node list
            exeIteration: number of this execution iteration
            tsType: test suite type
        """

        mtSeq = 0
        for mtd in  mtdList:

            caseItem = []
            caseItemPara = []
            caseItemRows = 0
            caseItemDataset = ""

            # test case start command, which is the path of template executor
            caseItem.append(Path.templateExecutorPath)

            # try to attach pre parameters, it is optional
            try :
                mtdName = Parser.getNodeVal(self, mtd , "name")

                #configuration for template executor
                caseItemPara.append("--method "+mtdName)
                caseItemPara.append("--algorithm "+self.algorithm)
                caseItemPara.append("--spec_file "+ os.path.join( 
                    os.getcwd(), Path.CfgSpecPath + Path.algorithmsSpecXml))

                caseItemPara.extend(self.preParas[mtdName])

            except Exception, exp:
                #print 'pre', str(exp)
                pass

            # try to attach parameters, it is optional
            try :
                paraList = Parser.getNodeList(self, mtd,"parameter")
                for para in paraList:
                    paraName = Parser.getNodeVal(self, para, "name")
                    paraVal  = Parser.getNodeVal(self, para, "value")
                    caseItemPara.extend(self.paraHandler.handle(paraName, 
                        paraVal, "para", mtdName))

                    if "dataset" == paraName :
                        caseItemDataset = paraVal
                    if "rows" == paraName :
                        caseItemRows = paraVal
            except Exception, exp:
                pass
예제 #3
0
    def __init__(self, node, db_schema):
        self.top_node = node

        self.name = Parser.getNodeVal(self, self.top_node, "name")
        method_nodes = Parser.getNodeList(self, self.top_node, "method")
        self.methods = [MethodTemplate(method_node, db_schema) for method_node in method_nodes]

        self.method_map = {}
        for method in self.methods:
            self.method_map[method.name] = method
예제 #4
0
파일: dataset.py 프로젝트: madlib/testsuite
    def __getDataSet(self, dsNode):
        desc = {}
        dsName = Parser.getNodeVal(self, dsNode, "name")
        dsRows = Parser.getNodeVal(self, dsNode, "rows")
        desc["rows"] = dsRows

        mtList = Parser.getNodeList(self, dsNode, "method")
        for mt in mtList:
            mtName = Parser.getNodeVal(self, mt, "name")
            paraList = Parser.getNodeList(self, mt, "parameter")

            paras = []
            for para in paraList:
                pName = Parser.getNodeVal(self, para, "name")
                pVal = Parser.getNodeVal(self, para, "value")
                paras.append("--" + pName + " " + pVal)
            desc[mtName] = " ".join(paras)  # method's parameter string

        self.descs[dsName] = desc
예제 #5
0
파일: dataset.py 프로젝트: iyerr3/testsuite
    def __getDataSet(self, dsNode):
        desc = {}
        dsName = Parser.getNodeVal(self, dsNode, "name")
        dsRows = Parser.getNodeVal(self, dsNode, "rows")
        desc["rows"] = dsRows

        mtList = Parser.getNodeList(self, dsNode, "method")
        for mt in mtList :
            mtName = Parser.getNodeVal(self, mt, "name")
            paraList = Parser.getNodeList(self, mt, "parameter")

            paras = []
            for para in paraList:
                pName = Parser.getNodeVal(self, para, "name")
                pVal = Parser.getNodeVal(self, para, "value")
                paras.append("--" + pName + " " + pVal)
            desc[mtName] = " ".join(paras)  # method's parameter string

        self.descs[dsName] = desc
예제 #6
0
    def __init__(self, node, db_schema):
        self.top_node = node
        self.db_schema = db_schema

        self.name = Parser.getNodeVal(self, self.top_node, "name")
        self.create = Parser.getNodeVal(self, self.top_node, "create")
        self.template = Parser.getNodeVal(self, self.top_node, "template")
        input_para_nodes = Parser.getNodeList(self, self.top_node, "input_parameter")
        self.input_paras = [InputParameter(input_para_node) for input_para_node in input_para_nodes]
        self.output_paras = [
            InputParameter(output_para_node)
            for output_para_node in Parser.getNodeList(self, self.top_node, "output_parameter")
        ]

        self.para_map = {}
        for para in self.output_paras:
            self.para_map[para.name] = para
        # input parameter can overwrite output parameter
        for para in self.input_paras:
            self.para_map[para.name] = para
예제 #7
0
    def __preParas(self, mtdNodeList):
        """Get prepared parameters.

        params:
            mtdNodeList: method node list.
        return:
            preParameters Hash tablb, the table format.
        key:methodName, value : method's preParameters array (including parameter name)
        """

        preParas = {}
        for mtd in mtdNodeList:
            prePara = []
            mtdName = Parser.getNodeVal(self, mtd,"name")
            for para in Parser.getNodeList(self, mtd,"parameter"):
                pName = Parser.getNodeVal(self, para, "name")
                pVal = Parser.getNodeVal(self, para, "value")
                prePara.extend(self.paraHandler.handle(pName, pVal, "pre", mtdName))
            preParas[mtdName] = prePara
        return preParas
예제 #8
0
    def __init__(self, node):
        self.top_node = node

        # input parameter name
        self.name = Parser.getNodeVal(self, self.top_node, "name").lower()
        # input parameter value
        self.type = Parser.getNodeVal(self, self.top_node, "type").lower()
        # should we quote the parameter name?
        quote = Parser.getNodeVal(self, self.top_node, "quote")
        # default is True
        if not quote:
            self.quote = True
        elif quote.lower in ("t", "true"):
            self.quote = True
        else:
            self.quote = False

        try:
            self.default = Parser.getNodeVal(self, self.top_node, "default")
        except Exception:
            self.default = ""
예제 #9
0
    def __init__(self, node):
        self.top_node = node

        # input parameter name
        self.name = Parser.getNodeVal(self, self.top_node, "name").lower()
        # input parameter value
        self.type = Parser.getNodeVal(self, self.top_node, "type").lower()
        # should we quote the parameter name?
        quote = Parser.getNodeVal(self, self.top_node, "quote")
        # default is True
        if not quote:
            self.quote = True
        elif quote.lower in ('t', 'true'):
            self.quote = True
        else:
            self.quote = False

        try:
            self.default = Parser.getNodeVal(self, self.top_node, "default")
        except Exception:
            self.default = ''
예제 #10
0
    def __init__(self, node, db_schema):
        self.top_node = node

        self.name = Parser.getNodeVal(self, self.top_node, "name")
        method_nodes = Parser.getNodeList(self, self.top_node, "method")
        self.methods = [
            MethodTemplate(method_node, db_schema)
            for method_node in method_nodes
        ]

        self.method_map = {}
        for method in self.methods:
            self.method_map[method.name] = method
예제 #11
0
    def __init__(self, node, db_schema):
        self.top_node = node
        self.db_schema = db_schema

        self.name = Parser.getNodeVal(self, self.top_node, "name")
        self.create = Parser.getNodeVal(self, self.top_node, "create")
        self.template = Parser.getNodeVal(self, self.top_node, "template")
        input_para_nodes = Parser.getNodeList(self, self.top_node,
                                              "input_parameter")
        self.input_paras = [
            InputParameter(input_para_node)
            for input_para_node in input_para_nodes
        ]
        self.output_paras = [
            InputParameter(output_para_node) for output_para_node in
            Parser.getNodeList(self, self.top_node, "output_parameter")
        ]

        self.para_map = {}
        for para in self.output_paras:
            self.para_map[para.name] = para
        # input parameter can overwrite output parameter
        for para in self.input_paras:
            self.para_map[para.name] = para
예제 #12
0
    def __multiTestSuite(self, mlTs, tsType, debug):
        """Parse one multi-test suite.

        params:
            mlTs: multi-test suite node
            tsType: <test_type>
        """

        algorithm   =   Parser.getNodeVal(self, mlTs, "algorithm")
        # parse pre parameters (hash table)
        methods     =   Parser.getNodeTag(self, mlTs, "methods")
        mtdNodeList =   Parser.getNodeList(self, methods, "method")
        preParas    =   self.__preParas(mtdNodeList)
        # get test suite nodes list
        tsNodeList  =   Parser.getNodeList(self, mlTs, "test_suite")
        # init a MutiTestSuite instance
        mlTs        =   multi_testsuite.MultiTestSuite(self.configer, self.analyticsTools, \
                                      self.datasets, self.paraHandler, algorithm, preParas, \
                                      tsNodeList, tsType, self.caseScheduleFileHd, \
                                      self.caseSQLFileHd, self.testSuiteSqlHd, self.testItemSqlHd)
        mlTs.GenCases(debug)
예제 #13
0
    def GenCases(self, debug = False):
        """Generate cases for each test case xml spec file

        Parse the root tag <test_suites>.
        <test_type> has two options: feature and performance. For performance test,
        each test case should be wraped by gpstart and gpstop
        output:
            1) one case schedule file which include gpstart/gpstop and test case file name,
               as caseScheduleF in __init__'s para
            2) multiply test case file with executor commands
            3) one sql output file, as caseSQLF in __init__'s para
            4) one sql file of inserting test suite, as tsSqlF in __init__'s para
            5) one sql file of inserting test case, as tiSqlF in __init__'s para
        """

        ts          =   Parser.getNodeTag(self, self.xmlDoc, "test_suites")
        tsType      =   Parser.getNodeVal(self, ts, "test_type")
        mulTsList   =   Parser.getNodeList(self, ts, "multi_test_suites")
        # loop to parse each multi test suite
        for mulTs in mulTsList:
            self.__multiTestSuite(mulTs, tsType, debug)
예제 #14
0
            self.caseFileHd.write(madlibCMD + "\n")

            if debug is True:
                try:
                    exe = template_executor.Executor(madlibCMD.split(), None)
                    exe.parseArgument()
                    if exeIteration == 0:
                        self.caseSQLFileHd.write("-- method: " +
                                                 targetBaseName + "\n")
                        self.caseSQLFileHd.write(exe.generateSQL() + "\n\n")
                except Exception, exp:
                    print str(exp)

            # try to add tear down operation, this step is optional
            try:
                teardown = Parser.getNodeVal(self, mtd, "tear_down")
                teardownSQL = "psql " + teardown
                self.caseFileHd.write(teardownSQL)
                self.caseSQLFileHd.write(teardownSQL)
            except Exception, exp:
                pass

            self.caseFileHd.write("\n")

            if exeIteration == 0:
                self.__writeTestItemsSql(targetBaseName, self.algorithm,
                mtdName, ",".join(caseItemPara), varValues, varNames, \
                caseItemDataset,caseItemRows)

        self.caseFileHd.write("\n")
예제 #15
0
            madlibCMD = " ".join(caseItem)
            self.caseFileHd.write(madlibCMD + "\n")

            if debug is True:
                try:
                    exe = template_executor.Executor(madlibCMD.split(), None)
                    exe.parseArgument()
                    if exeIteration == 0:
                        self.caseSQLFileHd.write( "-- method: " + targetBaseName + "\n")
                        self.caseSQLFileHd.write( exe.generateSQL() + "\n\n")
                except Exception, exp:
                    print str(exp)

            # try to add tear down operation, this step is optional
            try:
                teardown = Parser.getNodeVal(self, mtd, "tear_down")
                teardownSQL = "psql " + teardown
                self.caseFileHd.write(teardownSQL)
                self.caseSQLFileHd.write( teardownSQL )
            except Exception, exp:
                pass

            self.caseFileHd.write("\n")

            if exeIteration == 0:
                self.__writeTestItemsSql(targetBaseName, self.algorithm,
                mtdName, ",".join(caseItemPara), varValues, varNames, \
                caseItemDataset,caseItemRows)

        self.caseFileHd.write("\n")