?
1、${name}從哪里取數
2、User Defined Variables的數據是在哪一個過程中放進去的
3、如何通過beanshell將自己想要的數據放進去,然后在其他地方通過${name}的方式獲取
第一個問題的答案:
${name}是在調用一個特殊的函數,函數解析器為:FunctionParser
解析過程如下方截圖所示:
下方截圖分支部分,直接返回function對象,此時會調用function的toString()方法
如上所述,最終會返回toString()方法的返回值。
toString()方法,其實是從ThreadLocal獲得自己線程對應的threadContext對象,并從threadContext對象中取得JMeterVariables?variables (JMeterVariables內部封裝了一個map)? vars.get(name)調用的map.get(name);
第二個問題的答案:
主線程預處理jml解析后的hashtree
針對User Defined Variables的處理
針對線程組的線程的處理
用主線程的context初始化子線程
第三個問題: