package test; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; public class PerformenceTest implements JavaSamplerClient { private SampleResult results; private String a; private String b; private String filename; // 設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中 public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("filename", "0");//設置參數,并賦予默認值0 params.addArgument("a", "0");//設置參數,并賦予默認值0 params.addArgument("b", "0");//設置參數,并賦予默認值0 return params; } // 初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行 public void setupTest(JavaSamplerContext arg0) { results = new SampleResult(); } // 測試執行的循環體,根據線程數和循環次數的不同可執行多次 @Override public SampleResult runTest(JavaSamplerContext arg0) { b = arg0.getParameter("b"); // 獲取在Jmeter中設置的參數值 a = arg0.getParameter("a"); // 獲取在Jmeter中設置的參數值 filename = arg0.getParameter("filename"); // 獲取在Jmeter中設置的參數值 results.sampleStart();// jmeter 開始統計響應時間標記 try { OutputService test = new OutputService(); test.output(filename,Integer.parseInt(a), Integer.parseInt(b)); results.setSuccessful(true); // 被測對象調用 } catch (Throwable e) { results.setSuccessful(false); e.printStackTrace(); } finally { results.sampleEnd();// jmeter 結束統計響應時間標記 } return results; } // 結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行 public void teardownTest(JavaSamplerContext arg0) { } public static void main(String[] args) { // TODO Auto-generated method stub Arguments params = new Arguments(); params.addArgument("a", "0");//設置參數,并賦予默認值0 params.addArgument("b", "0");//設置參數,并賦予默認值0 JavaSamplerContext arg0 = new JavaSamplerContext(params); PerformenceTest test = new PerformenceTest(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0); } } Export 為 Runnable Jar File; |