示例#1
0
文件: compare.py 项目: Scemoon/lpts
def compare(xmls_list,
            resultDir=os.getcwd(),
            reportFile=None,
            names=[],
            tools=[],
            reportType="xls",
            chart=False):
    '''对比多个result xml文件, 如果指定tools,那么只对比tools,但tools必须包含在所有xmls文件中
    @param xmls: results xml ,type list
    @param names: 自定义对比名称,用于输出显示,type list, default []
    @param tools: 指定对比测试工具,type list, default [] '''

    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建对比测试报告
                        ~~~~~~~~~~~~~~~~~~~~''')

    #检查resultDir
    if resultDir is None:
        resultDir = os.getcwd()

    if not os.path.isdir(resultDir):
        os.makedirs(resultDir, mode=644)

    if reportFile is None:
        reportFile = "LPTCmpResult_%s.%s" % (
            datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S'), reportType)
    elif reportFile.split(".")[-1] in ('txt', 'xls', 'doc', 'pdf'):
        reportFile = reportFile
    else:
        reportFile = "%s.%s" % (reportFile, reportType)

    report_abs_file = os.path.join(resultDir, reportFile)

    lptlog.info("@@@@@@@--指定对比工具: %s" % utils.list_to_str(tools))
    lptlog.info("@@@@@@@--对比对象分别为: %s " % utils.list_to_str(names))
    lptlog.info("@@@@@@@--对比测试报告类型: %s" % reportType)
    lptlog.info("@@@@@@@--对比测试报告: %s" % report_abs_file)
    if reportType == "xls":
        cmpobject = lptreport.XlsCompare(xmls_list,
                                         report_abs_file,
                                         input_tools=tools,
                                         input_name_list=names)
        cmpobject.cmp_tools(chart=chart)
        cmpobject.save()
    else:
        lptlog.warning(" %s 对比测试报告正在开发中..." % reportType)

    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          创建对比测试报告结束
                        ~~~~~~~~~~~~~~~~~~~~''')
示例#2
0
文件: unixbench.py 项目: aszhou/lpts
 def run(self):
     tool_node = self.check_tool_result_node()
         
     lptlog.info("----------开始获取测试参数")
     
     self.parallels =  self.get_config_array(tool_node, "parallel", [1])
     lptlog.info("测试并行组: %s" % utils.list_to_str(self.parallels))
     self.times = self.get_config_value(tool_node, "times", 10, valueType=int)
     if self.times < 3:
         self.times = 10
         lptlog.warning("测试次数必须大于3, 将采用默认值10")
     lptlog.info("测试次数: %d" % self.times)
            
     cmd = "./Run"
     
         #运行unixbench程序,进入unixbench 根目录, 清理环境
     os.chdir(self.tar_src_dir)
     utils.system("rm -rf results/*")
     
     #执行测试程序
     #执行测试脚本
     lptlog.info("---------运行测试脚本")
     #添加测试次数
     args_list=["-i", "%d" %self.times]
   
  #添加并行数
     for parallel in self.parallels:
         args_list.append("-c")
         args_list.append("%d" % parallel)
     
     self.mainParameters["parameters"] = " ".join([cmd]+args_list)
     utils.run_shell2(cmd, args_list=args_list, file=os.devnull)
     #utils.system_output(cmd, args=args_list)
      #返回根目录
     os.chdir(self.lpt_root)
