jmeter添加自定义扩展函数之MD5加密

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 org.apache.jorphan.util.JOrphanUtils;



import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Collection;

import java.util.LinkedList;

import java.util.List;



public class MD5 extends AbstractFunction {



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

    private static final String KEY = "__MD5";



    static {

        desc.add("String to calculate MD5 hash");

        desc.add("Name of variable in which to store the result (optional),作者:管永飞");

    }


    private Object[] values;
    public MD5() {

    }

    @Override

    public synchronized String execute(SampleResult previousResult, Sampler currentSampler)

            throws InvalidVariableException {

        JMeterVariables vars = getVariables();

        String str = ((CompoundVariable) values[0]).execute();

        MessageDigest digest;

        try {

            digest = MessageDigest.getInstance("md5");

        } catch (NoSuchAlgorithmException ex) {

            return "Error creating digest: " + ex;

        }

        String res = JOrphanUtils.baToHexString(digest.digest(str.getBytes()));
        if (vars != null && values.length > 1) {

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

            vars.put(varName, res);
        }
        return res;

    }
    @Override

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

        checkMinParameterCount(parameters, 1);

        values = parameters.toArray();

    }
    
    @Override

    public String getReferenceKey() {

        return KEY;

    }

    @Override

    public List<String> getArgumentDesc() {

        return desc;

    }

}
原文地址:https://www.cnblogs.com/guanyf/p/10912329.html