失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 性能工具之 nGrinder 源码安装

性能工具之 nGrinder 源码安装

时间:2022-05-31 07:49:31

相关推荐

性能工具之 nGrinder 源码安装

文章目录

一、前言二、源码下载三、本地配置四、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 源码安装》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。