Groovy Script Snippet - songeunwoo/ngrinder GitHub Wiki
HTTP POST Call
@Test
public void test1(){
request1.POST("http://www.google.com", [new NVPair("key1","value1"), new NVPair("key2":"value2")] as NVPair[])
}
OR
@Test
public void test1(){
request1.POST("http://www.google.com", nvs(["key1":"value1", "key2":"value2"]))
}
// Provide a method to convert map to NVPair array
def nvs(def map) {
def nvs = []
map.each {
key, value -> nvs.add(new NVPair(key, value))
}
return nvs as NVPair[]
}
How to assert test result
def result = request1.GET("http://www.google.co.kr")
assertThat(result.statusCode, is(200)) // result status code assetion
assertThat(result.text, containsString("google")) // result text assertion
How to record the @Test method.. not HTTPRequest. This is very useful to define a transaction.
@RunWith(GrinderRunner)
class TestRunner {
static GTest test1
static GTest test2
@BeforeProcess
public static void beforeProcess() {
test1 = new GTest(1,"test1_statistics")
test2 = new GTest(2,"test2_statistics")
request1 = new HTTPRequest();
HTTPPluginControl.getConnectionDefaults().timeout = 6000
grinder.logger.info("before process.");
}
@BeforeThread
public void beforeThread() {
test1.record(this, "doTransaction1"); // Record current object’s doTransaction1 method into test1.
test2.record(this, "doTransaction2"); // Record current object’s doTransaction2 method into test2.
grinder.statistics.delayReports=true;
grinder.logger.info("before thread.");
}
@Test
public void doTransaction1(){
// Do transactions here!!
}
@Test
public void doTransaction2(){
// Do another transactions here!!
}
}
How to skip some initialization code for the each transaction.
@RunWith(GrinderRunner)
class TestRunner {
static GTest test1
@BeforeProcess
public static void beforeProcess() {
test1 = new GTest(1,"test1_statistics")
request1 = new HTTPRequest();
HTTPPluginControl.getConnectionDefaults().timeout = 6000
grinder.logger.info("before process.");
}
@BeforeThread
public void beforeThread() {
test1.record(this, "doTransactionReal"); // Record current object’s doTransactionReal method into test1.
grinder.statistics.delayReports=true;
grinder.logger.info("before thread.");
}
@Test
public void doTransaction(){
doInit();
doTransactionReal();
}
public doInit() {
// This part won't affect the statistics
}
public void doTransactionReal(){
// Do actual transactions here!!
}
}
How to provide 0.5% RunRate.
@RunWith(GrinderRunner)
class TestRunner {
static GTest test1
@BeforeProcess
public static void beforeProcess() {
test1 = new GTest(1,"test1_statistics")
request1 = new HTTPRequest();
HTTPPluginControl.getConnectionDefaults().timeout = 6000
grinder.logger.info("before process.");
}
@BeforeThread
public void beforeThread() {
test1.record(this, "doTransactionReal"); // Record current object’s doTransactionReal method into test1.
grinder.statistics.delayReports=true;
grinder.logger.info("before thread.");
}
def i = 0
@RunRate(1) // Provide 1% run rate
@Test
public void doTransaction(){
if (i < 1) {
i++
return // Do nothing when i = 0
}
i = 0
doTransactionReal();
}
public void doTransactionReal(){
// Do actual transactions here!!
}
}