import { getConnectionPool, resetConnectionPool } from '../dist/db/connection-pool.js';
async function testConnectionPool() {
console.log('🧪 Тестируем ConnectionPool...\n');
try {
// Тест 1: Получение экземпляра
console.log('1️⃣ Получаем экземпляр ConnectionPool...');
const pool1 = getConnectionPool();
const pool2 = getConnectionPool();
if (pool1 === pool2) {
console.log('✅ Singleton паттерн работает: pool1 === pool2');
} else {
console.log('❌ Singleton паттерн не работает');
}
// Тест 2: Проверка статуса
console.log('\n2️⃣ Проверяем статус пула...');
const status = pool1.getStatus();
console.log('📊 Статус пула:', status);
// Тест 3: Инициализация
console.log('\n3️⃣ Инициализируем пул...');
await pool1.initialize();
console.log('✅ Пул инициализирован');
// Тест 4: Проверка подключения
console.log('\n4️⃣ Проверяем подключение...');
const isConnected = await pool1.isConnected();
console.log('🔌 Подключение к БД:', isConnected ? '✅' : '❌');
// Тест 5: Получение SQLiteClient
console.log('\n5️⃣ Получаем SQLiteClient...');
const sqliteClient = await pool1.getSQLiteClient();
console.log('✅ SQLiteClient получен:', typeof sqliteClient);
// Тест 6: Проверка статистики
console.log('\n6️⃣ Получаем статистику БД...');
try {
const stats = await pool1.getStats();
console.log('📈 Статистика БД:', stats);
} catch (error) {
console.log('⚠️ Ошибка получения статистики:', error.message);
}
// Тест 7: Проверка повторного использования
console.log('\n7️⃣ Проверяем повторное использование...');
const sqliteClient2 = await pool1.getSQLiteClient();
if (sqliteClient === sqliteClient2) {
console.log('✅ SQLiteClient переиспользуется');
} else {
console.log('❌ SQLiteClient не переиспользуется');
}
// Тест 8: Закрытие пула
console.log('\n8️⃣ Закрываем пул...');
await pool1.close();
console.log('✅ Пул закрыт');
// Тест 9: Сброс пула
console.log('\n9️⃣ Сбрасываем пул...');
resetConnectionPool();
console.log('✅ Пул сброшен');
// Тест 10: Создание нового экземпляра
console.log('\n🔟 Создаем новый экземпляр...');
const pool3 = getConnectionPool();
const status3 = pool3.getStatus();
console.log('📊 Статус нового пула:', status3);
console.log('\n🎉 Все тесты ConnectionPool завершены успешно!');
} catch (error) {
console.error('❌ Ошибка в тестах ConnectionPool:', error);
}
}
testConnectionPool().catch(console.error);