Example #1
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")))
Example #2
0
    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))
Example #3
0
    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))
Example #4
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()
Example #5
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()