示例#3
0
文件: jobs.py 项目: zhyh329/lpts
def add_job(tools_list,
            jobs_xml=JOBS_XML,
            parameter=default_parameter,
            job_attrib={},
            resultXmlName="results"):
    '''
    创建新任务
    @param tools_list:工具列表
    @type tools_list: list 
    '''
    try:
        lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建测试任务
                        ~~~~~~~~~~~~~~~~~~~~''')
        lptlog.debug("指定测试工具集: %s" % utils.list_to_str(tools_list))
        lptxml.add_job(jobs_xml,
                       tools_list,
                       parameter,
                       job_attrib=job_attrib,
                       resultXmlName=resultXmlName)
        lptlog.info('''
                        ++++++++++++++++++
                         创建测试任务:PASS
                        ++++++++++++++++++''')
    except CreateJobException, e:
        lptlog.debug(e)
        lptlog.error('''
                        ++++++++++++++++++
                         创建测试任务:FAIL
                        ++++++++++++++++++''')
示例#4
0
文件: pingpong.py 项目: Scemoon/lpts
    def run_once(self):

        tool_node = self.check_tool_result_node()
        lptlog.info("----------开始获取测试参数")

        self.games = self.get_config_array(tool_node, "games", [64,128,256])
        lptlog.info("测试games组: %s" % lutils.list_to_str(self.games))
        self.times = self.get_config_value(tool_node, "times", 18, valueType=int)
        lptlog.info("测试次数: %s" % self.times)

        cmd = "./pingpong.sh"

           #执行测试程序
        os.chdir(self.srcdir)
        self.mainParameters["parameters"] = " ".join(["pprun", '-c', "%d" % self.times, '-t', "games" ])
        lptlog.info("----------运行测试脚本")
        for game in self.games:
            lptlog.info("执行 %s games" % game)
            args = ['-c', "%d" % self.times, '-t', "%d" % game, '-d', self.resultsdir]
            result_tmp_file = os.path.join(self.resultsdir, "%d.pingpong" % game)
	    command = cmd + " " + " ".join(args)
	    utils.system(command)
            #self.results_path = os.path.join(self.resultsdir, 'stream_%d_%d.out' % (parallel, iter+1))
            #utils.open_write_close(result_tmp_file, self.report_data)

            #lutils.run_shell2(cmd, args_list=args, file=result_tmp_file)
            lptlog.info("%d games测试数据保存到: %s" % (game, result_tmp_file))

        self.create_result()
	 #save to result.xml
        self.save_results_to_xml()
        #create txt report
        self.txt_report()
示例#5
0
文件: unixbench.py 项目: Scemoon/lpts
 def run(self):
     tool_node = self.check_tool_result_node()
         
     lptlog.info("----------开始获取测试参数")
     
     self.parallels =  self.get_config_array(tool_node, "parallel", [1])
     lptlog.info("测试并行组: %s" % utils.list_to_str(self.parallels))
     self.times = self.get_config_value(tool_node, "times", 10, valueType=int)
     if self.times < 3:
         self.times = 10
         lptlog.warning("测试次数必须大于3, 将采用默认值10")
     lptlog.info("测试次数: %d" % self.times)
            
     cmd = "./Run"
     
         #运行unixbench程序,进入unixbench 根目录, 清理环境
     os.chdir(self.tar_src_dir)
     utils.system("rm -rf results/*")
     
     #执行测试程序
     #执行测试脚本
     lptlog.info("---------运行测试脚本")
     #添加测试次数
     args_list=["-i", "%d" %self.times]
   
  #添加并行数
     for parallel in self.parallels:
         args_list.append("-c")
         args_list.append("%d" % parallel)
     
     self.mainParameters["parameters"] = " ".join([cmd]+args_list)
     utils.run_shell2(cmd, args_list=args_list, file=os.devnull)
     #utils.system_output(cmd, args=args_list)
      #返回根目录
     os.chdir(self.lpt_root)
示例#6
0
文件: pingpong.py 项目: Scemoon/lpts
    def run(self):

        tool_node = self.check_tool_result_node()
        lptlog.info("----------开始获取测试参数")

        self.games = self.get_config_array(tool_node, "games", [64, 128, 256])
        lptlog.info("测试games组: %s" % utils.list_to_str(self.games))
        self.times = self.get_config_value(tool_node,
                                           "times",
                                           18,
                                           valueType=int)
        lptlog.info("测试次数: %s" % self.times)

        cmd = self.processBin2

        #执行测试程序
        lptlog.info("----------运行测试脚本")
        self.mainParameters["parameters"] = " ".join(
            ["pprun", '-c', "%d" % self.times, '-t', "games"])
        for game in self.games:
            lptlog.info("执行 %s games" % game)
            args = [
                '-b', self.bin_dir, '-c',
                "%d" % self.times, '-t',
                "%d" % game, '-d', self.tmp_dir
            ]
            result_tmp_file = os.path.join(self.tmp_dir, "%d.pingpong" % game)
            utils.run_shell2(cmd, args_list=args, file=result_tmp_file)
            lptlog.info("%d games测试数据保存到: %s" % (game, result_tmp_file))
示例#7
0
文件: compare.py 项目: Scemoon/lpts
def compare(xmls_list, resultDir=os.getcwd() ,reportFile=None, names=[], tools=[], reportType="xls", chart=False):
    '''对比多个result xml文件, 如果指定tools,那么只对比tools,但tools必须包含在所有xmls文件中
    @param xmls: results xml ,type list
    @param names: 自定义对比名称,用于输出显示,type list, default []
    @param tools: 指定对比测试工具,type list, default [] '''
    
    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建对比测试报告
                        ~~~~~~~~~~~~~~~~~~~~''')
    
    #检查resultDir
    if resultDir is None:
        resultDir = os.getcwd()
        
    if not  os.path.isdir(resultDir):
        os.makedirs(resultDir, mode=644)
        
    if  reportFile is None:
        reportFile = "LPTCmpResult_%s.%s" %(datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S'), reportType)
    elif reportFile.split(".")[-1] in ('txt', 'xls', 'doc', 'pdf'):
        reportFile = reportFile
    else:
        reportFile = "%s.%s" %(reportFile, reportType)
        
    report_abs_file = os.path.join(resultDir, reportFile)
    
    lptlog.info("@@@@@@@--指定对比工具: %s" % utils.list_to_str(tools))
    lptlog.info("@@@@@@@--对比对象分别为: %s " % utils.list_to_str(names))
    lptlog.info("@@@@@@@--对比测试报告类型: %s" % reportType)
    lptlog.info("@@@@@@@--对比测试报告: %s" % report_abs_file)
    if reportType == "xls":
        cmpobject = lptreport.XlsCompare(xmls_list, report_abs_file, input_tools=tools, input_name_list=names)
        cmpobject.cmp_tools(chart=chart)
        cmpobject.save()
    else:
        lptlog.warning(" %s 对比测试报告正在开发中..."  % reportType)
        
    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          创建对比测试报告结束
                        ~~~~~~~~~~~~~~~~~~~~''')
示例#8
0
文件: unixbench.py 项目: zhyh329/lpts
    def run_once(self):
        tool_node = self.check_tool_result_node()

        lptlog.info("----------开始获取测试参数")

        self.parallels = self.get_config_array(tool_node, "parallel", [1])
        lptlog.info("测试并行组: %s" % lutils.list_to_str(self.parallels))
        self.times = self.get_config_value(tool_node,
                                           "times",
                                           10,
                                           valueType=int)
        if self.times < 3:
            self.times = 10
            lptlog.warning("测试次数必须大于3, 将采用默认值10")
        lptlog.info("测试次数: %d" % self.times)

        cmd = "./Run"

        #执行测试脚本
        lptlog.info("---------运行测试脚本")

        #shutil.rmtree(self.resultsdir)
        os.chdir(self.srcdir)

        #添加测试次数
        args_list = ["-i", "%d" % self.times]

        #添加并行数
        for parallel in self.parallels:
            args_list.append("-c")
            args_list.append("%d" % parallel)
        self.mainParameters["parameters"] = " ".join([cmd] + args_list)
        #utils.run_shell2(cmd, args_list=args_list, file=os.devnull)
        #utils.system_output(cmd, args=args_list)
        #返回根目录

        vars = 'UB_TMPDIR="%s" UB_RESULTDIR="%s"' % (self.tmpdir,
                                                     self.resultsdir)
        self.report_data = utils.system_output(vars + ' %s ' % cmd +
                                               ' '.join(args_list))
        self.results_path = os.path.join(self.resultsdir,
                                         'raw_output_%s' % self.iteration)
        utils.open_write_close(self.results_path, self.report_data)

        #数据处理
        self.create_result()
        self.save_results_to_xml()
        #create txt report
        self.txt_report()
示例#9
0
文件: report.py 项目: Scemoon/lpts
def report(result_xml,
           resultDir,
           tools_list=None,
           reportname=None,
           format='xls',
           chart=False):
    '''report 方法'''
    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建测试报告
                        ~~~~~~~~~~~~~~~~~~~~''')
    if reportname is None:
        reportname = "LPTResult_%s.%s" % (
            datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S'), format)
    elif reportname.split(".")[-1] in ('txt', 'xls', 'doc', 'pdf'):
        reportname = reportname
    else:
        reportname = "%s.%s" % (reportname, format)

    report_file = os.path.join(resultDir, reportname)

    if not tools_list:
        tools_list = lptxml.get_result_tools(result_xml)
        if tools_list is None:
            lptlog.warning("%s 中无测试数据" % result_xml)
            raise ValueError("result.xml: %s" % result_xml)

    lptlog.info("测试报告工具集:  %s" % utils.list_to_str(tools_list))
    lptlog.info("测试报告格式: %s" % format)
    lptlog.info("测试报告名称:  %s" % reportname)

    #lptreport.report(result_xml, tools_list, report_file, format)
    if format == "xls":
        lptreport.xls_report(result_xml, tools_list, report_file, chart=chart)
    elif format == "txt":
        lptreport.txt_report(result_xml, tools_list, report_file)
    else:
        pass

    if format == 'txt':
        lptlog.info("Report File: %s*.txt" % report_file.split(".txt")[0])
    else:
        lptlog.info("Report File: %s" % report_file)

    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          创建测试报告结束
                        ~~~~~~~~~~~~~~~~~~~~''')
示例#10
0
文件: unixbench.py 项目: aszhou/lpts
    def run_once(self):
        tool_node = self.check_tool_result_node()

        lptlog.info("----------开始获取测试参数")

        self.parallels =  self.get_config_array(tool_node, "parallel", [1])
        lptlog.info("测试并行组: %s" % lutils.list_to_str(self.parallels))
        self.times = self.get_config_value(tool_node, "times", 10, valueType=int)
        if self.times < 3:
            self.times = 10
            lptlog.warning("测试次数必须大于3, 将采用默认值10")
        lptlog.info("测试次数: %d" % self.times)

        cmd = "./Run"

        #执行测试脚本
        lptlog.info("---------运行测试脚本")

	#shutil.rmtree(self.resultsdir)
        os.chdir(self.srcdir)

        #添加测试次数
        args_list=["-i", "%d" %self.times]

        #添加并行数
        for parallel in self.parallels:
            args_list.append("-c")
            args_list.append("%d" % parallel)
        self.mainParameters["parameters"] = " ".join([cmd]+args_list)
        #utils.run_shell2(cmd, args_list=args_list, file=os.devnull)
        #utils.system_output(cmd, args=args_list)
         #返回根目录

        vars = 'UB_TMPDIR="%s" UB_RESULTDIR="%s"' % (self.tmpdir,
                                                     self.resultsdir)
        self.report_data = utils.system_output(vars + ' %s ' % cmd  + ' '.join(args_list))
        self.results_path = os.path.join(self.resultsdir,
                                         'raw_output_%s' % self.iteration)
        utils.open_write_close(self.results_path, self.report_data)

        #数据处理
        self.create_result()
        self.save_results_to_xml()
        #create txt report
        self.txt_report()
示例#11
0
文件: report.py 项目: Scemoon/lpts
def report(result_xml, resultDir, tools_list=None, 
            reportname=None, format='xls', chart=False):
    '''report 方法'''
    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建测试报告
                        ~~~~~~~~~~~~~~~~~~~~''')
    if  reportname is None:
        reportname = "LPTResult_%s.%s" %(datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S'), format)
    elif reportname.split(".")[-1] in ('txt', 'xls', 'doc', 'pdf'):
        reportname = reportname
    else:
        reportname = "%s.%s" %(reportname, format)
        
    report_file = os.path.join(resultDir, reportname)
    
    if not tools_list:
        tools_list = lptxml.get_result_tools(result_xml)
        if tools_list is None :
            lptlog.warning("%s 中无测试数据" % result_xml)
            raise ValueError, "result.xml: %s" % result_xml
        
    lptlog.info("测试报告工具集:  %s" % utils.list_to_str(tools_list))
    lptlog.info("测试报告格式: %s" % format)
    lptlog.info("测试报告名称:  %s" % reportname)
        
    #lptreport.report(result_xml, tools_list, report_file, format)
    if format == "xls":
        lptreport.xls_report(result_xml, tools_list, report_file, chart=chart)
    elif format == "txt":
        lptreport.txt_report(result_xml, tools_list, report_file)
    else:
        pass    
        
    if format=='txt':
        lptlog.info("Report File: %s*.txt" % report_file.split(".txt")[0])
    else:
         lptlog.info("Report File: %s" % report_file)
        
    lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          创建测试报告结束
                        ~~~~~~~~~~~~~~~~~~~~''')
示例#12
0
    def run_once(self):

        tool_node = self.check_tool_result_node()
        lptlog.info("----------开始获取测试参数")

        self.games = self.get_config_array(tool_node, "games", [64, 128, 256])
        lptlog.info("测试games组: %s" % lutils.list_to_str(self.games))
        self.times = self.get_config_value(tool_node,
                                           "times",
                                           18,
                                           valueType=int)
        lptlog.info("测试次数: %s" % self.times)

        cmd = "./pingpong.sh"

        #执行测试程序
        os.chdir(self.srcdir)
        self.mainParameters["parameters"] = " ".join(
            ["pprun", '-c', "%d" % self.times, '-t', "games"])
        lptlog.info("----------运行测试脚本")
        for game in self.games:
            lptlog.info("执行 %s games" % game)
            args = [
                '-c',
                "%d" % self.times, '-t',
                "%d" % game, '-d', self.resultsdir
            ]
            result_tmp_file = os.path.join(self.resultsdir,
                                           "%d.pingpong" % game)
            command = cmd + " " + " ".join(args)
            utils.system(command)
            #self.results_path = os.path.join(self.resultsdir, 'stream_%d_%d.out' % (parallel, iter+1))
            #utils.open_write_close(result_tmp_file, self.report_data)

            #lutils.run_shell2(cmd, args_list=args, file=result_tmp_file)
            lptlog.info("%d games测试数据保存到: %s" % (game, result_tmp_file))

        self.create_result()
        #save to result.xml
        self.save_results_to_xml()
        #create txt report
        self.txt_report()
示例#13
0
文件: pingpong.py 项目: Scemoon/lpts
 def run(self):
      
     tool_node = self.check_tool_result_node()
     lptlog.info("----------开始获取测试参数")
           
     self.games = self.get_config_array(tool_node, "games", [64,128,256])
     lptlog.info("测试games组: %s" % utils.list_to_str(self.games))
     self.times = self.get_config_value(tool_node, "times", 18, valueType=int)
     lptlog.info("测试次数: %s" % self.times)        
                                 
     cmd = self.processBin2
              
        #执行测试程序
     lptlog.info("----------运行测试脚本")
     self.mainParameters["parameters"] = " ".join(["pprun", '-c', "%d" % self.times, '-t', "games" ])
     for game in self.games:
         lptlog.info("执行 %s games" % game)
         args = ['-b', self.bin_dir, '-c', "%d" % self.times, '-t', "%d" % game, '-d', self.tmp_dir]
         result_tmp_file = os.path.join(self.tmp_dir, "%d.pingpong" % game)
         utils.run_shell2(cmd, args_list=args, file=result_tmp_file)
         lptlog.info("%d games测试数据保存到: %s" % (game, result_tmp_file))
示例#14
0
文件: jobs.py 项目: Scemoon/lpts
def add_job(tools_list, jobs_xml=JOBS_XML, parameter=default_parameter, job_attrib={}, resultXmlName="results"):
    '''
    创建新任务
    @param tools_list:工具列表
    @type tools_list: list 
    '''
    try:
        lptlog.info('''
                        ~~~~~~~~~~~~~~~~~~~~
                          开始创建测试任务
                        ~~~~~~~~~~~~~~~~~~~~''')
        lptlog.debug("指定测试工具集: %s" % utils.list_to_str(tools_list))
        lptxml.add_job(jobs_xml, tools_list, parameter, job_attrib=job_attrib, resultXmlName=resultXmlName)
        lptlog.info('''
                        ++++++++++++++++++
                         创建测试任务:PASS
                        ++++++++++++++++++''')
    except CreateJobException, e:
        lptlog.debug(e)
        lptlog.error('''
                        ++++++++++++++++++
                         创建测试任务:FAIL
                        ++++++++++++++++++''')
示例#15
0
文件: iozone.py 项目: Scemoon/lpts
    def run(self):

        tool_node = self.check_tool_result_node()

        lptlog.info("----------开始获取测试参数")

        speed_mount_status = False
        args = ["-i", "0", "-i", "1", "-i", "2"]

        self.testmode = self.get_config_value(tool_node,
                                              "testmode",
                                              os.path.join(
                                                  self.tmp_dir, "speed"),
                                              valueType=str)
        if self.testmode not in ("speed", "throughput"):
            self.testmode = "speed"
        lptlog.info("测试模式: %s" % self.testmode)

        testdir = self.get_config_testdir(tool_node)
        #获取设备,并尝试挂载到testdir,返回True或者False
        devices_status = self.get_config_devices(tool_node, testdir)

        filesize = self.get_config_value(tool_node, "filesize", "10g")
        if not utils.check_size_format(filesize):
            lptlog.warning("%s 格式 error,将采用默认大小10g" % filesize)
            filesize = "10g"
        lptlog.info("测试文件大小: %s" % filesize)
        args.append("-s")
        args.append(filesize)

        blocksize = self.get_config_value(tool_node, "blocksize", "4k")
        if not utils.check_size_format(blocksize, match="[\d]+k?"):
            lptlog.warning("blocksize=%s 格式 error,将采用默认大小4k" % blocksize)

        lptlog.info("测试块大小: %s" % blocksize)
        args.append("-r")
        args.append(blocksize)

        self.times = self.get_config_value(tool_node,
                                           "times",
                                           5,
                                           valueType=int)
        direct_status = self.get_config_value(tool_node,
                                              "directio",
                                              "False",
                                              valueType=str)
        if direct_status == "True":
            args.append("-I")
            lptlog.info("DirectIO: True")

        self.parallel_type = self.get_config_value(tool_node,
                                                   "parallel_type",
                                                   "process",
                                                   valueType=str)
        if self.parallel_type not in ("threads", "process"):
            self.parallel_type = "process"
        lptlog.info("测试并行方式: %s" % self.parallel_type)

        self.parallels = self.get_config_array(tool_node, "parallel", [4])
        lptlog.info("测试并行: %s" % utils.list_to_str(self.parallels))

        if self.testmode == "speed":
            self.parallels = [1]
        #运行测试程序,要求保存结果到tmp目录,result_file命令为iozone_$parallel_type_$iter.out
        self.mainParameters["parameters"] = " ".join(["iozone"] + args)
        lptlog.info("----------运行测试脚本")
        for parallel in self.parallels:
            parallel_args = []
            lptlog.info("%s 并行测试" % parallel)
            if self.testmode == 'throughput':
                parallel_args.append("-t")
                parallel_args.append(str(parallel))
                parallel_args.append("-F")
                for num in range(parallel):
                    parallel_args.append(
                        os.path.join(testdir, "iozone_%s_%s_%s") %
                        (self.testmode, parallel, num + 1))

                if self.parallel_type == "threads":
                    parallel_args.append("-T")

            else:
                # if devices_status:
                #  parallel_args.append("-U")
                #   parallel_args.append(testdir)

                parallel_args.append("-f")
                parallel_args.append("%s/iozone_test_file" % testdir)

            for iter in range(self.times):
                lptlog.info("第 %d 次测试" % (iter + 1))
                iozone_iter_result_file = os.path.join(
                    self.tmp_dir,
                    "iozone_%s_%d_%d.out" % (self.testmode, parallel,
                                             (iter + 1)))

                #清除缓冲
                method.clean_buffer()
                utils.run_shell2(self.processBin,
                                 args_list=args + parallel_args,
                                 file=iozone_iter_result_file)
                lptlog.info("%s %s方式, %s并行, 第%d次测试数据保存在 %s 中" %
                            (self.tool, self.testmode, parallel,
                             (iter + 1), iozone_iter_result_file))
示例#16
0
 def run(self):
 
     tool_node = self.check_tool_result_node()
         
     lptlog.info("----------获取测试参数")
     
     cmd = self.processBin
     #args = ['-B', 'fileio',  '-c', os.path.join(self.tmp_dir, 'loadfiles/client.txt'), '-R', '999999.99']
     args = ['-c', os.path.join(self.tmp_dir, 'client.txt'), '-R', '999999.99']
     
         #获取测试目录
     testdir = self.get_config_testdir(tool_node)
     args.append("-D")
     args.append(testdir)
         
         #获取设备,并尝试挂载到testdir
     devices_status = self.get_config_devices(tool_node, testdir)
         
     self.times = self.get_config_value(tool_node, "times", 5, valueType=int)
     lptlog.info("测试次数: %d " % self.times)
     
     
     self.parallel_type = self.get_config_value(tool_node, "parallel_type", "process", valueType=str)
     lptlog.info("测试并行方式: %s" % self.parallel_type)
     
     self.parallels = self.get_config_array(tool_node, "parallel", [4])
     lptlog.info("测试并行: %s" % utils.list_to_str(self.parallels))
     if self.parallel_type  not in ("threads", "process"):
         self.parallel_type = "process"
     runtime = self.get_config_value(tool_node, 'runtime', 300, valueType=int)
     lptlog.info("测试时长: %s s" % runtime)
     args.append("-t")
     args.append("%d" % runtime)
     
         
     #warnuptime = self.get_config_value(tool_node, 'warnuptime', 120, valueType=int)
     #if warnuptime > runtime:
     #    lptlog.warning("warnuptime 大于 runtime, warnuptime = runtime/5")
     #    warnuptime = runtime/5
     #lptlog.info("预热时长: %s s" % warnuptime)
     #args.append("--warmup=%d" % warnuptime)
     
     self.mainParameters["parameters"] = " ".join(["dbench"]+args)
     lptlog.info("----------运行测试脚本")
     for parallel in self.parallels:
         lptlog.info("运行 %s 并行" % parallel)
         parallel_args = []
             
         if self.parallel_type == "threads":
             parallel_args.append("--clients-per-process=%d" % parallel)
             parallel_args.append("1")
         else:
             parallel_args.append(str(parallel))
             
         for iter in range(self.times):
             lptlog.info("第 %s 次测试" % (iter+1))
             tmp_file = os.path.join(self.tmp_dir, "%s_%s_%s.out" % (self.tool, parallel, iter+1))
                
                 #清除buffer
             method.clean_buffer()
             utils.run_shell2(self.processBin, args_list=args+parallel_args, file=tmp_file)
             lptlog.info("%d 并行  第 %d 次测试,测试数据保存在: %s " % (parallel, iter+1, tmp_file))
示例#17
0
文件: iozone.py 项目: Scemoon/lpts
    def run(self):
        
        tool_node = self.check_tool_result_node()
            
        lptlog.info("----------开始获取测试参数")
        
        speed_mount_status=False
        args = ["-i", "0", "-i" ,"1", "-i", "2"]
    
        self.testmode = self.get_config_value(tool_node, "testmode", os.path.join(self.tmp_dir, "speed"), valueType=str)
        if  self.testmode not in ("speed", "throughput"):
            self.testmode = "speed"
        lptlog.info("测试模式: %s" % self.testmode)
        
        testdir = self.get_config_testdir(tool_node)
            #获取设备,并尝试挂载到testdir,返回True或者False
        devices_status = self.get_config_devices(tool_node, testdir)
            
        filesize = self.get_config_value(tool_node, "filesize", "10g")
        if not utils.check_size_format(filesize):
            lptlog.warning("%s 格式 error,将采用默认大小10g" % filesize)
            filesize = "10g"
        lptlog.info("测试文件大小: %s" % filesize)     
        args.append("-s")
        args.append(filesize)
            
        blocksize = self.get_config_value(tool_node, "blocksize", "4k")
        if not utils.check_size_format(blocksize, match="[\d]+k?"):
            lptlog.warning("blocksize=%s 格式 error,将采用默认大小4k" % blocksize)
            
        lptlog.info("测试块大小: %s" % blocksize)
        args.append("-r")
        args.append(blocksize)
            
        self.times = self.get_config_value(tool_node, "times", 5, valueType=int)
	direct_status = self.get_config_value(tool_node, "directio", "False", valueType=str)
	if direct_status == "True":
	    args.append("-I")
	    lptlog.info("DirectIO: True")
        
        self.parallel_type = self.get_config_value(tool_node, "parallel_type", "process", valueType=str)
        if self.parallel_type  not in ("threads", "process"):
            self.parallel_type = "process"
        lptlog.info("测试并行方式: %s" % self.parallel_type)
        
        self.parallels = self.get_config_array(tool_node, "parallel", [4])
        lptlog.info("测试并行: %s" % utils.list_to_str(self.parallels))
        
        if self.testmode == "speed":
            self.parallels = [1]
        #运行测试程序,要求保存结果到tmp目录,result_file命令为iozone_$parallel_type_$iter.out
        self.mainParameters["parameters"] = " ".join(["iozone"]+args)
        lptlog.info("----------运行测试脚本")
        for parallel in self.parallels:
            parallel_args = []
            lptlog.info("%s 并行测试" % parallel)
            if self.testmode == 'throughput':
                parallel_args.append("-t")
                parallel_args.append(str(parallel))
                parallel_args.append("-F")
                for num in range(parallel):
                    parallel_args.append(os.path.join(testdir, "iozone_%s_%s_%s") % (self.testmode, parallel, num+1))
                
                if self.parallel_type == "threads":
                    parallel_args.append("-T")
         
            else:
               # if devices_status:
                  #  parallel_args.append("-U")
                 #   parallel_args.append(testdir)
                    
                parallel_args.append("-f")
                parallel_args.append("%s/iozone_test_file" % testdir) 
        
            for iter in range(self.times):
                lptlog.info("第 %d 次测试" % (iter+1))
                iozone_iter_result_file = os.path.join(self.tmp_dir, "iozone_%s_%d_%d.out" % (self.testmode, parallel, (iter+1)) )

                    #清除缓冲
                method.clean_buffer()
                utils.run_shell2(self.processBin, args_list=args+parallel_args, file=iozone_iter_result_file)
                lptlog.info("%s %s方式, %s并行, 第%d次测试数据保存在 %s 中"  % (self.tool, self.testmode, parallel, (iter+1), iozone_iter_result_file))
示例#18
0
 def run(self):
 
     tool_node = self.check_tool_result_node()
         
     lptlog.info("----------获取测试参数")
     
     cmd = self.processBin
     args = ['-B', 'fileio',  '-c', os.path.join(self.tmp_dir, 'loadfiles/client.txt'), '-R', '999999.99']
     
         #获取测试目录
     testdir = self.get_config_testdir(tool_node)
     args.append("-D")
     args.append(testdir)
         
         #获取设备,并尝试挂载到testdir
     devices_status = self.get_config_devices(tool_node, testdir)
         
     self.times = self.get_config_value(tool_node, "times", 5, valueType=int)
     lptlog.info("测试次数: %d " % self.times)
     
     
     self.parallel_type = self.get_config_value(tool_node, "parallel_type", "process", valueType=str)
     lptlog.info("测试并行方式: %s" % self.parallel_type)
     
     self.parallels = self.get_config_array(tool_node, "parallel", [4])
     lptlog.info("测试并行: %s" % utils.list_to_str(self.parallels))
     if self.parallel_type  not in ("threads", "process"):
         self.parallel_type = "process"
     runtime = self.get_config_value(tool_node, 'runtime', 300, valueType=int)
     lptlog.info("测试时长: %s s" % runtime)
     args.append("-t")
     args.append("%d" % runtime)
     
         
     warnuptime = self.get_config_value(tool_node, 'warnuptime', 120, valueType=int)
     if warnuptime > runtime:
         lptlog.warning("warnuptime 大于 runtime, warnuptime = runtime/5")
         warnuptime = runtime/5
     lptlog.info("预热时长: %s s" % warnuptime)
     args.append("--warmup=%d" % warnuptime)
     
     self.mainParameters["parameters"] = " ".join(["dbench"]+args)
     lptlog.info("----------运行测试脚本")
     for parallel in self.parallels:
         lptlog.info("运行 %s 并行" % parallel)
         parallel_args = []
             
         if self.parallel_type == "threads":
             parallel_args.append("--clients-per-process=%d" % parallel)
             parallel_args.append("1")
         else:
             parallel_args.append(str(parallel))
             
         for iter in range(self.times):
             lptlog.info("第 %s 次测试" % (iter+1))
             tmp_file = os.path.join(self.tmp_dir, "%s_%s_%s.out" % (self.tool, parallel, iter+1))
                
                 #清除buffer
             method.clean_buffer()
             utils.run_shell2(self.processBin, args_list=args+parallel_args, file=tmp_file)
             lptlog.info("%d 并行  第 %d 次测试,测试数据保存在: %s " % (parallel, iter+1, tmp_file))
示例#19
0
文件: iozone.py 项目: Scemoon/lpts
    def run_once(self, dir=None, args=None):
        """
        Runs IOzone with appropriate parameters, record raw results in a per
        iteration raw output file as well as in the results attribute

        :param dir: IOzone file generation dir.
        :param args: Arguments to the iozone program.
        """
        tool_node = self.check_tool_result_node()

        lptlog.info("----------开始获取测试参数")

        speed_mount_status=False
        args = ["-i", "0", "-i" ,"1", "-i", "2"]

        self.testmode = self.get_config_value(tool_node, "testmode", os.path.join(self.lpttmpdir, "speed"), valueType=str)
        if  self.testmode not in ("speed", "throughput"):
            self.testmode = "speed"
        lptlog.info("测试模式: %s" % self.testmode)

        testdir = self.get_config_testdir(tool_node)
            #获取设备,并尝试挂载到testdir,返回True或者False
        devices_status = self.get_config_devices(tool_node, testdir)

        filesize = self.get_config_value(tool_node, "filesize", "10g")
        if not lutils.check_size_format(filesize):
            lptlog.warning("%s 格式 error,将采用默认大小10g" % filesize)
            filesize = "10g"
        lptlog.info("测试文件大小: %s" % filesize)
        args.append("-s")
        args.append(filesize)

        blocksize = self.get_config_value(tool_node, "blocksize", "4k")
        if not lutils.check_size_format(blocksize, match="[\d]+k?"):
            lptlog.warning("blocksize=%s 格式 error,将采用默认大小4k" % blocksize)

        lptlog.info("测试块大小: %s" % blocksize)
        args.append("-r")
        args.append(blocksize)

        self.times = self.get_config_value(tool_node, "times", 5, valueType=int)
        direct_status = self.get_config_value(tool_node, "directio", "False", valueType=str)
        if direct_status == "True":
            args.append("-I")
            lptlog.info("DirectIO: True")

        self.parallel_type = self.get_config_value(tool_node, "parallel_type", "process", valueType=str)
        if self.parallel_type  not in ("threads", "process"):
            self.parallel_type = "process"
        lptlog.info("测试并行方式: %s" % self.parallel_type)

        self.parallels = self.get_config_array(tool_node, "parallel", [4])
        lptlog.info("测试并行: %s" % lutils.list_to_str(self.parallels))

        if self.testmode == "speed":
            self.parallels = [1]
        #运行测试程序,要求保存结果到tmp目录,result_file命令为iozone_$parallel_type_$iter.out
        self.mainParameters["parameters"] = " ".join(["iozone"]+args)
        lptlog.info("----------运行测试脚本")
        cmd = os.path.join(self.srcdir, 'src', 'current', 'iozone')
        for parallel in self.parallels:
            parallel_args = []
            lptlog.info("%s 并行测试" % parallel)
            if self.testmode == 'throughput':
                parallel_args.append("-t")
                parallel_args.append(str(parallel))
                parallel_args.append("-F")
                for num in range(parallel):
                    parallel_args.append(os.path.join(testdir, "iozone_%s_%s_%s") % (self.testmode, parallel, num+1))

                if self.parallel_type == "threads":
                    parallel_args.append("-T")

            else:
               # if devices_status:
                  #  parallel_args.append("-U")
                 #   parallel_args.append(testdir)

                parallel_args.append("-f")
                parallel_args.append("%s/iozone_test_file" % testdir)

            for iter in range(self.times):
                lptlog.info("第 %d 次测试" % (iter+1))
                iozone_iter_result_file = os.path.join(self.resultsdir, "iozone_%s_%d_%d.out" % (self.testmode, parallel, (iter+1)) )

                    #清除缓冲
                method.clean_buffer()
                lutils.run_shell2(cmd, args_list=args+parallel_args, file=iozone_iter_result_file)
                lptlog.info("%s %s方式, %s并行, 第%d次测试数据保存在 %s 中"  % (self.tool, self.testmode, parallel, (iter+1), iozone_iter_result_file))

        self.create_result()
        #save to result.xml
        self.save_results_to_xml()
        #create txt report
        self.txt_report()
示例#20
0
 def run(self):
 
     tool_node = self.check_tool_result_node()
         
     lptlog.info("----------开始获取测试参数")
     
     cmd = self.processBin
     args = ['-u', os.getuid(),  '-m', 'lpt', '-q']
     
         #获取测试目录
     testdir = self.get_config_value(tool_node, "testdir", os.path.join(self.tmp_dir, "testdir"), valueType=str)
     if os.path.exists(testdir):
         if not os.path.isdir(testdir):
             lptlog.warning("%s 不是有效目录,将采用 /home/%u/testdir 目录" % testdir)
             testdir = "/home/%s/testdir" % getpass.getuser()
             os.makedirs(testdir, stat.S_IRWXU)
     else:
         os.makedirs(testdir, stat.S_IRWXU)
         testdir = os.path.abspath(testdir)
     args.append("-d")
     args.append(testdir)
     lptlog.info("测试目录: %s" % testdir)
         
         #获取设备
         
     devices = self.get_config_value(tool_node, "devices", "Nodevice", valueType=str)
     lptlog.info("测试分区: %s " % devices)
     if not os.path.exists(devices):
         lptlog.debug("%s 不存在" % devices)
     else:
         try:
             if not os.path.ismount(testdir):
                 util.system("mount %s %s" % (devices, testdir))
             else:
                 lptlog.debug("%s 已经挂载到 %s 目录" % (devices, testdir))
         except Exception:
             lptlog.warning("mount %s %s 失败,请确认分区是否已经格式化!!" % (devices, testdir))
     
         #获取测试内存大小
     memory = self.get_config_value(tool_node, "memory", sysinfo.get_memory_size(), valueType=str)
     if not utils.check_size_format(memory, match="\d+[kKmMgGtT]?"):
         lptlog.warning("测试内存配置error, 将采用系统内存")
         memory = sysinfo.get_memory_size()
         lptlog.debug("系统内存大小:%s" % memory)
     
               
        #获取测试文件大小
     filesize = self.get_config_value(tool_node, "filesize", "10g", valueType=str)
     if not utils.check_size_format(filesize, match="\d+[kKmMgGtT]?"):
         lptlog.warning("%s 格式 error,将采用默认大小10g" % filesize)
         filesize = "10g"
         
     if float(utils.custom_format(memory)) * 2 > float(utils.custom_format(filesize)):
         lptlog.warning("测试需求:测试内存*2 小于 文件大小,但实际相反,  将降低测试内存大小为测试文件的1/2" )
         memory = float(utils.custom_format(filesize))/2
         memory = utils.custom_format(memory, auto=True)
     
     lptlog.info("测试内存大小:%s" % memory)
     lptlog.info("测试文件大小: %s" % filesize)           
     args.append("-r")
     args.append(memory)
     
     #获取block大小
     blocksize = self.get_config_value(tool_node, "blocksize", "4k", valueType=str)
     if not utils.check_size_format(blocksize, match="\d+k?"):
         lptlog.warning("blocksize=%s 格式 error,将采用默认大小8k" % blocksize)
         blocksize = "8k"
                  
     args.append("-s")
     args.append("%s:%s" %(filesize, blocksize))
     lptlog.info("测试块大小: %s" % blocksize)
     
     small_files_num = self.get_config_value(tool_node, "small_files_num", 0, valueType=int)                
     small_file_size = self.get_config_value(tool_node, "small_file_size", "1k", valueType=str) 
     if not small_file_size in ("1k", "2k", "4k", "8k", "16k", "32k", "64k", "128k", "256k"):
         lptlog.warning("small_file_size=%s 格式error,请输入整型数字, 将采用默认值1k" % small_file_size)
     else:
         small_file_size = "1k"
     
     small_files_dirs = self.get_config_value(tool_node, "small_files_dirs", 0, valueType=int)
                     
     if small_files_num == "0":
         args.append("-n")
         args.append("0")
     else:
         args.append("-n")
         args.append("%s:%s:%s:%d" %(small_files_num, small_file_size, small_file_size, small_files_dirs))
     
     lptlog.info("小文件数: %s k, 小文件大小: %s, 测试目录: %s" % (small_files_num, small_file_size,  small_files_dirs))
         
     self.times = self.get_config_value(tool_node, "times", 5, valueType=int)
     lptlog.info("测试次数: %d " % self.times)
     args.append("-x")
     args.append("%d" % self.times)            
         
     no_buffer = self.get_config_value(tool_node, "no_buffer", "False", valueType=str)
    
     if no_buffer == "True":
         lptlog.info("no_buffer=True")
         args.append("-b")
    
     direct_io = self.get_config_value(tool_node, "direct_io", "False")
     if direct_io == "True":
         args.append("-D")
         lptlog.info("direct_io=True")
     
            
     #运行测试程序,要求保存结果到tmp目录,result_file命令为iozone_$parallel_type_$iter.out
     self.mainParameters["parameters"] = utils.list_to_str(["bonnie++"]+args, ops=" ")
         #清除缓冲
     method.clean_buffer()
     lptlog.info("----------运行测试脚本")
     utils.run_shell2(self.processBin, args_list=args, file=os.path.join(self.tmp_dir, "bonnie.out"))
     lptlog.info("%s 测试数据保存在 %s 中"  %  (self.tool, os.path.join(self.tmp_dir, "bonnie.out")))
示例#21
0
    def run_once(self, dir=None, args=None):
        """
        Runs IOzone with appropriate parameters, record raw results in a per
        iteration raw output file as well as in the results attribute

        :param dir: IOzone file generation dir.
        :param args: Arguments to the iozone program.
        """
        tool_node = self.check_tool_result_node()

        lptlog.info("----------开始获取测试参数")

        speed_mount_status = False
        args = ["-i", "0", "-i", "1", "-i", "2"]

        self.testmode = self.get_config_value(tool_node,
                                              "testmode",
                                              os.path.join(
                                                  self.lpttmpdir, "speed"),
                                              valueType=str)
        if self.testmode not in ("speed", "throughput"):
            self.testmode = "speed"
        lptlog.info("测试模式: %s" % self.testmode)

        testdir = self.get_config_testdir(tool_node)
        #获取设备,并尝试挂载到testdir,返回True或者False
        devices_status = self.get_config_devices(tool_node, testdir)

        filesize = self.get_config_value(tool_node, "filesize", "10g")
        if not lutils.check_size_format(filesize):
            lptlog.warning("%s 格式 error,将采用默认大小10g" % filesize)
            filesize = "10g"
        lptlog.info("测试文件大小: %s" % filesize)
        args.append("-s")
        args.append(filesize)

        blocksize = self.get_config_value(tool_node, "blocksize", "4k")
        if not lutils.check_size_format(blocksize, match="[\d]+k?"):
            lptlog.warning("blocksize=%s 格式 error,将采用默认大小4k" % blocksize)

        lptlog.info("测试块大小: %s" % blocksize)
        args.append("-r")
        args.append(blocksize)

        self.times = self.get_config_value(tool_node,
                                           "times",
                                           5,
                                           valueType=int)
        direct_status = self.get_config_value(tool_node,
                                              "directio",
                                              "False",
                                              valueType=str)
        if direct_status == "True":
            args.append("-I")
            lptlog.info("DirectIO: True")

        self.parallel_type = self.get_config_value(tool_node,
                                                   "parallel_type",
                                                   "process",
                                                   valueType=str)
        if self.parallel_type not in ("threads", "process"):
            self.parallel_type = "process"
        lptlog.info("测试并行方式: %s" % self.parallel_type)

        self.parallels = self.get_config_array(tool_node, "parallel", [4])
        lptlog.info("测试并行: %s" % lutils.list_to_str(self.parallels))

        if self.testmode == "speed":
            self.parallels = [1]
        #运行测试程序,要求保存结果到tmp目录,result_file命令为iozone_$parallel_type_$iter.out
        self.mainParameters["parameters"] = " ".join(["iozone"] + args)
        lptlog.info("----------运行测试脚本")
        cmd = os.path.join(self.srcdir, 'src', 'current', 'iozone')
        for parallel in self.parallels:
            parallel_args = []
            lptlog.info("%s 并行测试" % parallel)
            if self.testmode == 'throughput':
                parallel_args.append("-t")
                parallel_args.append(str(parallel))
                parallel_args.append("-F")
                for num in range(parallel):
                    parallel_args.append(
                        os.path.join(testdir, "iozone_%s_%s_%s") %
                        (self.testmode, parallel, num + 1))

                if self.parallel_type == "threads":
                    parallel_args.append("-T")

            else:
                # if devices_status:
                #  parallel_args.append("-U")
                #   parallel_args.append(testdir)

                parallel_args.append("-f")
                parallel_args.append("%s/iozone_test_file" % testdir)

            for iter in range(self.times):
                lptlog.info("第 %d 次测试" % (iter + 1))
                iozone_iter_result_file = os.path.join(
                    self.resultsdir,
                    "iozone_%s_%d_%d.out" % (self.testmode, parallel,
                                             (iter + 1)))

                #清除缓冲
                method.clean_buffer()
                lutils.run_shell2(cmd,
                                  args_list=args + parallel_args,
                                  file=iozone_iter_result_file)
                lptlog.info("%s %s方式, %s并行, 第%d次测试数据保存在 %s 中" %
                            (self.tool, self.testmode, parallel,
                             (iter + 1), iozone_iter_result_file))

        self.create_result()
        #save to result.xml
        self.save_results_to_xml()
        #create txt report
        self.txt_report()