| const sessionManager = require('./lib/session-manager');
|
| const fs = require('fs');
|
| const path = require('path');
|
|
|
| async function testSessionSystem() {
|
| console.log('π§ͺ Testing Session-Based Storage System\n');
|
|
|
|
|
| console.log('1. Creating new session...');
|
| const session = sessionManager.createSession();
|
| console.log(`β
Session created: ${session.sessionId}`);
|
| console.log(` Directory: ${session.directory}`);
|
| console.log(` Created at: ${new Date(session.createdAt).toLocaleString()}`);
|
|
|
|
|
| console.log('\n2. Adding files to session...');
|
|
|
| const mockFiles = [
|
| { filename: 'test1.docx', reportId: 'report-1', size: 1024 },
|
| { filename: 'test2.docx', reportId: 'report-2', size: 2048 },
|
| { filename: 'test3.docx', reportId: 'report-3', size: 1536 }
|
| ];
|
|
|
| mockFiles.forEach(file => {
|
| sessionManager.addFileToSession(session.sessionId, {
|
| filename: file.filename,
|
| reportId: file.reportId,
|
| originalPath: `${session.directory}/original-${file.reportId}.docx`,
|
| reportPath: `${session.directory}/${file.reportId}-accessibility-report.json`,
|
| processedAt: new Date().toISOString()
|
| });
|
| });
|
|
|
| console.log(`β
Added ${mockFiles.length} files to session`);
|
|
|
|
|
| console.log('\n3. Adding batch to session...');
|
| const batchId = Date.now();
|
| sessionManager.addBatchToSession(session.sessionId, {
|
| batchId: batchId,
|
| timestamp: new Date().toISOString(),
|
| totalFiles: mockFiles.length,
|
| successful: mockFiles.length,
|
| failed: 0,
|
| reportPath: `${session.directory}/batch-${batchId}-summary.json`
|
| });
|
|
|
| console.log(`β
Added batch ${batchId} to session`);
|
|
|
|
|
| console.log('\n4. Testing heartbeat...');
|
| const heartbeatResult = sessionManager.heartbeat(session.sessionId);
|
| console.log(`β
Heartbeat result: ${heartbeatResult}`);
|
|
|
|
|
| console.log('\n5. Getting session data...');
|
| const sessionFiles = sessionManager.getSessionFiles(session.sessionId);
|
| const sessionBatches = sessionManager.getSessionBatches(session.sessionId);
|
|
|
| console.log(`β
Session has ${sessionFiles.length} files and ${sessionBatches.length} batches`);
|
| console.log(' Files:', sessionFiles.map(f => f.filename).join(', '));
|
| console.log(' Batches:', sessionBatches.map(b => b.batchId).join(', '));
|
|
|
|
|
| console.log('\n6. Getting session statistics...');
|
| const stats = sessionManager.getSessionStats();
|
| console.log(`β
Total active sessions: ${stats.activeSessions}`);
|
|
|
|
|
| console.log('\n7. Testing session cleanup...');
|
| console.log(' (Creating expired session for cleanup test)');
|
|
|
| const expiredSession = sessionManager.createSession();
|
|
|
| const session_obj = sessionManager.sessions.get(expiredSession.sessionId);
|
| session_obj.lastActivity = Date.now() - (2 * 60 * 60 * 1000);
|
|
|
| console.log(` Created expired session: ${expiredSession.sessionId}`);
|
|
|
|
|
| await sessionManager.cleanupExpiredSessions();
|
|
|
| const statsAfterCleanup = sessionManager.getSessionStats();
|
| console.log(`β
Sessions after cleanup: ${statsAfterCleanup.activeSessions}`);
|
|
|
|
|
| console.log('\n8. Testing manual session destruction...');
|
| await sessionManager.destroySession(session.sessionId);
|
|
|
| const finalStats = sessionManager.getSessionStats();
|
| console.log(`β
Final session count: ${finalStats.activeSessions}`);
|
|
|
| console.log('\nπ Session system test completed!');
|
| console.log('\nπ Session Features:');
|
| console.log(' β Automatic session creation');
|
| console.log(' β File and batch tracking per session');
|
| console.log(' β Heartbeat to keep sessions alive');
|
| console.log(' β Automatic cleanup after 1 hour of inactivity');
|
| console.log(' β Manual session destruction');
|
| console.log(' β Temporary file storage (no permanent accumulation)');
|
|
|
| console.log('\nπ‘ Usage:');
|
| console.log(' - Files are kept only during the user session');
|
| console.log(' - Sessions expire 1 hour after last activity');
|
| console.log(' - All files are automatically cleaned up');
|
| console.log(' - No need to manually manage file deletion');
|
| }
|
|
|
|
|
| testSessionSystem().catch(console.error); |