• 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下

    查看调用图:

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

  • 相关阅读:
    设计并实现一个漂亮的结婚小站
    Android新特性--ConstraintLayout完全解析
    Android之MainActivity类
    Android app启动activity并调用onCreate()方法时都默默地干了什么?
    Android Studio开发-高效插件强烈推荐
    Android SDK Manager详解
    Android Studio中如何设置颜色拾色器工具
    独立的android开发者开发app如何盈利?
    Android Studio开发常用快捷键
    最强 Android Studio 使用小技巧和快捷键总结
  • 原文地址:https://www.cnblogs.com/RayMin/p/4444664.html
Copyright © 2020-2023  润新知