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

时间:2019-03-29 06:06:42

标签: java jmeter performance-testing beanshell

我只有一小段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;
    }

2 个答案:

答案 0 :(得分:1)

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

BeanShell Sampler 中, 例如,您的类名称为Base64Conv表示

import com.package.converter;

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

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

答案 1 :(得分:1)

建议使用内置的JMeter test elementsfunctionsplugins,因为这样您将具有最高的性能和最低的资源消耗,因此可以考虑使用{{3} }和__FileToString()功能组合,例如:

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

您可以使用__base64Encode()安装__base64Encode()和其他自定义功能

JMeter Plugins Manager

如果您仍然想进行脚本编写,请考虑使用enter image description here,相关代码如下:

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

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

JSR223 Test Elements and Groovy language