介绍
这篇文章将为大家详细讲解有关JMeter引擎中如何配置HashTree,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、前言
- <李>
大家看到下面是JMeter控制台配置截的图,是一个标准的菜单形式,菜单形式其实就类似于“树”型的数据结构,而HashTree其实就是一个树型数据结构
李>
我们在JMeter控制台导出的jmx文件,是一个xml结构的数据,他其实就是由HashTree生成的,后面我们会讲到
,
二,HashTree的用法
首先通过HashTree类介绍,它一个集合类;具备地图结构的功能,而且是一种树型结构
/* * ,*却;能够class is used 用create a tree structure of 对象只Each element 拷贝 ,* tree is  also a key 用,next node down 拷贝,树只It provides many 方法 ,*用add objects 以及分支机构,,as well as many ways 用检索。 ,* & lt; p> ,* HashTree implements 从而Map interface for convenience 原因只,主要 ,* difference 结构;a Map 以及a HashTree is that 从而HashTree organizes ,* data into  a recursive tree 结构,以及provides 从而means 用操纵 ,* that 结构。 ,* & lt; p> ,* Of special  interest is 从而{@link #导线(HashTreeTraverser)},方法,它 ,* provides an  expedient way 用traverse any HashTree by implementing ,* {@link HashTreeTraverser}, interface 拷贝order 用perform some operation 提醒 ,*树,趁机用extract 方式、得到,树。 ,* ,* @see HashTreeTraverser ,* @see SearchByClass ,*/public class  HashTree implements 可序列化的,,Map<对象,HashTree>,, Cloneable { }
JMeter常用的HashTree方法(以下图配置为例)
//ListedHashTree是HashTree的继承类,可以保证HashTree的顺序性 HashTree tree =, new ListedHashTree ();//测试规划对象,测试计划 TestPlan plan =, new TestPlan ();//ThreadGroup对象,线程组 ThreadGroup group =, new ThreadGroup ();//创建线程组数结构的对象groupTree HashTree groupTree =, new ListedHashTree ();//表示取样器中的HTTP请求 HTTPSamplerProxy sampler =, new HTTPSamplerProxy ();//创建HTTP请求的数结构对象samplerTree//调用把方法相当于在计划(测试计划)菜单对象下添加集团(线程组)子菜单,这样就形成了一种树型结构 HashTree samplerTree =, new ListedHashTree (); samplerTree.put(取样器,new ListedHashTree ())//groupTree树结构添加子树samplerTree samplerTree groupTree.put(集团)//树树结构为测试计划对象,添加子树groupTree,这样就形成了上图的层级形式 tree.put(计划,groupTree)//调用添加方法相当于在树菜单对象下添加同级菜单 tree.add (Object 键)
三,JMeter源码导出jmx脚本文件介绍
首先在JMeter控制台所有点击事件,都会被<代码> ActionRouter> 代码中performaAction方法进行监听执行,点击导出按钮,会进入到如图方法通过反射由保存类执行
在保存类中执行doAction主要是获取到配置的HashTree
当你点击保存的时候,它会创建一个空文件,此时文件没有任何内容
<代码>保存代码>
类的doAction方法最后会调用<代码> backupAndSave (e,子树,fullSave updateFile) 代码>这个是来将创建的空文件写入xml内容的