文章目录
一、前言二、源码下载三、本地配置四、IDEA 设置五、启动验证六、使用源码调试简单脚本七、模仿编写脚本八、小结一、前言
为了更好了解 nGrinder 怎么工作?为二次开发做准备二、源码下载
下载地址:/naver/ngrinder/releases
也可以直接通过:/naver/ngrinder.git 方式
三、本地配置
这我们演示直接使用下载 zip 包进行安装:
打开目录启动脚本:
等待执行成功便把如下 jar 包安装到本地仓库:
四、IDEA 设置
打开 IDEA 开发工具:
点击文件导入 Project:
点击Open as Project
:
打开一个新窗口:
等待 maven 加载相应的 jar。
修改代码:
具体代码如下:
package org.ngrinder.perftest.service;import org.ngrinder.infra.config.Config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.EnableAspectJAutoProxy;import org.springframework.context.annotation.Profile;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.transaction.annotation.EnableTransactionManagement;/*** Dynamic creation of {@link PerfTestService} depending on the cluster enable or disable.** @author JunHo Yoon* @since 3.1*/@Configuration@Profile("production")@EnableScheduling@EnableTransactionManagement@EnableAspectJAutoProxypublic class PerfTestServiceConfig implements ApplicationContextAware {@Autowiredprivate Config config;private ApplicationContext applicationContext;/*** Create PerTest service depending on cluster mode.** @return {@link PerfTestService}*/@Bean(name = "perfTestService")public PerfTestService perfTestService() {if (config.isClustered()) {return applicationContext.getAutowireCapableBeanFactory().createBean(ClusteredPerfTestService.class);} else {return applicationContext.getAutowireCapableBeanFactory().createBean(PerfTestService.class);}// return applicationContext.getAutowireCapableBeanFactory().createBean(//config.isClustered() ? ClusteredPerfTestService.class : PerfTestService.class);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {this.applicationContext = applicationContext;}}
再次配置 Tomcat:
选择运行方式:
选择时时更新运行:
注意最好是加上 JVM 启动参数:
-Xms1024m -Xmx1024m -XX:MaxPermSize=200m
防止内存出现异常
点击确定:
启动项目:
五、启动验证
打开浏览器验证是否成功:
http://localhost:8081/ngrinder/login
登录成功:
六、使用源码调试简单脚本
在script-sample
工程下的pom.xml
文件增加:
代码如下:
<!-- /artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
再次在 idea 中全局搜索:
groovy-all
查看版本号,统一修改为:
<version>2.4.16</version>
七、模仿编写脚本
通过平台生成脚本:
点击R HEAD
:
查看脚本:
importstatic net.grinder.script.Grinder.grinderimportstatic org.junit.Assert.*importstatic org.hamcrest.Matchers.*import net.grinder.plugin.http.HTTPRequestimport net.grinder.plugin.http.HTTPPluginControlimport net.grinder.script.GTestimport net.grinder.script.Grinderimport net.grinder.scriptengine.groovy.junit.GrinderRunnerimport net.grinder.scriptengine.groovy.junit.annotation.BeforeProcessimport net.grinder.scriptengine.groovy.junit.annotation.BeforeThread// import static net.grinder.util.GrinderUtils.* // You can use this if you're using nGrinder after 3.2.3import org.junit.Beforeimport org.junit.BeforeClassimport org.junit.Testimport org.junit.runner.RunWithimport java.util.Dateimport java.util.Listimport java.util.ArrayListimportHTTPClient.CookieimportHTTPClient.CookieModuleimportHTTPClient.HTTPResponseimportHTTPClient.NVPair/*** A simple example using the HTTP plugin that shows the retrieval of a* single page via HTTP.** This script is automatically generated by ngrinder.** @author admin*/@RunWith(GrinderRunner)classTestRunner{publicstaticGTest testpublicstaticHTTPRequest requestpublicstaticNVPair[] headers = []publicstaticNVPair[] params= []publicstaticCookie[] cookies = []@BeforeProcesspublicstaticvoid beforeProcess() {HTTPPluginControl.getConnectionDefaults().timeout = 6000test = newGTest(1, "")request = newHTTPRequest()grinder.logger.info("before process.");}@BeforeThreadpublicvoid beforeThread() {test.record(this, "test")grinder.statistics.delayReports=true;grinder.logger.info("before thread.");}@Beforepublicvoid before() {request.setHeaders(headers)cookies.each {CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) }grinder.logger.info("before thread. init headers and cookies");}@Testpublicvoid test(){HTTPResponse result = request.GET("/", params)if(result.statusCode == 301|| result.statusCode == 302) {grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode);} else{assertThat(result.statusCode, is(200));}}}
复制脚本:
在 idea 中新建脚本:
选择 Groovy 脚本:
输入名字点击保存即可:
新建完毕把刚才脚本复制过来修改下方法名称:
点击运行:
可以看到提示:
在 Idea菜单栏->Run->Edit Configurations->Default->Junit->在VM options
填写自定义配置,点击 Apply 按钮保存配置即生效:
再次点击:
运行结果如下:
到这里本机脚本调试成功。
八、小结
下次再次分享本地参数化与 Post 请求
源码地址:
/zuozewei/blog-example/tree/master/Performance-testing/01-test-tool/nGrinder/nGrinder-demo
相关系列:
性能工具之 nGrinder 入门安装及使用
性能工具之 nGrinder 源码安装性能工具之 nGrinder Get 请求脚本编写性能工具之 nGrinder Post 请求脚本
性能工具之 nGrinder 关联脚本编写
性能工具之 nGrinder 参数化脚本编写
性能工具之 nGrinder 区域配置
如果觉得《性能工具之 nGrinder 源码安装》对你有帮助,请点赞、收藏,并留下你的观点哦!