その後、別のユーザー要求のアクセス数、シミュレーションテストの必要性により、実際のシーンを考慮して、同時に複数のサービス。
本明細書で使用される、コントロールのパーセンテージを実行するスレッドの数は、すなわち、対応する要件を満たすために、仮想シーンの割合をユーザが制御します。
グルーヴィーなスクリプト言語の設計。
輸入 静的net.grinder.script.Grinder.grinderの インポート 静的 org.junit.Assert。* インポート 静的 org.hamcrest.Matchers。* 輸入net.grinder.plugin.http.HTTPRequest 輸入net.grinder.plugin.http.HTTPPluginControlの インポートnet.grinder.script.GTest 輸入net.grinder.script.Grinder 輸入net.grinder.scriptengine.groovy.junit.GrinderRunner 輸入net.grinder.scriptengine.groovy.junit.annotation.BeforeProcessの 輸入net.grinder.scriptengine.groovy。 junit.annotation.BeforeThread 輸入org.junit.Beforeの インポートorg.junit.BeforeClass 輸入org.junit.Test 輸入org.junit.runner.RunWith 輸入java.util.Date 輸入はjava.util.Listの インポートjava.util.ArrayListの インポートHTTPClient.Cookieの インポートHTTPClient.CookieModule インポートHTTPClient.HTTPResponse インポートHTTPClient.NVPair
/ **
*の検索示すHTTPプラグインを使用して単純な例
HTTPを介して* 1ページ。
*
*このスクリプトは自動的にngrinderによって生成されます。
*
* @author ylfeng
* /
@RunWith(GrinderRunner) クラスTestPre { パブリック 静的GTEST試験 パブリック 静的HTTPRequestの要求 パブリック 静的 NVPair []ヘッダー= [] パブリック 静的 NVPair []のparams = [] パブリック 静的クッキー[]クッキー= [] パブリック 静的TEST1 GTEST パブリック 静的GTEST test2は 公共の 静的test3にGTEST パブリック 静的TEST4 GTEST パブリック 静的GTEST TEST5 @BeforeProcess パブリック 静的 ボイドbeforeProcess(){ HTTPPluginControl.getConnectionDefaults()。タイムアウト = 6000 // 实例化五个GTEST对象 TEST1 = 新しい GTEST(1、 "TEST1" ) TEST2 = 新しい GTEST(2、 "TEST2" ) TEST3 = 新しい GTEST (3、 "TEST3" ) TEST4 = 新しい GTEST(4、 "TEST4" ) TEST5 = 新しい GTEST(5、 "TEST5" ) リクエスト = 新しいHTTPRequestの() grinder.logger。情報(「プロセスの前に。」); } @BeforeThread 公共 ボイドbeforeThread(){ // 设置五个请求的统计测试结果 test1.record(この、 "TEST1" ) test2.record(この "TEST2" ) test3.record(この "TEST3" ) TEST4を.record(この "TEST4" ) test5.record(この "TEST5" ) grinder.statistics.delayReports = 真。 grinder.logger.info( "スレッドの前に。" ); @Before 公共 ボイド前(){ request.setHeaders(ヘッダ) cookies.each {CookieModule.addCookie(IT、HTTPPluginControl.getThreadHTTPClientContext())} grinder.logger.info( "INITスレッドヘッダとクッキーの前に。" ); } @テスト 公共 ボイド試験(){ //は、仮想ユーザ・スレッドの合計数を取得し、実行 INT仮想ユーザ= getVusers() INT runThreadNum = getRunThreadNum() // 実行パーセンテージ設定 INT runRate1 30 = INT runRate2 30 = INT runRate3 = 10 INT runRate4 = 10 int型 runRate5 = 10 // 稼働率計算スレッド数INT runNum1 =仮想ユーザ/ 100 * runRate1 INT runNum2 =仮想ユーザ/ 100 *(runRate1 + runRate2) INT runNum3 =仮想ユーザ/ 100 *(runRate1 + runRate2 + runRate3) INT runNum4 -仮想ユーザ= / 100 *(100 runRate5) INT runNum5仮想ユーザ= / * 100 100 // の比率に応じて、対応する要求をIF(runThreadNum> 0 && runThreadNum <= runNum1) この.test1() 他IF(runThreadNum> runNum1 && runThreadNum < = runNum2) この.test2() それ以外 の場合(runThreadNum> runNum2 && runThreadNum <= runNum3) この.test3() それ以外 の場合(runThreadNum> runNum3 && runThreadNum <= runNum4) この.test4() それ以外 の場合(runThreadNum> runNum4 && runThreadNum < = runNum5) この.test5() } 公共 ボイドTEST1(){ grinder.logger.info( "---请求一のもの:{} ---"、grinder.threadNumber + 1 ) } 公共 ボイドTEST2(){ grinder.logger.info( "--- 2つの要求補数:{} ---"、grinder.threadNumber + 1 ) } 公共 ボイドTest3は(){ grinder.logger.info(「---要求3つのスリー:{} ---」、grinder.threadNumber + 1 ) } 公共 ボイドTEST4(){ grinder.logger.info( "---要求4つの4:{} ---"、grinder.threadNumber + 1 ) } 公共 ボイドTEST5( ){ grinder.logger.info( "---要求5ファイブ:--- {}"、grinder.threadNumber + 1 ) } 公共 INT getVusers(){ // 仮想のユーザの総数取得 INTをtotalAgents = Integer.parseInt(grinder.getPropertiesは()。( "grinder.agents"を取得).toString()) int型 totalProcesses = Integer.parseInt(grinder.properties.get( "grinder.processes" ).toString()) int型 totalThreads = Integer.parseInt(grinder.properties.get( "grinder.threads" ).toString()) INT仮想ユーザ= totalAgents * totalProcesses * totalThreadsを 返す仮想ユーザを } 公共 INT getRunThreadNum(){ // 获取当前压力机数、进程数、线程数 int型 agentNum = grinder.agentNumber int型 processNum = grinder.processNumber int型 threadNum = grinder.threadNumber // スレッドの現在の数を取得 int型 runThreadNum =(+ agentNum。1)*(+ processNum。1)*(+ threadNum。1 ) を返すrunThreadNumを } }
参照文献:
1、HTTPS:?//testerhome.com/topics/17585ロケール= ZH-CN