Skip to content
Snippets Groups Projects
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);