performance.test.js 7.43 KiB
// services/performance.test.js
require('dotenv').config();
const { Op } = require('sequelize');
const ScheduleService = require('./scheduleService');
const sequelize = require('../config/sequelize');
const Schedule = require('../models/schedule');
class PerformanceTester {
constructor() {
this.testUserIds = [1, 2, 3, 4, 5]; // 5명의 테스트 유저만 사용
this.results = {
operations: {
createSchedules: [],
getAllSchedules: [],
updateSchedules: [],
deleteSchedules: []
},
summary: {}
};
}
async setup() {
try {
await sequelize.authenticate();
console.log('Database connection established successfully.');
await Schedule.destroy({ where: {}, force: true });
console.log('Test data cleaned successfully.');
console.log('Using existing user IDs:', this.testUserIds);
} catch (error) {
console.error('Setup failed:', error);
throw error;
}
}
async runLoadTest() {
console.log('Starting simplified test...');
const testSchedules = this.testUserIds.map((userId, i) => ({
userId,
title: `Test Schedule ${i}`,
is_fixed: true,
time_indices: [i * 2, i * 2 + 1]
}));
console.log('Test schedules:', testSchedules);
const transaction = await sequelize.transaction();
try {
// Create 테스트
console.log('\nTesting createSchedules...');
const createdSchedules = [];
for (const schedule of testSchedules) {
const result = await this.measureOperation('createSchedules', async () => {
const created = await ScheduleService.createSchedules(schedule, transaction);
console.log(`Created schedule for user ${schedule.userId}`);
return created;
});
if (result) createdSchedules.push(result);
}
await transaction.commit();
// 생성된 스케줄 확인
const verifySchedules = await Schedule.findAll({
where: {
user_id: { [Op.in]: this.testUserIds }
},
raw: true
});
console.log('\nVerified schedules:', verifySchedules);