One approach would be creating a custome class like ResultCollector
(in my case this is JmeterOutListener.java
) and collect the values from there since you have the access them. You can do whatever you want in the sampleOccurred
method in there.
You can decode the ResultCollector
class and see it's functioanlity further.
JMeterTestFromCode.java
public class JMeterTestFromCode {
public static void main(String[] args) throws Exception{
String jmeterHome1 = "/rezsystem/apache-jmeter-2.11/apache-jmeter-2.11";
File jmeterHome=new File(jmeterHome1);
String slash = System.getProperty("file.separator");
if (jmeterHome.exists()) {
File jmeterProperties = new File(jmeterHome.getPath() + slash + "bin" + slash + "jmeter.properties");
if (jmeterProperties.exists()) {
//JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
//JMeter initialization (properties, log levels, locale, etc)
JMeterUtils.setJMeterHome(jmeterHome.getPath());
JMeterUtils.loadJMeterProperties(jmeterProperties.getPath());
JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// JMeter Test Plan, basically JOrphan HashTree
HashTree testPlanTree = new HashTree();
// HTTP Sampler
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("www.google.com");
httpSampler.setPort(80);
httpSampler.setPath("/");
httpSampler.setMethod("GET");
// Loop Controller
TestElement loopCtrl = new LoopController();
((LoopController)loopCtrl).setLoops(1);
((LoopController)loopCtrl).addTestElement(httpSampler);
((LoopController)loopCtrl).setFirst(true);
// Thread Group
SetupThreadGroup threadGroup = new SetupThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController((LoopController)loopCtrl);
// Test plan
TestPlan testPlan = new TestPlan("MY TEST PLAN");
testPlanTree.add("testPlan", testPlan);
testPlanTree.add("loopCtrl", loopCtrl);
testPlanTree.add("threadGroup", threadGroup);
testPlanTree.add("httpSampler", httpSampler);
JmeterOutListener jmeterOutListener = new JmeterOutListener();
testPlanTree.add(testPlanTree.getArray()[0], jmeterOutListener);
// Run Test Plan
jmeter.configure(testPlanTree);
jmeter.run();
System.exit(0);
}
}
System.err.println("jmeter.home property is not set or pointing to incorrect location");
System.exit(1);
}
}
JmeterOutListener.java
public class JmeterOutListener extends AbstractListenerElement implements SampleListener,Clearable,Serializable,TestListener,Remoteable,NoThreadClone{
public JmeterOutListener() {
// TODO Auto-generated constructor stub
}
@Override
public void testEnded() {
// TODO Auto-generated method stub
}
@Override
public void testEnded(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void testStarted() {
// TODO Auto-generated method stub
}
@Override
public void testStarted(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void testIterationStart(LoopIterationEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void clearData() {
// TODO Auto-generated method stub
}
@Override
public void sampleOccurred(SampleEvent event) {
SampleResult sample = event.getResult();
System.out.println("sampleOccurred().sample.getTimeStamp() : " + sample.getTimeStamp());
System.out.println("sampleOccurred().sample.getTime() : " + sample.getTime());
System.out.println("sampleOccurred().sample.getSampleLabel() : " + sample.getSampleLabel());
System.out.println("sampleOccurred().sample.getResponseCode() : " + sample.getResponseCode());
System.out.println("sampleOccurred().sample.getResponseMessage() : " + sample.getResponseMessage());
System.out.println("sampleOccurred().sample.getThreadName() : " + sample.getThreadName());
System.out.println("sampleOccurred().sample.isSuccessful() : " + sample.isSuccessful());
String message = null;
AssertionResult[] results = sample.getAssertionResults();
if (results != null)
{
for (int i = 0; i < results.length; ++i) {
message = results[i].getFailureMessage();
System.out.println("sampleOccurred().message : " + message);
if (message != null) {
break;
}
}
}
System.out.println("sampleOccurred().sample.getBytes() : " + sample.getBytes());
System.out.println("sampleOccurred().sample.getGroupThreads() : " + sample.getGroupThreads());
System.out.println("sampleOccurred().sample.getAllThreads() : " + sample.getAllThreads());
System.out.println("sampleOccurred().sample.getURL() : " + sample.getURL());
System.out.println("sampleOccurred().sample.getLatency() : " + sample.getLatency());
System.out.println("sampleOccurred().sample.getDataEncodingWithDefault() : " + sample.getDataEncodingWithDefault());
System.out.println("sampleOccurred().sample.getSampleCount() : " + sample.getSampleCount());
System.out.println("sampleOccurred().sample.getErrorCount() : " + sample.getErrorCount());
}
@Override
public void sampleStarted(SampleEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void sampleStopped(SampleEvent arg0) {
// TODO Auto-generated method stub
}
}