${name}取数来源

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初始化子线程

第三个问题:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 3,730评论 0 7
  • 我现在躺在自己修好的床上,特别开心特别满足。要知道,昨天我差点就要把这床扔掉买个新床了。可是今年钱太紧张,3000...
    绽蕊向阳阅读 1,083评论 1 2
  • 这天早晨,桑乔手托猎枪,朝天空扣动了扳机。桑乔在打了七枪之后,把猎枪给了桑桑:“再打七枪。” 桑乔是校长,这位看似...
    _卷叶收颜阅读 906评论 0 0