jmete 取配置文件的行数(二)

接上一篇未解决的问题,继续...

beanshell前置处理器貌似因为作用域的问题解决不了,那这个问题怎么解决呢?

jmeter函数,可以自定义函数调用吗?答案是肯定的,下面附上代码:

其中FileRowColContainer为jmeter内部的类,刚好有文件行数的方法直接拿过来用,博友们也可以像上一篇beanshell中那样自己写

package try.jmeter.functions;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.FileRowColContainer;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.util.JMeterUtils;

public class FileRowCount extends AbstractFunction{
    private Object[] values;
    private FileRowColContainer fc;
    private static final List<String> desc = new LinkedList<String>();

    static
      {
        desc.add(JMeterUtils.getResString("read_file_name"));
      }

    public List<String> getArgumentDesc() {
        // TODO Auto-generated method stub
        return desc;
    }

    public synchronized String execute(SampleResult previousResult, Sampler currentSampler)
            throws InvalidVariableException {
        // TODO Auto-generated method stub
         String myValue = "";
         String fileName = ((CompoundVariable)this.values[0]).execute();
         try {
            fc = new FileRowColContainer(fileName);
            myValue = String.valueOf(fc.getSize());
         } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return myValue;
    }

    public String getReferenceKey() {
        // TODO Auto-generated method stub
        return "__FileRowCount";
    }

    public synchronized void setParameters(Collection<CompoundVariable> parameters)
            throws InvalidVariableException {
        // TODO Auto-generated method stub
        this.values = parameters.toArray();
        checkParameterCount(parameters, 1);
    }

}

注意事项:

1.包名必须包含.functions

2.继承AbstractFunction,实现抽象方法

3.打包成jar包放到jmeter/lib/ext下

查看调用图:

参数文件中共三行,问题终于解决了~~~

时间: 2024-10-21 15:59:26

jmete 取配置文件的行数(二)的相关文章

jmete 取配置文件的行数(一)

群里的小伙伴问了这么一个问题:我有一个参数文件,csv格式的,我想让jmeter自动检测文件行数,然后把文件行数设置为线程数,如何实现? 第一个反应是小伙伴的想法真好,第二反应是等着群里的大牛出来解答问题,大牛可能都在忙加上刷屏一下子问题就看不到了,然后就想想还是自己看看怎么解决... 检测文件行数,首先看看jmeter函数,貌似都不支持.然后就想到了beanshell,写几句代码试试,如下图: 代码如下: 1 var counts = 0; 2 File file = new File("D:

在oracle,mysql,sqlserver中,对要求取表的行数的语法格式

在oracle中如果我们要求取表的前几行,用关键字rownum 例: select * from student where rownum<=10 得出的结果是取出student表中的前10行 在mysql中,用关键字limit 例:select * from student limit 10 得出的结果是取出前10行数据 或    select * from student limit 1,2 表示从第一行后的两行数据,即取出的是第二行与第三行数据 在sqlserver中,用关键字top 例:

C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?

如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组int row = array.Rank;//获取维数,这里指行数int col = array.GetLength(1);//获取指定维度中的元素个数,这里也就是列数了.(0是第一维,1表示的是第二维)int col = array.GetUpperBound(0)+1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示

[Perl系列二-实战] 1. Perl 读取代码的行数

前言 有的时候有这些需求: 1. 统计一个文件的行数 2. 统计一个源代码的有效行数.排除空行和注释行 3. 统一一个目录下各种文件的数量和行数 要达成这些需求,很多语言多可以做到, 但是使用Perl 应该是一个不错的选择 读取文件行数 读取一个文件的总行数(空行和注释都包含) 使用Perl 很简单 open(FILE ,<>); my $lines_counter = 0; while(<>) { $lines_counter += 1; } print "lines:

Java 数组 获取二维数组的行数和列数

对于Object[][] array,array.length返回行数,array[0].length返回列数,元素个数为array.length*array[0].length. 参考资料 在JAVA中怎样求二维数组的行数和列数? 原文地址:https://www.cnblogs.com/WJQ2017/p/8412615.html

获取二维数组里面实际存有数据的行数

写程序时遇到需要获取二维数组里面实际存有数据的行数,看到几篇博客中获取数组行数用的居然是array.Rank方法.这是获取维度的方法啊,我在下面贴出了我找到的正确的方法,很实用. /// <summary> /// 获取二维数组里面实际存有数据的行数 /// </summary> public static List<int> GetHasValueRowIndex(string[,] arr) { var hasValueRowIndex = new List<

c# 获取二维数组的行数和列数

static void Main(string[] args) { int[,] arr = new int[3, 3] { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; Console.WriteLine("行数:" + arr.Rank); Console.WriteLine("列数:" + (arr.GetUpperBound(arr.Rank - 1) + 1)); Console.ReadKey(); }

&lt;转&gt;统计源代码行数的一些实现方法

这个问题的思考其实对于某一种语言而言,基本都能实现,只是简单和复杂而已.而此次我讨论就是只是在linux下面使用了shell和c对源代码进行行 数的讨论.本打算是实现一个python版本的,由于python这块还不是太熟,所以就等以后熟了把这块补上. shell版 shell的强大快捷之处就在此体现出来了.我们使用find命令就直接能将目标的文件进行检索,然后我们就直接对检索出来的对象进行统计.统计 我们知道使用wc这个命令,但是我们观察一下wc的输出: 206 ./2014-03-09-jek

读取程序字符,行数,单词的个人程序

一.需求分析: 统计程序中有的字符个数,行数以及单词数量. 思路设计: 通过对题目要求个人理解和同学的讨论,我认为通过对行,字符和词数分别用函数统计: 行数的统计我用了:int isrand(char c, int &randnum). 对单词的统计我用了这个函数:int isWord(char c, int &wordnum).单个字母和由多个字母组成的默认为都是单词. 对字符的统计运用了这个函数:int ischaracter(char c).字符统计时两个单词之间的空格,括弧,等号等