평상 부하 + 순간 부하를 위한 시나리오 문의

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

평상 부하 + 순간 부하를 위한 시나리오 문의

mulder
안녕하세요.
많은 도움을 주셔서 테스트 진행에 많은 도움이 되었습니다.

이번에 테스트 해볼 테스트는 평상 부하를 쭉 주는 동안 중간 중간 순간적인 부하를 주는 시나리오를 작성하려는데
도통 머리가 안돌아가네요.ㅠ

각각의 스크립트는 작성해서 개별로 실행은 잘되는데, 하나로 합치는 과정에서 조금 어려움이 있습니다.
아이디어나 조언 부탁 드립니다.

감사합니다.
Reply | Threaded
Open this post in threaded view
|

Re: 평상 부하 + 순간 부하를 위한 시나리오 문의

junoyoon
Administrator
저라면...

// 격분마다 load 발생
if (((System.currentTImeMillis / 60000) % 2) == 0) {
   grinder.sleep(1000);
}

이런식으로 로드를 잠시 쉬는 텀을 주겠습니다.


2014년 3월 18일 오전 11:52, mulder [via ngrinder] <[hidden email]>님이 작성:
안녕하세요.
많은 도움을 주셔서 테스트 진행에 많은 도움이 되었습니다.

이번에 테스트 해볼 테스트는 평상 부하를 쭉 주는 동안 중간 중간 순간적인 부하를 주는 시나리오를 작성하려는데
도통 머리가 안돌아가네요.ㅠ

각각의 스크립트는 작성해서 개별로 실행은 잘되는데, 하나로 합치는 과정에서 조금 어려움이 있습니다.
아이디어나 조언 부탁 드립니다.

감사합니다.


If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/-tp1399.html
To start a new topic under ngrinder-user-kr, email [hidden email]
To unsubscribe from ngrinder-user-kr, click here.
NAML

Reply | Threaded
Open this post in threaded view
|

Re: 평상 부하 + 순간 부하를 위한 시나리오 문의

mulder
감사합니다. 말씀해주신 부분 적용하여 스크립트 작성 후 실행하니
아래와 같이 중간중간 약 15-20초 정도 딜레이 후에 스크립트를 수행하는 현상이 발생되어 문의 드립니다.
지속적인 부하를 계속 주다가 60초 마다 순간 부하를 주려고 했습니다.
소스나 세팅에 문제가 있는지 한번 확인 부탁 드립니다.
감사합니다.





# -*- coding:utf-8 -*-
from net.grinder.script import Test
from net.grinder.script.Grinder import grinder
from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
from org.slf4j import LoggerFactory
from ch.qos.logback.classic import Level
from ch.qos.logback.classic import Logger
from java.lang import System
control = HTTPPluginControl.getConnectionDefaults()
connectionDefaults = HTTPPluginControl.getConnectionDefaults()
httpUtilities = HTTPPluginControl.getHTTPUtilities()                                                        
 
test1 = Test(1, "Login stress")
test2 = Test(2, "common stress")
request1 = HTTPRequest()
request2 = HTTPRequest()

test_host = "http://www.google.co.kr/"
request1 = test1.wrap(HTTPRequest(url=test_host))
request2 = test2.wrap(HTTPRequest(url=test_host))

# Make any method call on request increase TPS
test1.record(request1)
test2.record(request2)
test_query_file = "D:\url_all.txt"
globalURLList = []
 
