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,
	});
}