Skip to main content
Glama

Visum Thinker MCP Server

MIT License
test-true-persistence.mjs•7.08 kB
// Test TRUE PERSISTENT VisumPy Controller // This test validates that the VisumPy instance truly persists across multiple calls import { PersistentVisumController } from "./build/persistent-visum-controller.js"; console.log("šŸš€ TESTING TRUE PERSISTENT VisumPy Controller"); console.log("=" .repeat(60)); const controller = PersistentVisumController.getInstance(); async function runTruePersistenceTest() { try { console.log("\n1ļøāƒ£ Starting persistent VisumPy process..."); const startTime = Date.now(); const initResult = await controller.startPersistentVisumProcess(); const initTime = Date.now() - startTime; console.log(` Result: ${initResult.success ? 'āœ… SUCCESS' : 'āŒ FAILED'}`); console.log(` Message: ${initResult.message}`); if (initResult.success) { console.log(` Nodes: ${initResult.nodes?.toLocaleString()}`); console.log(` Links: ${initResult.links?.toLocaleString()}`); console.log(` Zones: ${initResult.zones?.toLocaleString()}`); } console.log(` Init Time: ${initTime}ms`); if (!initResult.success) { console.error("āŒ Cannot continue without persistent process"); return; } console.log("\n2ļøāƒ£ Testing rapid successive calls (TRUE PERSISTENCE)..."); // Perform multiple rapid calls to test persistence const rapidTests = [ { name: "Network Stats #1", test: () => controller.getNetworkStats() }, { name: "Node Analysis #1", test: () => controller.analyzeNodes(5) }, { name: "Network Stats #2", test: () => controller.getNetworkStats() }, { name: "Node Analysis #2", test: () => controller.analyzeNodes(3) }, { name: "Health Check", test: () => controller.checkInstanceHealth() }, { name: "Network Stats #3", test: () => controller.getNetworkStats() }, { name: "Custom Analysis", test: () => controller.executeCustomCode(` # Custom persistent analysis result = { 'test_type': 'custom', 'visum_available': visum is not None, 'nodes_count': visum.Net.Nodes.Count if visum else 0, 'persistent_test': 'SUCCESS' } `, "Custom persistence test") } ]; console.log(` Executing ${rapidTests.length} rapid tests...`); const testResults = []; const overallStartTime = Date.now(); for (let i = 0; i < rapidTests.length; i++) { const test = rapidTests[i]; console.log(`\n šŸ“Š Test ${i+1}/${rapidTests.length}: ${test.name}`); const testStartTime = Date.now(); const result = await test.test(); const testTime = Date.now() - testStartTime; testResults.push({ name: test.name, success: result.success, time: testTime, isPersistent: result.result?.persistent === true, error: result.error }); console.log(` Result: ${result.success ? 'āœ…' : 'āŒ'} (${testTime}ms)`); if (result.success && result.result?.persistent) { console.log(` šŸš€ PERSISTENT: ${result.result.persistent ? 'YES' : 'NO'}`); } if (result.error) { console.log(` āŒ Error: ${result.error}`); } // Small delay to show responsiveness await new Promise(resolve => setTimeout(resolve, 100)); } const overallTime = Date.now() - overallStartTime; console.log("\n3ļøāƒ£ Test Results Analysis:"); console.log(" " + "=".repeat(50)); const successfulTests = testResults.filter(t => t.success); const persistentTests = testResults.filter(t => t.isPersistent); const averageTime = testResults.reduce((sum, t) => sum + t.time, 0) / testResults.length; const maxTime = Math.max(...testResults.map(t => t.time)); const minTime = Math.min(...testResults.map(t => t.time)); console.log(` šŸ“Š Tests Executed: ${testResults.length}`); console.log(` āœ… Successful: ${successfulTests.length}/${testResults.length}`); console.log(` šŸš€ Truly Persistent: ${persistentTests.length}/${testResults.length}`); console.log(` ā±ļø Average Time: ${averageTime.toFixed(1)}ms`); console.log(` ⚔ Fastest: ${minTime}ms`); console.log(` 🐌 Slowest: ${maxTime}ms`); console.log(` šŸ•’ Total Time: ${overallTime}ms`); // Performance analysis console.log("\n4ļøāƒ£ Performance Analysis:"); console.log(" " + "=".repeat(50)); const ultraFastTests = testResults.filter(t => t.success && t.time < 100); const fastTests = testResults.filter(t => t.success && t.time < 500); console.log(` šŸš€ Ultra-Fast (<100ms): ${ultraFastTests.length}/${successfulTests.length}`); console.log(` ⚔ Fast (<500ms): ${fastTests.length}/${successfulTests.length}`); if (persistentTests.length === successfulTests.length) { console.log(" šŸŽÆ PERSISTENCE VERIFIED: All tests used persistent instance!"); } else { console.log(" āš ļø PERSISTENCE ISSUE: Some tests didn't use persistent instance"); } // Final persistence validation console.log("\n5ļøāƒ£ Final Persistence Validation..."); const finalHealthCheck = await controller.checkInstanceHealth(); if (finalHealthCheck.success) { const requestCount = finalHealthCheck.result?.requestCount || 0; console.log(` āœ… Persistent process still alive`); console.log(` šŸ“Š Total requests processed: ${requestCount}`); console.log(` šŸŽÆ Process persistence: CONFIRMED`); } else { console.log(` āŒ Persistence check failed: ${finalHealthCheck.error}`); } console.log("\n6ļøāƒ£ Cleanup..."); await controller.shutdown(); console.log(" šŸ”š Persistent process shutdown completed"); // Summary console.log("\n" + "=".repeat(60)); console.log("šŸ TEST SUMMARY"); console.log("=".repeat(60)); const allSuccessful = successfulTests.length === testResults.length; const allPersistent = persistentTests.length === successfulTests.length; const performanceExcellent = averageTime < 200; console.log(`āœ… All Tests Passed: ${allSuccessful ? 'YES šŸŽ‰' : 'NO āŒ'}`); console.log(`šŸš€ True Persistence: ${allPersistent ? 'YES šŸŽ‰' : 'NO āŒ'}`); console.log(`⚔ Performance: ${performanceExcellent ? 'EXCELLENT šŸš€' : 'NEEDS IMPROVEMENT āš ļø'}`); if (allSuccessful && allPersistent && performanceExcellent) { console.log("\nšŸŽ‰ TRUE PERSISTENCE SUCCESS!"); console.log(" The VisumPy instance truly persists across calls"); console.log(" Ultra-fast responses achieved"); console.log(" Ready for production use!"); } else { console.log("\nāš ļø Issues detected that need resolution"); } } catch (error) { console.error("šŸ’€ CRITICAL TEST ERROR:"); console.error(error); } } // Run the test runTruePersistenceTest().then(() => { console.log("\nšŸ”š Test completed"); process.exit(0); }).catch(error => { console.error("šŸ’€ Test failed:", error); process.exit(1); });

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/multiluca2020/visum-thinker-mcp-server'

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