我应该如何将我的Java代码转换为J-meter BeanShell PreProcessor

问题描述 投票:0回答:2

我有一小段Java代码,我必须将其合并到Jmeter中以将图像转换为base64。

      File f =  new File("C:/Users/SETU BASAK/Desktop/a.jpg");
         String encodstring = encodeFileToBase64Binary(f);
         System.out.println(encodstring);
   }

   private static String encodeFileToBase64Binary(File file){
        String encodedfile = null;
        try {
            FileInputStream fileInputStreamReader = new FileInputStream(file);
            byte[] bytes = new byte[(int)file.length()];
            fileInputStreamReader.read(bytes);
            encodedfile = Base64.encodeBase64(bytes).toString();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return encodedfile;
    }
java jmeter performance-testing beanshell
2个回答
1
投票

将您的文件构建为jar文件并放在apache-jmeter包中的lib文件夹中。然后在脚本中添加BeanShell Sampler并为您的类添加对象,并在方法内传递您的文件以获取base64值

在BeanShell Sampler中,对于ex,您的类名是Base64Conv的意思

import com.package.converter;

Base64Conv converter=new Base64Conv();
String imageBase64=converter.encodeFileToBase64Binary(new File("path to your file"));

然后在需要的地方使用$ {imageBase64}


1
投票

建议使用JMeter内置的test elementsfunctionsplugins,这样你将获得最大的性能和最少的资源消耗,因此你可以考虑使用__FileToString()__base64Encode()函数组合,如:

${__base64Encode(${__FileToString(c:/Users/SETU BASAK/Desktop/a.jpg,,)},)}

您可以使用__base64Encode()安装JMeter Plugins Manager和其他自定义函数

enter image description here

如果您仍想考虑使用JSR223 Test Elements and Groovy language编写脚本,相关代码将类似于:

new File("C:/Users/SETU BASAK/Desktop/a.jpg").getBytes().encodeBase64().toString() 

这两种方法应该产生相同的Base64字符串:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.