UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

83 lines • 3.44 kB
/** * Test the full integration stack to understand caching behavior */ import { IntelligentQueryEngine } from './IntelligentQueryEngine.js'; import { OptimizelyAdapter } from './adapters/OptimizelyAdapter.js'; import Database from 'better-sqlite3'; console.log('Testing Adapter & Cache Integration...\n'); async function setupDatabase(db) { db.exec(` CREATE TABLE IF NOT EXISTS flags ( id TEXT PRIMARY KEY, key TEXT NOT NULL, name TEXT, enabled INTEGER DEFAULT 1, project_id TEXT ); `); const insert = db.prepare('INSERT INTO flags (id, key, name, enabled, project_id) VALUES (?, ?, ?, ?, ?)'); insert.run('1', 'flag_a', 'Flag A', 1, 'proj1'); insert.run('2', 'flag_b', 'Flag B', 0, 'proj1'); insert.run('3', 'flag_c', 'Flag C', 1, 'proj1'); } async function testAdapterCaching() { const db = new Database(':memory:'); await setupDatabase(db); console.log('=== Test 1: Direct Adapter Test ==='); const adapter = new OptimizelyAdapter({ database: db }); // Test field discovery const fields = await adapter.discoverFields('flags'); console.log('Fields discovered:', fields.map(f => f.name).join(', ')); // Test native query const nativeResult = await adapter.executeNativeQuery('SELECT * FROM flags WHERE enabled = 1'); console.log('Native query result count:', nativeResult.length); console.log('\n=== Test 2: Engine with Minimal Query ==='); const engine = new IntelligentQueryEngine({ cache: { enabled: true, defaultTTL: 60000, } }); engine.registerAdapter(adapter); // Listen to events engine.on('query:start', (query) => { console.log('\nšŸ“ Event: query:start'); console.log(' Query:', JSON.stringify(query, null, 2)); }); engine.on('query:plan', (plan) => { console.log('\nšŸ“ Event: query:plan'); console.log(' Strategy:', plan.strategy); console.log(' Phases:', plan.phases.length); }); engine.on('query:complete', (result) => { console.log('\nšŸ“ Event: query:complete'); console.log(' Rows:', result.data.length); console.log(' Cached:', result.metadata.cached); console.log(' Cache Key:', result.metadata.cacheKey); }); const query = { find: 'flags', select: ['key', 'name'], where: [{ field: 'enabled', operator: '=', value: 1 }], }; console.log('\n--- First Query Execution ---'); const result1 = await engine.query(query); console.log('\nResult 1:'); console.log(' Data:', result1.data); console.log(' Metadata:', result1.metadata); console.log('\n--- Second Query Execution (should be cached) ---'); const result2 = await engine.query(query); console.log('\nResult 2:'); console.log(' Data:', result2.data); console.log(' Metadata:', result2.metadata); console.log('\n=== Test 3: Cache Metrics ==='); const metrics = engine.getCacheMetrics(); console.log('Cache Metrics:', metrics); console.log('\n=== Test 4: Direct CacheOrchestrator Access ==='); // Access the cache orchestrator directly to check its state const stats = engine.getStatistics(); console.log('Engine Statistics:', JSON.stringify(stats, null, 2)); await engine.shutdown(); } testAdapterCaching().catch(console.error); //# sourceMappingURL=test-adapter-caching.js.map