2016-09-17 90 views
0

我想要使用JMeter中的BeanShell預處理器獲取交易控制器的名稱。 我想用它來連接並在以後使用頭管理器在dynaTrace中顯示。如何使用jmeter中的beanshell預處理器獲取交易控制器的名稱

我想是這樣的使用BeanShell的聽衆

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

,但我想用預處理。

log.info(sampler.getName()); 

這是用來獲取採樣的名義,以同樣的方式我想獲得交易控制器的名稱。

具體來說,我想使用BeanShell預處理器。

有人可以幫我嗎?

+0

簡短的回答:

Beanshell Transaction Controller Name

使用來自BeanShell的腳本JMeter的API的一些信息,你不能。 –

+0

感謝@KIril S ....如果不是beanshell預處理器,那麼有沒有什麼辦法可以獲得事務名稱.. – shey

+0

JMeter並沒有給你任何好的方法來獲取除當前元素之外的任何元素。你想達到什麼目的?如果你解釋目標是什麼,或許可以找到解決方法 –

回答

4

你不能走得比Previous ResultPrevious 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()); 
} 

演示:How to Use BeanShell: JMeter's Favorite Built-in Component

+0

嗨..感謝..對我來說工作得很好 – shey

+0

嗨@shey能否向我解釋一下,您是如何在腳本中實現此代碼以獲取頭管理器中的事務控制器名稱的。 – vikas

相關問題