1. 程式人生 > 程式設計 >nGrinder效能工具原始碼安裝部署過程

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效能工具原始碼安裝部署過程

一、前言

  • 為了更好了解 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(App程式設計客棧licationContext apwww.cppcns.complicationContext) { 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>
&lwww.cppcns.comt;/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 threhttp://www.cppcns.comad. 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 原始碼安裝的資料請關注我們其它相關文章!