2025년 3월 14일 금요일

grinder jython


class RequestBuilder:
    def __init__(self, grinder_request, logger):
        self.grinder_request = grinder_request  # nGrinder의 HTTPRequest 객체
        self.logger = logger  # nGrinder의 Logger 객체
        self.base_url = ""
        self.request_url = ""
        self.port = 80
        self.parameters = {}
        self.cookies = {}

    def set_base_url(self, base_url):
        self.base_url = base_url
        return self

    def set_request_url(self, request_url):
        self.request_url = request_url
        return self

    def set_port(self, port):
        self.port = port
        return self

    def set_parameters(self, params):
        self.parameters.update(params)
        return self

    def set_cookies(self, cookies):
        self.cookies.update(cookies)
        return self

    def build_full_url(self):
        param_string = "&".join([f"{k}={v}" for k, v in self.parameters.items()])
        return f"{self.base_url}:{self.port}{self.request_url}?{param_string}"

    def execute_get(self):
        full_url = self.build_full_url()
        self.logger.info(f"GET 요청 URL: {full_url}")  # 로그 추가

        response = self.grinder_request.GET(full_url)
        self.logger.info(f"GET 응답: {response.text}")  # 응답 로그 기록
        return response

    def execute_post(self):
        full_url = f"{self.base_url}:{self.port}{self.request_url}"
        self.logger.info(f"POST 요청 URL: {full_url}")  # 로그 추가
        self.logger.info(f"POST 요청 데이터: {self.parameters}")  # 요청 데이터 로그

        response = self.grinder_request.POST(full_url, self.parameters)
        self.logger.info(f"POST 응답: {response.text}")  # 응답 로그 기록
        return response

from net.grinder.script.Grinder import grinder
from net.grinder.plugin.http import HTTPRequest
from common_module import RequestBuilder

# nGrinder의 HTTP Request 객체 생성
http_request = HTTPRequest()

# Logger 객체 생성
logger = grinder.logger

# RequestBuilder 인스턴스 생성
builder = RequestBuilder(http_request, logger)
builder.set_base_url("http://example.com") \
       .set_request_url("/api/test") \
       .set_port(8080) \
       .set_parameters({"key1": "value1", "key2": "value2"}) \
       .set_cookies({"SESSION": "abc123"})

# GET 요청 실행 및 로그 출력
get_response = builder.execute_get()
print(f"GET Response: {get_response.text}")

# POST 요청 실행 및 로그 출력
post_response = builder.execute_post()
print(f"POST Response: {post_response.text}")

댓글 없음: