您现在的位置是:网站首页> 编程资料编程资料

nGrinder性能工具源码安装部署过程_其它综合_

2023-05-27 303人已围观

简介 nGrinder性能工具源码安装部署过程_其它综合_

nGrinderr(version: 3.4.1)是NAVER(韩国最大互联网公司NHN旗下搜索引擎网站)开源的性能测试工具,直接部署成web服务,支持多用户使用,可扩展性好,可自定义plugin。

nGrinder 是一款在一系列机器上执行 Groovy 或 Jython 测试脚本的应用,内部引擎是基于 Grinder。 nGrinder 使用 controller 和 agent 分别包装了 Grinder 的 console 和 agent ,而且扩展了多种功能使其能够支持并发测试。

nGrinder 由两个主要的组件组成

  • Controller

提供性能测试的web接口。
协调测试进程。
整理和显示测试的统计结果
让用户创建和修改脚本。

  • Agent

在代理服务器上加载运行测试进程和线程。
监控目标机器的系统性能(例如:CPU/MEMORY/网卡/磁盘)

一、前言

  • 为了更好了解 nGrinder 怎么工作?
  • 为二次开发做准备

 二、源码下载

下载地址:https://github.com/naver/ngrinder/releases

在这里插入图片描述

也可以直接通过:https://github.com/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 @EnableAspectJAutoProxy public class PerfTestServiceConfig implements ApplicationContextAware { @Autowired private 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); } @Override public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } }

再次配置 Tomcat:

在这里插入图片描述

选择运行方式:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择时时更新运行:

在这里插入图片描述
在这里插入图片描述

注意最好是加上 JVM 启动参数:

 -Xms1024m -Xmx1024m -XX:MaxPermSize=200m

防止内存出现异常

在这里插入图片描述

点击确定:

在这里插入图片描述

启动项目:

在这里插入图片描述

五、启动验证

打开浏览器验证是否成功:

http://localhost:8081/ngrinder/login

在这里插入图片描述

登录成功:

在这里插入图片描述

六、使用源码调试简单脚本

script-sample工程下的 pom.xml文件增加:

在这里插入图片描述

代码如下:

junitjunit4.12test

再次在 idea 中全局搜索:

groovy-all

在这里插入图片描述

查看版本号,统一修改为:

2.4.16

七、模仿编写脚本

通过平台生成脚本:

在这里插入图片描述

点击 R HEAD

在这里插入图片描述

查看脚本:

 importstatic net.grinder.script.Grinder.grinder importstatic org.junit.Assert.* importstatic org.hamcrest.Matchers.* import net.grinder.plugin.http.HTTPRequest import net.grinder.plugin.http.HTTPPluginControl import net.grinder.script.GTest import net.grinder.script.Grinder import net.grinder.scriptengine.groovy.junit.GrinderRunner import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess import 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.3 import org.junit.Before import org.junit.BeforeClass import org.junit.Test import org.junit.runner.RunWith import java.util.Date import java.util.List import java.util.ArrayList importHTTPClient.Cookie importHTTPClient.CookieModule importHTTPClient.HTTPResponse importHTTPClient.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 test publicstaticHTTPRequest request publicstaticNVPair[] headers = [] publicstaticNVPair[] params= [] publicstaticCookie[] cookies = [] @BeforeProcess publicstaticvoid beforeProcess() { HTTPPluginControl.getConnectionDefaults().timeout = 6000 test = newGTest(1, "www.baidu.com") request = newHTTPRequest() grinder.logger.info("before process."); } @BeforeThread publicvoid beforeThread() { test.record(this, "test") grinder.statistics.delayReports=true; grinder.logger.info("before thread."); } @Before publicvoid before() { request.setHeaders(headers) cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) } grinder.logger.info("before thread. init headers and cookies"); } @Test publicvoid test(){ HTTPResponse result = request.GET("https://www.baidu.com/", 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 脚本:

在这里插入图片描述提示: 本文由整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!

-六神源码网