test-campoleone-dedicated.mjsā¢5.88 kB
// Test Istanza Dedicata Campoleone - Performance Ultra-Veloce
// Test per verificare l'istanza persistente dedicata per il progetto Campoleone
import { ProjectInstanceManager } from './build/project-instance-manager.js';
console.log("šÆ TEST ISTANZA DEDICATA CAMPOLEONE");
console.log("=" .repeat(50));
async function testCampoleoneInstance() {
const projectManager = ProjectInstanceManager.getInstance();
try {
console.log("\nš FASE 1: Avvio istanza dedicata Campoleone...");
const startTime = Date.now();
const startResult = await projectManager.startProjectInstance('campoleone');
const startupTime = Date.now() - startTime;
console.log(`ā±ļø Tempo startup: ${startupTime}ms`);
if (startResult.success) {
console.log("ā
Istanza Campoleone avviata con successo!");
console.log(`š Network: ${startResult.stats?.nodes} nodi, ${startResult.stats?.links} link, ${startResult.stats?.zones} zone`);
} else {
console.log("ā Errore avvio istanza:", startResult.message);
return;
}
console.log("\nš FASE 2: Status istanze attive...");
const status = projectManager.getInstancesStatus();
console.log("Istanze attive:", Object.keys(status).length);
for (const [projectId, info] of Object.entries(status)) {
console.log(` ⢠${info.name}: ${info.isActive ? 'ā
Attiva' : 'ā Inattiva'}`);
}
console.log("\nā” FASE 3: Test performance analisi ultra-veloce...");
// Test 1: Network Stats (dovrebbe essere ultra-veloce dopo inizializzazione)
console.log("\nšø Test 1: Network Statistics");
const test1Start = Date.now();
const networkStatsResult = await projectManager.executeProjectAnalysis('campoleone', `
# Network Statistics Ultra-Fast
result = {
'nodes': visum.Net.Nodes.Count,
'links': visum.Net.Links.Count,
'zones': visum.Net.Zones.Count,
'total_demand': visum.Net.Zones.GetAttribute('OBJVAL', 'Sum'),
'test_type': 'network_stats',
'timestamp': time.time()
}
`, "Network Statistics Test");
const test1Time = Date.now() - test1Start;
console.log(` ā” Tempo esecuzione: ${test1Time}ms`);
console.log(` š Risultato: ${networkStatsResult.success ? 'ā
Successo' : 'ā Errore'}`);
if (networkStatsResult.success) {
console.log(` š Nodi: ${networkStatsResult.result.nodes}, Link: ${networkStatsResult.result.links}`);
}
// Test 2: Comando Semplice (dovrebbe essere istantaneo)
console.log("\nšø Test 2: Comando Semplice");
const test2Start = Date.now();
const simpleResult = await projectManager.executeProjectAnalysis('campoleone', `
# Simple Command Test
import time
start = time.time()
node_count = visum.Net.Nodes.Count
end = time.time()
result = {
'node_count': node_count,
'query_time_ms': (end - start) * 1000,
'test_type': 'simple_command',
'timestamp': time.time()
}
`, "Simple Command Test");
const test2Time = Date.now() - test2Start;
console.log(` ā” Tempo esecuzione totale: ${test2Time}ms`);
console.log(` š„ Tempo query VisumPy: ${simpleResult.result?.query_time_ms?.toFixed(3)}ms`);
// Test 3: Comando Complesso
console.log("\nšø Test 3: Analisi Complessa");
const test3Start = Date.now();
const complexResult = await projectManager.executeProjectAnalysis('campoleone', `
# Complex Analysis Test
import time
start = time.time()
# Multiple operations
node_attrs = ['No', 'XCoord', 'YCoord']
link_attrs = ['No', 'FromNodeNo', 'ToNodeNo', 'Length']
nodes_data = []
for i in range(min(100, visum.Net.Nodes.Count)):
node = visum.Net.Nodes.ItemByKey(i+1)
if node:
node_data = {}
for attr in node_attrs:
try:
node_data[attr] = node.GetAttribute(attr)
except:
node_data[attr] = None
nodes_data.append(node_data)
end = time.time()
result = {
'processed_nodes': len(nodes_data),
'total_nodes': visum.Net.Nodes.Count,
'sample_node': nodes_data[0] if nodes_data else None,
'query_time_ms': (end - start) * 1000,
'test_type': 'complex_analysis',
'timestamp': time.time()
}
`, "Complex Analysis Test");
const test3Time = Date.now() - test3Start;
console.log(` ā” Tempo esecuzione totale: ${test3Time}ms`);
console.log(` š„ Tempo analisi VisumPy: ${complexResult.result?.query_time_ms?.toFixed(3)}ms`);
console.log(` š Nodi processati: ${complexResult.result?.processed_nodes}`);
// Test 4: Health Check
console.log("\nšø Test 4: Health Check");
const healthResult = await projectManager.checkProjectHealth('campoleone');
if (healthResult.success) {
const uptime = Math.floor((healthResult.health.uptime || 0) / 1000);
console.log(` š Status: Salutare`);
console.log(` š Uptime: ${uptime}s`);
console.log(` ā” Response time: ${healthResult.health.response_time_ms}ms`);
console.log(` š Memory: ${healthResult.health.memory_mb}MB`);
}
console.log("\nš RIEPILOGO PERFORMANCE:");
console.log(` š Startup time: ${startupTime}ms`);
console.log(` ā” Network Stats: ${test1Time}ms`);
console.log(` š„ Simple Command: ${test2Time}ms (VisumPy: ${simpleResult.result?.query_time_ms?.toFixed(1)}ms)`);
console.log(` šÆ Complex Analysis: ${test3Time}ms (VisumPy: ${complexResult.result?.query_time_ms?.toFixed(1)}ms)`);
console.log("\nā
TEST COMPLETATO - Istanza dedicata Campoleone funziona perfettamente!");
console.log("š L'istanza rimane attiva per ricevere altri comandi...");
} catch (error) {
console.error("ā ERRORE:", error.message);
console.error("Stack:", error.stack);
}
}
// Esegui test
testCampoleoneInstance().catch(console.error);