class TestRunner:

    def __init__(self):

        grinder.statistics.delayReports=True

        totalProcessCount = grinder.getProperties().getInt("grinder.processes", 1)
        totalThreadCount = grinder.getProperties().getInt("grinder.threads", 1)
        agentNumber = grinder.agentNumber
        processNumber = grinder.processNumber
        threadNumber = grinder.threadNumber
       
        self.curNumber = (agentNumber * totalProcessCount * totalThreadCount) + (processNumber * totalThreadCount) + threadNumber;        
               
        self.urlCount = 0
       
        if self.urlCount == 0 :
            fpQuery = open(test_query_file, "r")
           
            for line in fpQuery:
                globalURLList.append(line)
   
        self.phase1CompleteBarrier = grinder.barrier("Phase 1")      
   
   
    def __call__(self):
       
        #thread number
        tid = grinder.threadNumber
       
        #unique thread
        if tid % 7 == 1:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 2:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 3:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 4:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 5:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 6:
            self.test_host = "http://www"
            self.statichost = "http://www"      
        else:
            self.test_host = "http://www"
            self.statichost = "http://www"
       
        result2 = request1.GET(self.test_host)
       
        if result2.getStatusCode() == 200 :
            grinder.statistics.forLastTest.success = 1

        elif result2.getStatusCode() in (301, 302) :
            grinder.logger.warn("Warning. The response may not be correct. The response code was %d." %  result2.getStatusCode())
            grinder.statistics.forLastTest.success = 1
       
        else :
            print(result2.getStatusCode())
            grinder.statistics.forLastTest.success = 0  
           
         #phase 1 start
        mils = System.currentTimeMillis()
        # run every 60000(1 minute)
        if (mils / 60000) % 2 == 0 :
           
            result1 = request1.GET(globalURLList[self.curNumber])
           
            if result1.getStatusCode() == 200 :
                grinder.statistics.forLastTest.success = 1
   
            elif result1.getStatusCode() in (301, 302) :
                grinder.logger.warn("Warning. The response may not be correct. The response code was %d." %  result1.getStatusCode())
                grinder.statistics.forLastTest.success = 1
           
            else :
                print(result1.getStatusCode())
                grinder.statistics.forLastTest.success = 0
           
            self.phase1CompleteBarrier.await()
Reply | Threaded
Open this post in threaded view
|

Re: 평상 부하 + 순간 부하를 위한 시나리오 문의

junoyoon
Administrator
 self.phase1CompleteBarrier.await()  를 제거해 보세요.


2014-03-18 16:25 GMT+09:00 mulder [via ngrinder] <[hidden email]>:
감사합니다. 말씀해주신 부분 적용하여 스크립트 작성 후 실행하니
아래와 같이 중간중간 약 15-20초 정도 딜레이 후에 스크립트를 수행하는 현상이 발생되어 문의 드립니다.
지속적인 부하를 계속 주다가 60초 마다 순간 부하를 주려고 했습니다.
소스나 세팅에 문제가 있는지 한번 확인 부탁 드립니다.
감사합니다.





# -*- coding:utf-8 -*-
from net.grinder.script import Test
from net.grinder.script.Grinder import grinder
from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
from org.slf4j import LoggerFactory
from ch.qos.logback.classic import Level
from ch.qos.logback.classic import Logger
from java.lang import System
control = HTTPPluginControl.getConnectionDefaults()
connectionDefaults = HTTPPluginControl.getConnectionDefaults()
httpUtilities = HTTPPluginControl.getHTTPUtilities()                                                        
 
test1 = Test(1, "static stress")
test2 = Test(2, "common stress")
request1 = HTTPRequest()
request2 = HTTPRequest()

# Make any method call on request increase TPS
test1.record(request1)
test2.record(request2)
 
class TestRunner:

    def __init__(self):

        grinder.statistics.delayReports=True
        pass
   
    def __call__(self):
       
        #thread number
        tid = grinder.threadNumber
       
        #unique thread
        if tid % 7 == 1:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 2:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 3:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 4:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 5:
            self.test_host = "http://www"
            self.statichost = "http://www"
        elif tid % 7 == 6:
            self.test_host = "http://www"
            self.statichost = "http://www"      
        else:
            self.test_host = "http://www"
            self.statichost = "http://www"
       
        result2 = request1.GET(self.test_host)
       
        if result2.getStatusCode() == 200 :
            grinder.statistics.forLastTest.success = 1

        elif result2.getStatusCode() in (301, 302) :
            grinder.logger.warn("Warning. The response may not be correct. The response code was %d." %  result2.getStatusCode())
            grinder.statistics.forLastTest.success = 1
       
        else :
            print(result2.getStatusCode())
            grinder.statistics.forLastTest.success = 0  
           
         #phase 1 start
        mils = System.currentTimeMillis()
        # run every 60000(1 minute)
        if (mils / 60000) % 2 == 0 :
           
            result1 = request1.GET(globalURLList[self.curNumber])
           
            if result1.getStatusCode() == 200 :
                grinder.statistics.forLastTest.success = 1
   
            elif result1.getStatusCode() in (301, 302) :
                grinder.logger.warn("Warning. The response may not be correct. The response code was %d." %  result1.getStatusCode())
                grinder.statistics.forLastTest.success = 1
           
            else :
                print(result1.getStatusCode())
                grinder.statistics.forLastTest.success = 0
           
            self.phase1CompleteBarrier.await()


If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/-tp1399p1401.html
To start a new topic under ngrinder-user-kr, email [hidden email]
To unsubscribe from ngrinder-user-kr, click here.
NAML