test-client.jsโข4.22 kB
#!/usr/bin/env node
/**
* Test script for Node.js Client Library
*/
import SelfLearningClient from './lib/self-learning-client.js';
async function testClient() {
console.log('๐งช Testing Node.js Client Library...\n');
// Initialize client
const client = new SelfLearningClient({ port: 8765 });
try {
// Test connection
console.log('1. Testing connection...');
const connected = await client.connect();
console.log(` โ
Connected: ${connected}\n`);
// Test health check
console.log('2. Testing health check...');
const health = await client.getHealth();
console.log(` โ
Health: ${health.status}`);
console.log(` ๐ Uptime: ${Math.round(health.uptime / 1000)}s\n`);
// Test status
console.log('3. Testing status...');
const status = await client.getStatus();
console.log(` โ
Running: ${status.running}`);
console.log(` ๐ง Learning Active: ${status.learning.active}`);
console.log(` ๐ Patterns: ${status.learning.patterns}\n`);
// Test pattern analysis
console.log('4. Testing pattern analysis...');
const interaction = {
type: 'test_interaction',
input: 'Test client library usage',
output: 'Client library working correctly',
success: true,
context: { source: 'node-client-test' }
};
const result = await client.analyzePattern(interaction);
console.log(` โ
Pattern ID: ${result.patternId.substring(0, 8)}...`);
console.log(` ๐ง Tool Sequence: ${result.features.toolSequence.join(', ')}\n`);
// Test insights
console.log('5. Testing insights...');
const insights = await client.getInsights();
console.log(` โ
Success Rate: ${(insights.insights.metrics.successRate * 100).toFixed(1)}%`);
console.log(` ๐ง Knowledge Items: ${insights.insights.knowledgeItems}`);
console.log(` ๐ Learning Cycles: ${insights.insights.metrics.learningCycles}\n`);
// Test WebSocket connection
console.log('6. Testing WebSocket...');
await client.connectWebSocket();
// Set up event listeners
client.on('websocket-connected', () => {
console.log(' โ
WebSocket connected');
});
client.on('realtime-update', (data) => {
console.log(' ๐ก Received real-time update:', data.type || 'unknown');
});
// Wait a bit for WebSocket to connect
await new Promise(resolve => setTimeout(resolve, 1000));
// Test multiple patterns
console.log('7. Testing bulk operations...');
const interactions = [
{ type: 'bulk_test', input: 'Test 1', output: 'Result 1', success: true },
{ type: 'bulk_test', input: 'Test 2', output: 'Result 2', success: true },
{ type: 'bulk_test', input: 'Test 3', output: 'Result 3', success: false }
];
const bulkResults = await client.analyzeMultiplePatterns(interactions);
const successCount = bulkResults.filter(r => r.success).length;
console.log(` โ
Bulk analysis: ${successCount}/${bulkResults.length} successful\n`);
// Test learning session
console.log('8. Testing learning session...');
const session = client.createLearningSession('test-session-' + Date.now());
session.addInteraction({ type: 'session_test', input: 'Session test', output: 'Session result', success: true });
const sessionSummary = session.getSummary();
console.log(` โ
Session ID: ${sessionSummary.sessionId.substring(0, 20)}...`);
console.log(` ๐ข Interactions: ${sessionSummary.interactions}\n`);
// Clean up
client.disconnectWebSocket();
console.log('โ
All Node.js client tests passed!\n');
} catch (error) {
console.error('โ Client test failed:', error.message);
process.exit(1);
}
}
// Event listeners for demonstration
const client = new SelfLearningClient({ port: 8765 });
client.on('connected', () => {
console.log('๐ Client connected to server');
});
client.on('error', (error) => {
console.log('โ ๏ธ Client error:', error.message);
});
client.on('request-retry', (info) => {
console.log(`๐ Retrying request (attempt ${info.attempt}): ${info.method} ${info.endpoint}`);
});
// Run the test
await testClient();