Jmeter调用第三方Jar包:单例模式

Jmeter本身功能不满足测试需求时,我们可以自己编写相应代码,然后通过BeanShell调用java方法。通常情况下,Jmeter的每个线程都会初始化一次相应的类,但某些特殊场景要求我们的类仅能初始化一次,可以通过单例模式解决。
举个例子,调用一个登录的接口,要求对密码进行hmac计算进行加密,所以要在BeanShell PreProcessor中调用加密类的hmac接口。但是该加密类尤其耗费内存,一般初始化超过3次就会报OOM错误。所以我们在测试时,只能初始化一次,所有线程共用一个加密类实例。
Java类编写:

public class TestSingleton {
    private static Provider instance = null;

    private static Provider getInstance(String env){
        if(instance == null){
            // 初始化
            instance = new Provider(env);
        }
        return instance;
        
    }

    public static String getHac(String env, String passwd){
        Provider provider = TestSingleton.getInstance(env);
        String result = provider.doFinal(passwd);
        return result;
    }

}

Jmeter调用:

String hmac = TestSingle.getHac("env", "123456");

单例模式还有很多种实现方法,饿汉式、懒汉式、内部类等,详解可参见(一)单例模式详解_左潇龙的博客-CSDN博客。

你可能感兴趣的:(Jmeter调用第三方Jar包:单例模式)