jmeter系列五(Config配置元素)

今天研究的核心元素是Config

同样的道理在jmeter中每个testelement元素都对应着他的gui,Config也不例外,可以定位到包org.apache.jmeter.config和org.apache.jmeter.config.gui

包下面的类全部都是有关于Config这个元素,Config的元素的界面使用到了Jmete的两种界面策略(用到了TestBean和继承AbstractJMeterGuiComponent的实现方式)

前面分析了AbstractJMeterGuiComponent,TestBean后面会独立开篇分析

Config元素的TestElement的接口

 1 package org.apache.jmeter.config;
 2 
 3 public interface ConfigElement extends Cloneable {
 4 
 5     /**
 6      * Add a configuration element to this one. This allows config elements to
 7      * combine and give a "layered" effect. For example,
 8      * HTTPConfigElements have properties for domain, path, method, and
 9      * parameters. If element A has everything filled in, but null for domain,
10      * and element B is added, which has only domain filled in, then after
11      * adding B to A, A will have the domain from B. If A already had a domain,
12      * then the correct behavior is for A to ignore the addition of element B.
13      *
14      * @param config
15      *            the element to be added to this ConfigElement
16      */
17     void addConfigElement(ConfigElement config);
18 
19     /**
20      * If your config element expects to be modified in the process of a test
21      * run, and you want those modifications to carry over from sample to sample
22      * (as in a cookie manager - you want to save all cookies that get set
23      * throughout the test), then return true for this method. Your config
24      * element will not be cloned for each sample. If your config elements are
25      * more static in nature, return false. If in doubt, return false.
26      *
27      * @return true if the element expects to be modified over the course of a
28      *         test run
29      */
30     boolean expectsModification();
31 
32     Object clone();
33 }
View Code

一般的实现

public class ConfigTestElement extends AbstractTestElement implements Serializable, ConfigElement {
    private static final long serialVersionUID = 240L;

    public static final String USERNAME = "ConfigTestElement.username";

    public static final String PASSWORD = "ConfigTestElement.password";

    public ConfigTestElement() {
    }

    @Override
    public void addTestElement(TestElement parm1) {
        if (parm1 instanceof ConfigTestElement) {
            mergeIn(parm1);
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void addConfigElement(ConfigElement config) {
        mergeIn((TestElement) config);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean expectsModification() {
        return false;
    }
}
View Code

Config的所有TestElement都会继承这个实现比如Arguments,CSVDataSet等

---------------------------------------------------------------现在是Config元素在engine中的执行情况----------------------------------------------------------------

PreCompiler类涉及到ConfigTestElement的操作,PreCompiler类中的AddNode方法的中涉及到Arguments的代码

1 if (node instanceof Arguments) {
2             ((Arguments)node).setRunningVersion(true);
3             Map<String, String> args = ((Arguments) node).getArgumentsAsMap();
4             replacer.addVariables(args);
5             JMeterContextService.getContext().getVariables().putAll(args);
6         }

总之,Config元素的作用就是设置参数将其放在JMeterContext中,供后面的JMeter元素使用

转载于:https://www.cnblogs.com/liliqiang/p/4307288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值