当前位置: 首页 > 知识库问答 >
问题:

如何在不使用命令行运行JMeter的情况下以编程方式设置代理设置

房唯
2023-03-14

我需要在代理后面使用Java以编程方式运行Jmeter。问题在于我需要使用HTTPS。

我已在以下网站阅读了手册:http://jmeter.apache.org/usermanual/get-started.html我已经使用Jmeter几个月了,感觉很舒服,但问题是在我需要切换到HTTPS时开始的。

我试过以下方法:(分别和一起)

  1. 添加了带有代理服务器详细信息的HTTP请求默认配置
  2. 将代理服务器详细信息添加到每个HTTP请求中
  3. 添加了两个https。proxyHost

我知道,我可以使用命令行以-H-P作为参数运行JMETER(这是可行的),但这不是我使用JMETER的方式——我只以编程方式使用它,因此这不是一个选项。

这是一个描述与我的问题有关的已知JAVA错误的片段:

Java HTTP实现有一些限制:无法控制连接的重用方式。当连接中断时

错误链接:http://bugs.java.com/view_bug.do?bug_id=6226610

我读过这个bug,发现“JavaSE开发工具包8u131”可以解决这个问题——所以我下载了它,可惜它一点帮助都没有。

我将非常感谢您的帮助。

感谢

伊加尔

共有1个答案

段干浩荡
2023-03-14

如果从单独的Java程序运行JMeter,则需要将代理参数传递给该Java程序。有几种方法可以实现这一点,查看我们的Java Networking and Proxies文章以获取全面信息,您似乎非常喜欢通过代码完成所有工作,所以在启动JMeter测试之前,只需添加以下几行代码:

System.setProperty("http.proxyHost","your_proxy_host");
System.setProperty("http.proxyPort", "your_proxy_port");
System.setProperty("https.proxyHost","your_proxy_host");
System.setProperty("https.proxyPort","your_proxy_port");
System.setProperty("http.nonProxyHosts","");

以防万一,完整的代码演示了如何使用JMeter API通过JMeter的HTTP(S)测试脚本记录器作为代理运行现有的JMeter测试

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

import java.io.File;

public class JMeterFromCode {

    public static void main(String[] argv) throws Exception {


        //Define JVM Proxy Settings
        System.setProperty("http.proxyHost", "localhost");
        System.setProperty("http.proxyPort", "8888");
        System.setProperty("https.proxyHost", "localhost");
        System.setProperty("https.proxyPort", "8888");
        System.setProperty("http.nonProxyHosts", "");

        // JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        // Initialize Properties, logging, locale, etc.
        JMeterUtils.loadJMeterProperties("/tmp/jmeter/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("/tmp/jmeter");
        JMeterUtils.initLocale();


        // Initialize JMeter SaveService
        SaveService.loadProperties();

        // Load existing .jmx Test Plan
        HashTree testPlanTree = SaveService.loadTree(new File("/tmp/jmeter/bin/test.jmx"));

        Summariser summer = null;
        String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
        if (summariserName.length() > 0) {
            summer = new Summariser(summariserName);
        }

        ResultCollector logger = new ResultCollector(summer);
        logger.setFilename("/tmp/jmeter/test.jtl");
        testPlanTree.add(testPlanTree.getArray()[0], logger);


        // Run JMeter Test
        jmeter.configure(testPlanTree);
        jmeter.run();
    }
}
 类似资料:
  • 我正在使用NetBeans IDE 8.2和Maven 3.5.0。当NetBeans的一个操作试图下载插件时,它会失败: 下载:https://repo.maven.apache.org/maven2/org/codehaus/mojo/xml-maven-plugin/1.0/xml-maven-plugin-1.0.pom 我在以下位置定义了代理: NetBeans:工具->选项->常规 C

  • 为您重复使用的命令行任务设置快捷方式。如果你发现自己需要在命令行中重复输入同样的东西,那么设置命令行快捷方式非常有必要。 TL;DR 使命令行为您工作;创建容易记住和快速键入的别名。 尝试保存 Github dotfiles 项目,共享和同步您的命令行快捷方式。 如何设置快捷方式 创建命令行快捷方式的最简单的方法是将常用命令的别名添加到bashrc文件。 在Mac或Linux上: 从命令行的任何位

  • 问题内容: 我已经习惯于完美地对齐表单字段。这是我通常编写表单的方式: 我知道这是不好的做法,我 想 使用CSS, ,,或清洁方法。但是,事实是,对于表格来说,效果非常好。一切都完全正确地对齐,间距是完美的,所有错误都在彼此之间,等等。 我最近尝试为表单使用and 标记,但是由于它们看起来好多了,我最终返回到表。 不使用s 如何获得这种对齐的表格布局? 问题答案: 这可能不会得到很多支持,但这是我

  • 问题内容: 我想在不使用设置器的情况下将值插入变量。如果有可能怎么办。 这是一个例子 现在我有一个包含,和的函数。 我试图使用一种通用方法将值设置为Object(objectOfClass),而值我已经在相应的variable()中通过了()。 问题答案: 此代码未经测试。你可以试试看 要导入的类 方法

  • 问题内容: 我想在Eclipse中编译我的Java程序,但不想运行它。我不知道该怎么做。 如何在不运行Eclipse的情况下将Java程序编译为文件? 问题答案: 您可以在项目菜单中自动取消选中构建,然后通过按Ctrl + B或单击打印机图标右侧出现的图标手动构建。

  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。