2016-09-17 17 views
0

JMeterのBeanShellプリプロセッサを使用してトランザクションコントローラに与えられた名前を取得したいと思います。 ヘッダーマネージャを使用して後でdynaTraceに接続して表示するために使用したいもの。 jmeterでbeanshell preprocesssorを使用してトランザクションコントローラに与えられた名前を取得する方法

私はBeanShellのリスナー

String test = sampleResult.getSampleLabel(); 
log.info(test); 

を使用して、このような何かを試してみましたが、私はプリプロセッサを使用します。

log.info(sampler.getName()); 

これは、サンプラーの名前を取得するために使用されます。同様の方法で、トランザクションコントローラーの名前を取得します。

具体的には、BeanShellプリプロセッサを使いたいと思います。

誰か助けてくれますか?

+0

短い答え:あなたができないサンプルコードは次のようになります。 –

+0

ありがとう@KIril S ....もしbeanshellプリプロセッサでないなら、トランザクション名を取得する方法はありますか? – shey

+0

JMeterは、現在のもの以外の要素を得る良い方法をあなたに与えません。あなたは何を達成しようとしていますか? –

答えて

4

Previous ResultまたはPrevious Sampler以上に歩くことはできませんので、簡単に実装することはできません。通常、人々は親サンプラー・コントローラーの名前を知らなくてもよいので、あなたのテストがうまく設計されていないように見えます。

しかし、JMeter Test Plan Treeにアクセスしてそこから情報を得ることができます。

import org.apache.jmeter.control.TransactionController; 
import org.apache.jmeter.engine.StandardJMeterEngine; 
import org.apache.jorphan.collections.HashTree; 
import org.apache.jorphan.collections.SearchByClass; 

import java.lang.reflect.Field; 
import java.util.Collection; 

StandardJMeterEngine engine = ctx.getEngine(); 
Field test = engine.getClass().getDeclaredField("test"); 
test.setAccessible(true); 
HashTree testPlanTree = (HashTree) test.get(engine); 

SearchByClass txnCtrlSearch = new SearchByClass(TransactionController.class); 
testPlanTree.traverse(txnCtrlSearch); 
Collection txnControllers = txnCtrlSearch.getSearchResults(); 

for (Object txnController : txnControllers) { 
    log.info(((TransactionController) txnController).getName()); 
} 

デモ:

Beanshell Transaction Controller Name

のBeanShellスクリプトからのJMeterのAPIを使用してのいくつかの情報:How to Use BeanShell: JMeter's Favorite Built-in Component

+0

hi..thanks ..it私のためにうまくいく – shey

+0

こんにちは@sheyあなたはあなたのスクリプトでこのコードを実装して、ヘッダーマネージャーでトランザクションコントローラー名を取得する方法を説明できますか? – vikas

関連する問題