import http from 'k6/http'
import {check} from 'k6'
const SUT_HOST = '<https://cbt3-cafe-ads-api.dev.daum.net>'
//CPU 사용량 70% 도달시점의 VU, TPS 기록 용
export const options = {
scenarios: {
rps_200: {
executor: "constant-arrival-rate",
rate: 200, // timeUnit 당 iteration 시작 횟수
timeUnit: "1s", // 1초 기준 = 200 RPS
duration: "10m",
preAllocatedVUs: 200, // 미리 확보할 VU (초기값, 부족하면 늘릴 수 있음)
maxVUs: 1000, // VU 상한(여기까지 늘려서 rate 맞추려 함)
exec: "testPowerLink",
},
},
thresholds: {
http_req_failed: ["rate<0.01"], // 실패율 1% 미만
http_req_duration: ["p(95)<300"], // p95 300ms 미만(예시)
dropped_iterations: ["count==0"], // 목표 RPS를 못 맞춘 경우 감지
},
};
function testPowerLink() {
const res = http.get(`${SUT_HOST}/api/v1/powerlink/search?channel=m_daumcafe.ch2&pageSize=3&pageNo=1&query=%EC%BB%A4%ED%94%BC&bucket=1&age=25&gender=M&category1=%EC%9D%8C%EC%8B%9D%2F%EB%A7%9B%EC%A7%91&category2=%EC%B9%B4%ED%8E%98%2F%EB%94%94%EC%A0%80%ED%8A%B8&category3=%EC%B9%B4%ED%8E%98&category4=%EC%9B%90%EB%91%90%EC%BB%A4%ED%94%BC&title=%EB%A7%9B%EC%9E%88%EB%8A%94%20%EC%BB%A4%ED%94%BC%20%EC%B0%BE%EC%95%84%EC%9A%94&content=%EC%A7%91%20%EA%B7%BC%EC%B2%98%EC%97%90%EC%84%9C%20%EB%A7%9B%EC%9E%88%EB%8A%94%20%EC%BB%A4%ED%94%BC%20%EB%A7%88%EC%8B%A4%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EA%B3%B3%20%EC%B6%94%EC%B2%9C%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94...&keywordGroup=coffee_group&keywords=%EC%BB%A4%ED%94%BC%2C%EC%9B%90%EB%91%90%2C%EC%B9%B4%ED%8E%98`);
check(res, {
'PowerLink: status 200': (r) => r.status === 200,
'PowerLink: fast response': (r) => r.timings.duration < 500,
});
}
function testPowerContents() {
const res = http.get(`${SUT_HOST}/api/v1/powercontents/search?channel=m_daumcafe.ch3&pageSize=3&pageNo=1&minAdCount=1&query=%EC%BB%A4%ED%94%BC&age=25&gender=M`);
check(res, {
'PowerContents: status 200': (r) => r.status === 200,
'PowerContents: fast response': (r) => r.timings.duration < 500,
});
}