Skip to main content
Glama
joelmnz

Article Manager MCP Server

by joelmnz
test-embedding-queue.tsβ€’5.1 kB
#!/usr/bin/env bun /** * Test script for the embedding queue service * Tests basic queue operations and statistics */ import { database, getDatabaseConfig } from '../src/backend/services/database.js'; import { embeddingQueueService } from '../src/backend/services/embeddingQueue.js'; // Disable semantic search for this test to avoid embedding issues process.env.SEMANTIC_SEARCH_ENABLED = 'false'; import { createArticle } from '../src/backend/services/articles.js'; async function testEmbeddingQueue() { console.log('πŸ§ͺ Testing Embedding Queue Service...\n'); try { // Connect to database console.log('πŸ“‘ Connecting to database...'); await database.connect(getDatabaseConfig()); console.log('βœ… Database connected\n'); // Test 1: Get initial queue stats console.log('πŸ“Š Getting initial queue statistics...'); const initialStats = await embeddingQueueService.getQueueStats(); console.log('Initial stats:', initialStats); console.log('βœ… Queue stats retrieved\n'); // Test 2: Create a test article first (with unique name) console.log('πŸ“ Creating a test article...'); const timestamp = Date.now(); const testArticle = await createArticle(`Test Article for Queue ${timestamp}`, 'This is a test article for the embedding queue.', 'Test article creation'); console.log('βœ… Test article created:', testArticle.filename); // Get the article ID from the database const expectedSlug = `test-article-for-queue-${timestamp}`; const articleResult = await database.query('SELECT id FROM articles WHERE slug = $1', [expectedSlug]); const articleId = articleResult.rows[0]?.id; if (!articleId) { throw new Error('Failed to get article ID'); } // Test 3: Enqueue a test task console.log('πŸ“ Enqueuing a test task...'); const taskId = await embeddingQueueService.enqueueTask({ articleId: articleId, slug: expectedSlug, operation: 'create', priority: 'normal', maxAttempts: 3, scheduledAt: new Date(), metadata: { test: true } }); console.log('βœ… Task enqueued with ID:', taskId); // Test 4: Get task status console.log('πŸ” Getting task status...'); const taskStatus = await embeddingQueueService.getTaskStatus(taskId); console.log('Task status:', { id: taskStatus?.id, status: taskStatus?.status, operation: taskStatus?.operation, priority: taskStatus?.priority }); console.log('βœ… Task status retrieved\n'); // Test 5: Get updated queue stats console.log('πŸ“Š Getting updated queue statistics...'); const updatedStats = await embeddingQueueService.getQueueStats(); console.log('Updated stats:', updatedStats); console.log('βœ… Updated stats retrieved\n'); // Test 6: Get detailed queue stats console.log('πŸ“ˆ Getting detailed queue statistics...'); const detailedStats = await embeddingQueueService.getDetailedQueueStats(); console.log('Detailed stats:', { basicStats: detailedStats.stats, tasksByPriority: detailedStats.tasksByPriority, tasksByOperation: detailedStats.tasksByOperation, recentActivity: detailedStats.recentActivity }); console.log('βœ… Detailed stats retrieved\n'); // Test 7: Get queue health console.log('πŸ₯ Getting queue health...'); const health = await embeddingQueueService.getQueueHealth(); console.log('Queue health:', { isHealthy: health.isHealthy, totalTasks: health.totalTasks, issues: health.issues }); console.log('βœ… Queue health retrieved\n'); // Test 8: Dequeue the task console.log('⬇️ Dequeuing task...'); const dequeuedTask = await embeddingQueueService.dequeueTask(); console.log('Dequeued task:', { id: dequeuedTask?.id, status: dequeuedTask?.status, attempts: dequeuedTask?.attempts }); console.log('βœ… Task dequeued\n'); // Test 9: Update task status to completed if (dequeuedTask) { console.log('βœ… Updating task status to completed...'); await embeddingQueueService.updateTaskStatus(dequeuedTask.id, 'completed'); console.log('βœ… Task status updated\n'); } // Test 10: Final queue stats console.log('πŸ“Š Getting final queue statistics...'); const finalStats = await embeddingQueueService.getQueueStats(); console.log('Final stats:', finalStats); console.log('βœ… Final stats retrieved\n'); // Test 11: Clean up completed tasks console.log('🧹 Cleaning up completed tasks...'); const cleanedCount = await embeddingQueueService.clearCompletedTasks(); console.log(`βœ… Cleaned up ${cleanedCount} completed tasks\n`); console.log('πŸŽ‰ All embedding queue tests passed!'); } catch (error) { console.error('❌ Test failed:', error); process.exit(1); } finally { await database.disconnect(); console.log('πŸ“‘ Database disconnected'); } } // Run the test testEmbeddingQueue().catch((error) => { console.error('❌ Unhandled test error:', error); process.exit(1); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/joelmnz/mcp-markdown-manager'

If you have feedback or need assistance with the MCP directory API, please join our Discord server