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(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 原始碼安裝的資料請關注我們其它相關文章!