Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Groovy Script Snippet


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!!
    }
}
comments powered by Disqus
Page info
viewed 2711 times
translations en
Author
posted last year by
junoyoon
Contributors
updated 10 months ago by
View revisions
Share this article