2017-05-25 24 views
0

私はカスタムスレッドグループを使用しています。jmeter-plugins-casutg-2.1.jarを使用して、Blazemeterが提供するFreeFormArrivalsThreadGroupが提供されています。javaを使用してjmeterでカスタムスレッドグループを作成するには?

私は(JavaからJMXを作成するプロセスで)Javaを使用してこのスレッドグループを作成しよう

FreeFormArrivalsThreadGroup freeFormArrivalsThreadGroup = new FreeFormArrivalsThreadGroup(); 

コード:

package com.create.jmx; 

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import org.apache.jmeter.control.LoopController; 
import org.apache.jmeter.control.gui.LoopControlPanel; 
import org.apache.jmeter.control.gui.TestPlanGui; 
import org.apache.jmeter.gui.util.PowerTableModel; 
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui; 
import org.apache.jmeter.protocol.http.sampler.HTTPSampler; 
import org.apache.jmeter.save.SaveService; 
import org.apache.jmeter.testelement.TestElement; 
import org.apache.jmeter.testelement.TestPlan; 
import org.apache.jmeter.util.JMeterUtils; 
import org.apache.jorphan.collections.HashTree; 

import com.blazemeter.jmeter.threads.arrivals.FreeFormArrivalsThreadGroup; 
import com.blazemeter.jmeter.threads.arrivals.FreeFormArrivalsThreadGroupGui; 


public class CreateJMX 
{ 
    final static String JMETER_HOME = "jmeter_home_location"; 

    public static void main(String[] args) throws FileNotFoundException, IOException 
    { 
     try 
     { 
      //creating a test plan 
      TestPlan testPlan = new TestPlan(); 
      testPlan.setName("From Program"); 
      testPlan.setEnabled(true); 
      testPlan.setProperty(TestElement.TEST_CLASS, 
            TestPlan.class.getName()); 
      testPlan.setProperty(TestElement.GUI_CLASS, 
            TestPlanGui.class.getName()); 
      //create a loop controller 
      LoopController loopController = new LoopController(); 
      loopController.setEnabled(true); 
      loopController.setLoops(3); 
      loopController.setProperty(TestElement.TEST_CLASS, 
             LoopController.class.getName()); 
      loopController.setProperty(TestElement.GUI_CLASS, 
             LoopControlPanel.class.getName()); 

      // creating freeFormArrivalsThreadGroup 
      FreeFormArrivalsThreadGroup freeFormArrivalsThreadGroup = new FreeFormArrivalsThreadGroup(); 
      freeFormArrivalsThreadGroup.setName("Free Form Arrivals Thread Group"); 
      PowerTableModel schedule = new PowerTableModel(new String[]{"Start", "End", "Duration"}, 
        new Class[]{Integer.class, Integer.class, Integer.class}); 
      schedule.addRow(new Object[]{1, 10, 60}); 
      freeFormArrivalsThreadGroup.setSamplerController(loopController); 
      freeFormArrivalsThreadGroup.setData(schedule); 
      freeFormArrivalsThreadGroup.setProperty(TestElement.TEST_CLASS, FreeFormArrivalsThreadGroup.class.getName()); 
      freeFormArrivalsThreadGroup.setProperty(TestElement.GUI_CLASS, FreeFormArrivalsThreadGroupGui.class.getName()); 

      //creating HTTP sampler 
      HTTPSampler httpSampler = new HTTPSampler(); 
      httpSampler.setEnabled(true); 
      httpSampler.setName("Google"); 
      httpSampler.setDomain("www.google.com"); 
      httpSampler.setPath("/"); 
      httpSampler.setMethod("GET"); 
      httpSampler.setProperty(TestElement.TEST_CLASS, 
        HTTPSampler.class.getName()); 
      httpSampler.setProperty(TestElement.GUI_CLASS, 
        HttpTestSampleGui.class.getName()); 

      HashTree hashTree = new HashTree(); 

      hashTree.add(testPlan).add(freeFormArrivalsThreadGroup).add(httpSampler); 

      JMeterUtils.setJMeterHome(JMETER_HOME); 
      JMeterUtils.loadJMeterProperties(JMeterUtils.getJMeterBinDir()+"/jmeter.properties"); 

      SaveService.saveTree(hashTree, new FileOutputStream("ouputfile.jmx")); 
     } 
     catch(Throwable e) 
     { 
      e.printStackTrace(); 
     } 

    } 
} 

