jmeter添加自定义扩展函数之DoubleSum

1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这里就不再赘述

2,代码如下:

package com.mytest.functions;
import org.apache.jmeter.engine.util.CompoundVariable;

import org.apache.jmeter.functions.AbstractFunction;

import org.apache.jmeter.functions.InvalidVariableException;

import org.apache.jmeter.samplers.SampleResult;

import org.apache.jmeter.samplers.Sampler;

import org.apache.jmeter.threads.JMeterVariables;

import java.util.Collection;

import java.util.LinkedList;

import java.util.List;



/**

 * Provides a DoubleSum function that adds two or more Double values.

 * Mostly copied from LongSum

 */

public class DoubleSum extends AbstractFunction {



    private static final List<String> desc = new LinkedList<String>();

    private static final String KEY = "__doubleSum";



    static {

        desc.add("First double to add");

        desc.add("Second long to add - further doubles can be summed by adding further arguments");

        desc.add("Name of variable in which to store the result (optional),The author is guanyf");

    }



    private Object[] values;



    /**

     * No-arg constructor.

     */

    public DoubleSum() {

    }



    /**

     * {@inheritDoc}

     */

    @Override

    public synchronized String execute(SampleResult previousResult, Sampler currentSampler)

            throws InvalidVariableException {



        JMeterVariables vars = getVariables();



        Double sum = 0D;

        String varName = ((CompoundVariable) values[values.length - 1]).execute().trim();



        for (int i = 0; i < values.length - 1; i++) {

            sum += Double.parseDouble(((CompoundVariable) values[i]).execute());

        }



        try {

            sum += Double.parseDouble(varName);

            varName = null; // there is no variable name

        } catch (NumberFormatException ignored) {

        }



        String totalString = Double.toString(sum);

        if (vars != null && varName != null && varName.length() > 0) {// vars will be null on TestPlan

            vars.put(varName, totalString);

        }



        return totalString;



    }



    /**

     * {@inheritDoc}

     */

    @Override

    public synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {

        checkMinParameterCount(parameters, 2);

        values = parameters.toArray();

    }



    /**

     * {@inheritDoc}

     */

    @Override

    public String getReferenceKey() {

        return KEY;

    }



    /**

     * {@inheritDoc}

     */

    @Override

    public List<String> getArgumentDesc() {

        return desc;

    }

}
View Code

 

转载于:https://www.cnblogs.com/guanyf/p/10912419.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值