Jmeter SSE 테스트
💬 서비스에서 가장 핵심이 되는 경매 입찰 기능이 SSE로 구현되어 있습니다. Jmeter에서 SSE 테스트 환경을 구성을 해야 합니다.
✔ 스크립트 작성
💬 Jmeter에서 SSE 테스트 환경을 구성하기 위해서는 JSR223 Sampler에 Groovy 언어로 스크립트를 작성을 해야 합니다. 스크립트에 EventSource 라이브러리를 사용해 SSE 테스트 기능을 작성했습니다.
import com.launchdarkly.eventsource.EventSource import com.launchdarkly.eventsource.EventHandler import com.launchdarkly.eventsource.MessageEvent import java.net.URI import java.io.StringReader import java.util.concurrent.TimeUnit import javax.json.Json import javax.json.JsonObject import javax.json.JsonReader import javax.json.JsonValue class SimpleEventHandler implements EventHandler { List<String> respList = [] void onOpen() { log.info("The connection has been opened") } void onClosed() { log.info("The connection has been closed") } void onMessage(String Event, MessageEvent messageEvent) { if (Event.equals("BID_PRICE_UPDATE")) { respList.add(messageEvent.getData()) } } void onComment(String comment) { log.info(comment) } void onError(Throwable t) { log.info("Error $t") } } EventHandler eH = new SimpleEventHandler() String responseList = "" String[] parameters = Parameters.split(",") String uri = parameters[0] long reconnectionTimeMs = parameters[1].toLong() long sleepDuration = parameters[2].toLong() EventSource.Builder builder = new EventSource.Builder(eH, URI.create(uri)) EventSource eventSource = builder.build() eventSource.setReconnectTimeMillis(reconnectionTimeMs) try { eventSource.start() TimeUnit.SECONDS.sleep(sleepDuration) } catch(Exception e) { eventSource.close() } finally { eventSource.close() } for (String bidPrice : eH.respList) { responseList = responseList + "Updated Bid Price: ${bidPrice}\n" } SampleResult.setResponseData(responseList, "866")
✔ 라이브러리 설치
💬 Jmeter에서는 EventSource에 필요한 라이브러리가 별도로 제공하지 않습니다. 위 스크립트에서 EventSource에 관련된 라이브러리가 없다는 에러가 발생합니다.
💬 설치 라이브러리 목록
➡ okio-jvm-3.5.0.jar
➡ okio-3.5.0.jar
➡ okhttp-eventsource-3.0.0.jar
➡ okhttp-4.11.0.jar
➡ launchdarkly-logging-1.1.1.jar
💬 설치 위치
➡ [내 로컬 기준] /opt/homebrew/Cellar/jmeter/5.6.2/libexec/lib/ext
✔ 문제
💢 스크립트가 정상적으로 실행은 되었으나 서버에서 보내는 데이터가 받아지지 않는 문제가 발생합니다. 서버에서는 "전송 오류" 에러가 발생하고 있었습니다.
💬 직면한 문제를 해결하려고 노력했으나 시간 부족으로 당일 날 해결을 하지 못했습니다. 다음 날 더 확인해 보며 해결할 수 있었습니다.
✅ SSE 테스트 문제 해결
'개발일지 > TIL' 카테고리의 다른 글
[230821] 서버에서 클라이언트로 SSE 예외 전달하기 (0) | 2023.08.21 |
---|---|
[230819] Jmeter SSE 테스트 데이터 전송 받지 못하는 문제 (0) | 2023.08.19 |
[230817] Header에서 Authorization 추출이 안되는 안되는 문제 (0) | 2023.08.17 |
[230816] Jmeter 아이디어 업데이트 성능 테스트 (1) | 2023.08.17 |
[230815] Jmeter 아이디어 삭제 기능 테스트 (1) | 2023.08.15 |