This commit is contained in:
2025-07-02 21:55:07 +09:00
commit fa63330e69
855 changed files with 432271 additions and 0 deletions

133
sample/dev/talk/js/k6.js Normal file
View File

@@ -0,0 +1,133 @@
import ws from 'k6/ws';
import { check, sleep } from 'k6';
import stomp from 'k6/x/stomp';
import {SharedArray} from 'k6/data';
const users = new SharedArray('users', function() {
return [{"sabun":"17131427","name":"권태현","talkId":"0a9cd322767b40069dbd7f5fe5b69401","workid":"HA0001","worknm":"SD요원 처리"}]
})
const currentDate = (idx) => {
const date = new Date();
// 날짜를 원하는 형식으로 포맷팅
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 월은 0부터 시작하므로 +1
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
const milliseconds = Number(String(date.getMilliseconds()).padEnd(6, '0')) + idx;
const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
return formattedDate;
}
export const options = {
// vus: 2033,
// Iterations: 2033,
stages: [
{ duration: '30s', target: 200 }, // 1 500
{ duration: '1m', target: 400 }, // 2 1000
{ duration: '1m', target: 600 }, // 2 1000
{ duration: '2m', target: 1000 }, // 2 1000
{ duration: '3m', target: 2033 }, // 2 1000
{ duration: '1m', target: 1000 }, // 2 1000
{ duration: '1m', target: 500 }, // 2 1000
{ duration: '30s', target: 0 }, // 1 0
]
};
const WEBSOCKET_URL = "http://devtalk.kospo.co.kr:3000/stomp/talk"
const ROOM_DESTINATION = "/exchange/talk.exchange/room."
const MESSAGE_DESTINATION = "/queue/talk.queue"
export default function () {
const userIndex = __VU % users.length;
const user = users[userIndex];
// connect to broker
// const stompClient = stomp.connect({
// protocol: 'tcp',
// addr: 'localhost:61613',
// timeout: '15s',
// tls: false,
// user: 'talk',
// pass: 'kospo2024!',
// heartbeat: {
// incoming: '20s',
// outgoing: '20s',
// },
// host: '/',
// verbose: true,
// read_buffer_size: 4096,
// read_channel_capacity: 20,
// write_buffer_size: 4096,
// write_channel_capacity: 20,
// });
const stompClient = stomp.connect({
protocol: 'tcp',
addr: 'http://devtalk.kospo.co.kr:3000/stomp/talk',
timeout: '15s',
tls: false,
heartbeat: {
incoming: '20s',
outgoing: '20s',
},
host: '/',
verbose: true,
read_buffer_size: 4096,
read_channel_capacity: 20,
write_buffer_size: 4096,
write_channel_capacity: 20,
})
try {
const subscribeOpts = {
ack: 'client' // client-individual or auto (default)
}
const roomSub = stompClient.subscribe(`${ROOM_DESTINATION}${user.talkId}`, subscribeOpts);
const insDate = currentDate(__VU).padEnd(26, '0');
const messageParam = {
type: "MESSAGE",
insSabun: user.sabun,
insName : user.name,
insDate : insDate,
message: '',
talkId: user.room,
workId: user.workId,
workNm: user.workNm,
introOwner: '',
talkAttachDtos: [],
attach: null,
}
messageParam.message = `부하 테스트 ${user.name} ${user.room}`
stompClient.send(`${MESSAGE_DESTINATION}`, 'application/json', JSON.stringify(messageParam))
// setTimeout(stompClient.unsubscribe, 240000)
sleep(10)
} catch(e) {
console.error(e);
}
}
export function setup() {
console.log("text setup completed with users : ", users.length)
return {userCount: users.length}
}
export function teardown(data) {
// disconnect from broker
console.log('test completed total users tested : ', data.userCount)
}