上の行は、例外がスローされます。ここのStackTrace

java.lang.ExceptionInInitializerError 
    at org.apache.jmeter.reporters.ResultCollector.<init>(ResultCollector.java:173) 
    at org.apache.jmeter.reporters.ResultCollector.<init>(ResultCollector.java:163) 
    at com.blazemeter.jmeter.reporters.FlushingResultCollector.<init>(FlushingResultCollector.java:7) 
    at com.blazemeter.jmeter.threads.AbstractDynamicThreadGroupModel.<init>(AbstractDynamicThreadGroupModel.java:28) 
    at com.blazemeter.jmeter.threads.AbstractDynamicThreadGroup.<init>(AbstractDynamicThreadGroup.java:23) 
    at com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup.<init>(ArrivalsThreadGroup.java:20) 
    at com.blazemeter.jmeter.threads.arrivals.FreeFormArrivalsThreadGroup.<init>(FreeFormArrivalsThreadGroup.java:11) 
    at com.create.jmx.CreateJMX.main(CreateJMX.java:49) 
Caused by: java.lang.NullPointerException 
    at org.apache.jmeter.samplers.SampleSaveConfiguration.<clinit>(SampleSaveConfiguration.java:296) 
    ... 8 more 

これは完全な例外のスタックトレースではありませんJavaの

答えて

0
  1. を使用して、このプラグインのスケジュールを作成するために私を助けている、あなたはリストあなたのコードとのより良い(フル出力を提供する必要があります
  2. jmeter-plugins-casutgで提供され、jmeter-plugins-cmn-jmeterではなく、プロジェクトクラスパスに両方のjarファイルを持つ必要があります。
  3. JMeterテストエレメントをプログラムで作成して設定する方法を理解できない場合は、代わりにGUIモードで作成することを検討することをお勧めします。 JMeter APIを単独で使用するよりも、Javaコードから既存の.jmxテストスクリプトを実行する方が簡単です。

あなたはまだこれを必要な場合は、念のため、コードのようなものでなければなりません:

FreeFormArrivalsThreadGroup freeFormArrivalsThreadGroup = new FreeFormArrivalsThreadGroup(); 
freeFormArrivalsThreadGroup.setName("Free Form Arrivals Thread Group"); 
PowerTableModel schedule = new PowerTableModel(new String[]{"Start", "End", "Duration"}, 
     new Class[]{Integer.class, Integer.class, Integer.class}); 
schedule.addRow(new Object[]{1, 10, 60}); 
freeFormArrivalsThreadGroup.setSamplerController(loopController); 
freeFormArrivalsThreadGroup.setData(schedule); 
freeFormArrivalsThreadGroup.setProperty(TestElement.TEST_CLASS, FreeFormArrivalsThreadGroup.class.getName()); 
freeFormArrivalsThreadGroup.setProperty(TestElement.GUI_CLASS, FreeFormArrivalsThreadGroupGui.class.getName()); 

(プログラムによるものを含む)のJMeterテスト

+0

を起動するさまざまな方法の詳細についてはFive Ways To Launch a JMeter Test without Using the JMeter GUIガイドを参照してください。サンプルコードを使用した後も同じ例外が発生しています。 FreeFormArrivalsThreadGroupのオブジェクトを作成するとき、_NullPointerException_を投げています。 – KC7

+0

Thanks @ Dmitri T. _FreeFormArrivalsThreadGroup_の作成後に_JMeterUtils_を設定/追加しました。ちょうどコードとその正常な作業を再配置。答えを受け入れました。 – KC7

関連する問題