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文件增加:

代码如下:

<!-- https://mvnrepository.com/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.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 脚本:

输入名字点击保存即可:

新建完毕把刚才脚本复制过来修改下方法名称:

点击运行:

可以看到提示:

在 Idea 菜单栏->Run->Edit Configurations->Default->Junit->在VM options 填写自定义配置,点击 Apply 按钮保存配置即生效:

再次点击:

运行结果如下:

到这里本机脚本调试成功。

八、小结

下次再次分享本地参数化与 Post 请求

以上就是性能工具之 nGrinder 源码安装的详细内容,更多关于nGrinder 源码安装的资料请关注我们其它相关文章!

(0)

相关推荐

  • Docker部署nGrinder性能测试平台过程解析

    什么是nGrinder? nGrinder是用于压力测试的平台,使您可以同时执行脚本创建,测试执行,监视和结果报告生成器.开源nGrinder通过消除不便并提供集成环境,提供了进行压力测试的简便方法.它是根据Apache许可版本2.0许可的,是基于Grinder的开源的web性能测试平台,由韩国最大互联网公司NHN公司的开发团队进行了重新设计和完善. http://naver.github.io/ngrinder/ nGrinder由三个组件组成 controller:一个Web应用程序,使性能

  • nGrinder性能工具源码安装部署过程

    nGrinderr(version: 3.4.1)是NAVER(韩国最大互联网公司NHN旗下搜索引擎网站)开源的性能测试工具,直接部署成web服务,支持多用户使用,可扩展性好,可自定义plugin. nGrinder 是一款在一系列机器上执行 Groovy 或 Jython 测试脚本的应用,内部引擎是基于 Grinder. nGrinder 使用 controller 和 agent 分别包装了 Grinder 的 console 和 agent ,而且扩展了多种功能使其能够支持并发测试. nG

  • apache的源码安装详细过程全纪录

    最近要开始学习nagios监控方面的知识了,但是nagios与apache结合的比较紧密,所以本篇文章就先把apache的源码安装学习下. 我们现在分以下步骤进行安装apache: 1. 安装编译环境 2. 卸载原有apache 3. 下载解压源码包 4. 安装apache 5. 测试apache 6. 查看apache安装生成的目录 7. 查看apache的配置文件 8. apache加入系统服务 一.安装编译环境 在安装apache之前,我们需要安装编译apache时所需要的相关软件包,如下

  • 源码安装apache脚本部署过程详解

    目录 源码安装apache脚本部署 源码安装apache脚本部署 [root@localhost ~]# ls anaconda-ks.cfg httpd.tar.xz [root@localhost ~]# tar xf httpd.tar.xz 解压存放脚本的压缩包 [root@localhost ~]# ls anaconda-ks.cfg httpd httpd.tar.xz [root@localhost ~]# cd httpd/ [root@localhost httpd]# ls

  • mysql-5.5.28源码安装过程中错误总结

    介绍一下关于mysql-5.5.28源码安装过程中几大错误总结,希望此文章对各位同学有所帮助.系统centOS 6.3 mini (没有任何编译环境)预编译环境首先装了众所周知的 cmake(yum install cmake -y) 复制代码 代码如下: ../bootstrap Error when bootstrapping CMake: Cannot find appropriate C compiler on this system. Please specify one using

  • mysql5.6.8源码安装过程

    内核: [root@opop ~]# cat /etc/centos-release CentOS release 6.8 (Final) [root@opop ~]# uname -a Linux opop 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 开始安装: [root@opop ~]# for i in `rpm -qa | grep mysql`;do

  • CentOs7 64位 mysql 5.6.40源码安装过程

    1.首先安装依赖包,避免在安装过程中出现问题 [root@chufeng yusen]# yum -y install wget vim bash-completion [root@chufeng yusen]# yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel 2.下载mysql-5.6.40.tar.gz MySQLxxx下载地址: https://dev.mysql.com/downloads/m

  • 开源数据库postgreSQL13在麒麟v10sp1源码安装过程详解

    一.中标麒麟v10sp1在飞腾2000+系统安装略 二.系统依赖包安装 [root@ft2000db opt]# yum install bzip* [root@ft2000db opt]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Tercel) Kernel: 4.19.90-17.ky10.aarch64 Buil

  • 国产化设备鲲鹏CentOS7上源码安装Python3.7的过程详解

    目录 获取源代码 准备工作(安装依赖) 生成Makefile 构建&&安装 添加环境变量 其他小问题 找不到libpython3.7m.so.1.0 升级pip上的小坑 影响pyinstaller打包后python程序移植性的因素 具体编译过成与正常的Python源代码在x86平台上的过程无异,此篇随笔仅当用作复制黏贴的备忘录.不得不说在一个老旧系统上安装一个老旧的Python版本,从头编译一个Python还是一个较为稳健的选择. 获取源代码 Python官网处下载所需源码版本[https

  • CentOS7.4 源码安装MySQL8.0的教程详解

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 以下为本人2018.4.23日安装过程的记录.整个过程大概需要一个小时,make && make install过程需要的时间较长. 一.环境 CentOS7.4   64位  最小化安装 二.准备工作 1.安装依赖 yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio

  • 解析从小程序开发者工具源码看原理实现

    如何查看小程序开发者工具源码 下面我们通过微信小程序开发者工具的源码来说说小程序的底层实现原理.以开发者工具版本号State v1.02.1904090的源码来窥探小程序的实现思路.如何查看微信源码,对于mac用户而言,查看微信小程序开发者工具的包内容,然后进入Contents/Resources/app.nw/js/core/index.js,注释掉如下代码就可以查看开发者工具渲染后的代码. // 打开 inspect 窗口 if (nw.App.argv.indexOf('inspect')

随机推荐