- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 JMeter Java 请求并将 jar 复制到 ext 目录 (apache-jmeter-3.1\lib\ext
)。我正在尝试在远程计算机上运行测试。我可以从 GUI 配置并运行 Java 请求。还可以使用 JMX 文件通过 Java 代码调用测试,如下所示。
ClientJMeterEngine jmeter = new ClientJMeterEngine("myclient");
File file = new File(RemoteJmeterTest.class.getResource("/finalSample.jmx").getFile());
JMeterUtils.loadJMeterProperties("D:/apache-jmeter-3.1/bin/jmeter.properties");
JMeterUtils.setJMeterHome("D:/Tools/apache-jmeter-3.1");
HashTree testPlanTree = SaveService.loadTree(file);
jmeter.configure(testPlanTree);
jmeter.runTest();
现在我想纯粹用 Java 创建一个新的 JMeter 测试。但我不知道如何配置Java采样器。我看到例子 here指出如何配置 HTTP 采样器。我需要配置 Java 请求,而不是 HTTPSampler。请帮忙。
最佳答案
添加 Java Request 的示例代码采样器将执行SleepTest看起来像:
JavaSampler javaSampler = new JavaSampler();
javaSampler.setName("Java Request");
javaSampler.setClassname("org.apache.jmeter.protocol.java.test.SleepTest");
Arguments arguments = new Arguments();
arguments.addArgument("SleepTime", "1000");
arguments.addArgument("SleepMask", "0x33F");
javaSampler.setArguments(arguments);
javaSampler.setProperty(TestElement.TEST_CLASS, JavaSampler.class.getName());
javaSampler.setProperty(TestElement.GUI_CLASS, JavaTestSamplerGui.class.getName());
如果您需要执行自己的类来实现 JavaSamplerClient接口(interface)只需替换类名并根据需要提供您自己的参数。
完整代码以防万一:
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.gui.ArgumentsPanel;
import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.control.gui.LoopControlPanel;
import org.apache.jmeter.control.gui.TestPlanGui;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.protocol.java.control.gui.JavaTestSamplerGui;
import org.apache.jmeter.protocol.java.sampler.JavaSampler;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.threads.gui.ThreadGroupGui;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
import java.io.FileOutputStream;
public class JMeterFromScratch {
public static void main(String[] args) throws Exception {
//JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
//JMeter initialization (properties, log levels, locale, etc)
JMeterUtils.loadJMeterProperties("C:/jmeter/bin/jmeter.properties");
JMeterUtils.setJMeterHome("C:/jmeter");
//JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// JMeter Test Plan
HashTree testPlanTree = new HashTree();
// Java Request
JavaSampler javaSampler = new JavaSampler();
javaSampler.setName("Java Request");
javaSampler.setClassname("org.apache.jmeter.protocol.java.test.SleepTest");
Arguments arguments = new Arguments();
arguments.addArgument("SleepTime", "1000");
arguments.addArgument("SleepMask", "0x33F");
javaSampler.setArguments(arguments);
javaSampler.setProperty(TestElement.TEST_CLASS, JavaSampler.class.getName());
javaSampler.setProperty(TestElement.GUI_CLASS, JavaTestSamplerGui.class.getName());
// Loop Controller
TestElement loopController = new LoopController();
((LoopController) loopController).setLoops(1);
loopController.addTestElement(javaSampler);
((LoopController) loopController).setFirst(true);
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
((LoopController) loopController).initialize();
// Thread Group
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setName("Thread Group");
threadGroup.setSamplerController(((LoopController) loopController));
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
// Test Plan
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
// Construct Test Plan from previously initialized elements
testPlanTree.add(testPlan);
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
threadGroupHashTree.add(javaSampler);
// save generated test plan to JMeter's .jmx file format
SaveService.saveTree(testPlanTree, new FileOutputStream("test.jmx"));
//add Summarizer output to get test progress in stdout like:
// summary = 2 in 1.3s = 1.5/s Avg: 631 Min: 290 Max: 973 Err: 0 (0.00%)
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
// Store execution results into a .jtl file
String logFile = "test.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
// Run Test Plan
jmeter.configure(testPlanTree);
jmeter.run();
System.out.println("Test completed. See test.jtl file for results");
System.out.println("JMeter .jmx script is available at test.jmx");
System.exit(0);
}
}
参见Five Ways To Launch a JMeter Test without Using the JMeter GUI有关运行 JMeter 测试的不同方法的全面信息。
关于java - 纯粹用 Java 为 Java Sampler 创建新的 JMeter 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344726/
我正在寻找使用变量 sampler 的方法在 JSR223 Sampler、JSR223 PreProcessor、JSR223 PostProcessor 和所有其他 JSR223 脚本中。 还有一
我正在使用 AVPlayer 通过本地文件和在线 URL 播放声音。但是我报错了,找不到原因。我搜索但找不到解决方案。这是我的错误: Terminating app due to uncaught e
我想获取一个音频文件的bitRate,sampleRate,channelCount 我使用代码 @SuppressLint("NewApi") public void GetSampleR
我已经在 ubuntu 14.0.4 上安装了 Jmeter,但我无法在采样器列表中看到操作系统进程采样器。你能告诉我如何在 ubuntu 中获取 jmeter 的操作系统进程采样器吗? 我需要运行
我正在尝试通过 TCP 采样器将消息从 Jmeter 发送到服务器我已经配置了 IP、端口号和发送到消息框的消息,然后我开始访问服务器,此时我在 Jmeter 中收到以下警告。 同时让我知道 Jmet
我正在阅读 vignette为 rgen包提供了从一些常见分布中采样的头文件。在第一段中,它说: Please note, these samplers, just like the ones in
我有一个 jmx 脚本,其中每个肥皂请求都有一个 header 管理器。我想提取具有值的 SOAPAction 字段:"http://****.svc"并将其作为 http 采样器的名称。 我需要编码
我想使用“scikits.samplerate”,但安装失败。我正在使用适用于 Python 3.51 的 Windows10(64 位)和 Anaconda。 首先,我遵循了这个指令: https:
我在 JMeter 的线程组下设置了一个 TCP 采样器。数据是从 CSV 文件中选取的。第一行数据为鉴权数据,后面各行为实参数据。像下面这样的东西, AAAAAAA21 BBBBBBBCCCCCCC
我正在尝试使用 TCP 采样器运行一个简单的测试 当使用默认的 TCPClient 类时,在响应超时时间过去后,我从服务器收到了正确的响应,然后在采样器结果中出现错误 500: Response co
我有一个关于 TCP 采样器的问题:有没有一种方法可以发送一个 TCP 请求,并在不等待答案的情况下继续下一步的操作? 我想这样做是因为我发送了一个“pong”请求,如果这个“pong”得到的响应不能
一段时间以来我一直遇到这个问题,并编写了以下可以作为应用程序的主视图 Controller 文件运行的 swift 文件。执行后,它将播放一段短促的 1kHz 正弦波。它将同时从音频接口(interf
我有一个由函数 lda.collapsed.gibbs.sampler 生成的模型,来自 lda 包,我需要知道顶部单词的“相关性”。使用时 top.topic.words(result$to
我正在将 BSF Sampler 与此 javascript 一起使用: var tokenPass = '1234'; var serialNo = '1234578740905549583'; v
我是一个编程新手,有必要编写程序来使用 JMeter 进行负载测试,因为我找不到现有的 GUI 工具来执行我想做的事情。 我正在尝试使用 JMeter 插件“JMeter WebSocket Samp
我自己在 Jmeter 中面临同样的问题。 Mozilla firefox 正在自动打开,给定的 URL 不会自动打开。 我的测试计划是 线程组 jp@gc - Firefox 驱动程序配置 jp@g
在this demo Sampler of the Grid widget ,源代码选项卡显示调用名为 ComponentRenderer 的类的代码。 Map countryRatings = ne
我是 Audiokit 的初学者。我正在尝试使用 Audiokit 对和声实现泛音系列效果。我正在使用 Midi Sampler 和 AKappleSequencer 来演奏不同的音符。在泛音系列中,
我必须使用 JMeter 中的 Jmeter - WebDriver Sampler 提供凭据来登录网站。这是我的脚本, WWDS.browser.get('http://login.salesfor
我必须连续播放音频循环,并且能够不间断地即时重新加载音频文件。我已经尝试过这些解决方案: 使用 AKAudioPlayer 及其“replace(file:)”方法 -> 问题:替换文件超慢(1 秒)
我是一名优秀的程序员,十分优秀!