[NGrinder] Groovy로 Get방식 Request 날리기 개발 이것저것

NGrinder는 NHN에서 개발한 서버부하 측정을위해 만들어진 Tool이다.

이번 포스팅에서는 NGrinder로 GET방식의 Data를 요청서버에 보내는 'Groovy' script를 보여주겠다.

코드는 아래와 같다.

많이 사용하는 json format으로 간단한 전송 parameter를 꾸려 보았다.

=========================================================

package org.ngrinder;

import static net.grinder.script.Grinder.grinder
import static org.junit.Assert.*
import static 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.lang.String
import org.slf4j.LoggerFactory
import ch.qos.logback.classic.Level

import HTTPClient.HTTPResponse
import HTTPClient.NVPair
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 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)
class TestRunner {
public static GTest test
public static HTTPRequest request
@BeforeProcess
public static void beforeProcess() {
HTTPPluginControl.getConnectionDefaults().timeout = 3000
test = new GTest(1, "Test1")
request = new HTTPRequest()
test.record(request);
grinder.logger.info("before process.");
LoggerFactory.getLogger("worker").setLevel(Level.INFO)
}

@BeforeThread 
public void beforeThread() {
grinder.statistics.delayReports=true;
grinder.logger.info("before thread.");
}

@Test
public void test(){
// 전송 Data를 생성하는 부분.
String title = "타이틀 데이터";
String body = "바디 데이터";
JSONObject testJson = new JSONObject();
testJson.put("title",title);
testJson.put("body",body);
String jsonDataStr = testJson.toString();
grinder.logger.info("JSON Data : " + jsonDataStr);

// 요청 URL (GET이기 때문에 parameter가 통째로 들어간다)
String requestStr = "http://www.REQUEST_SERVER.com?data="+jsonDataStr;
HTTPResponse result = null;
try{
result = request.GET(requestStr);
}catch(Exception e) {
grinder.logger.error("Error occured : " + e.toString());
fail();
}

if (result.statusCode == 301 || result.statusCode == 302) {
grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode); 
} else if (result.statusCode == 400) {
grinder.logger.error("[PSW] (400 ERROR) - Request URL : \n" + requestStr);
} else {
assertThat(result.statusCode, is(200));
}
}
}
=======================================================



통계 위젯 (블랙)

106147
763
295897

GoogleAdsenseResponsive

Cluster map