|
안녕하세요.
현재 jython 스크립트를 이용해서 Oracle DB에 직접 세션을 맺어서 SQL 부하를 주는 부하테스트를 진행중입니다.
현재 사용하고 있는 스크립트는 아래와 같습니다.
python에 대해 이해가 부족한 상황이라 script example의 connection 부분만 수정해서 테스트 하고 있습니다.
궁금한 점은 다음과 같습니다.
아래 스크립트에서 select query를 수행하기 전에 db connection을 맺고 sql 수행이 완료되면 connection을 닫는 걸로 보입니다.
부하테스트 수행을 하였을 때, 아래 두가지 수행 중 어떤 식으로 수행이 이뤄지는지 아니면, 다른 방법으로 수행되는지 궁금합니다.
그리고, 만약 1의 방법대로 수행된다면, 2의 방법으로 수행하고자 하려면 script를 어떻게 수정해야 하는지 궁금합니다.
1. 할당된 Vuser 만큼 세션을 맺어서
1) db connection
2) sql 1회 수행
3) connection close
이 순서로 정해진 시간동안 계속 반복
2. 할당된 Vuser 만큼 세션을 맺어서
1) db connection
2) sql 정해진 시간동안 수행
3) connection close
-- jython script
# -*- coding:utf-8 -*-
# Oracle Database test.
#
from java.sql import DriverManager
from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
from oracle.jdbc import OracleDriver
from java.util import Random
from java.lang import System
test1 = Test(1, "Database select")
random = Random(long(System.nanoTime()))
# Load the JDBC driver.
DriverManager.registerDriver(OracleDriver())
def getConnection():
return DriverManager.getConnection("jdbc:oracle:thin:@192.168.56.2:1521:o2m", "scott", "tiger")
def ensureClosed(object):
try: object.close()
except: pass
class TestRunner:
def __init__(self):
test1.record(TestRunner.__call__)
grinder.statistics.delayReports=True
pass
def __call__(self): connection = None
selectStatement = None
try:
# in this test, we will create connection and statement in every test transaction.
connection = getConnection() selectStatement = connection.createStatement() selectStatement.execute("select * from temp where dept_code like 'CA%'")
finally:
ensureClosed(selectStatement)
|