MCPcopy Create free account
hub / github.com/avoidwork/tenso / generateSummaryReport

Function generateSummaryReport

benchmarks/load-test.js:618–692  ·  view source on GitHub ↗

* Generates a summary report of all test results

(allResults)

Source from the content-addressed store, hash-verified

616 * Generates a summary report of all test results
617 */
618function generateSummaryReport (allResults) {
619 console.log("\n📊 Load Test Summary Report");
620 console.log("=".repeat(70));
621
622 let totalTests = 0;
623 let totalRequests = 0;
624 let totalErrors = 0;
625 let bestRps = 0;
626 let worstRps = Infinity;
627 let bestLatency = Infinity;
628 let worstLatency = 0;
629
630 console.log("| Test Category | Avg RPS | Avg Latency | P99 Latency | Error Rate |");
631 console.log("|" + "-".repeat(68) + "|");
632
633 for (const category of allResults) {
634 const categoryName = category.name;
635 const results = category.results;
636
637 const avgRps = results.reduce((sum, r) => sum + r.result.requests.average, 0) / results.length;
638 const avgLatency = results.reduce((sum, r) => sum + r.result.latency.average, 0) / results.length;
639 const avgP99 = results.reduce((sum, r) => sum + r.result.latency.p99, 0) / results.length;
640 const avgErrorRate = results.reduce((sum, r) => sum + r.result.errors / r.result.requests.total * 100, 0) / results.length;
641
642 console.log(`| ${categoryName.padEnd(13)} | ${avgRps.toFixed(1).padStart(7)} | ${avgLatency.toFixed(1).padStart(11)} | ${avgP99.toFixed(1).padStart(11)} | ${avgErrorRate.toFixed(2).padStart(9)}% |`);
643
644 // Track overall stats
645 totalTests += results.length;
646 results.forEach(r => { // eslint-disable-line no-loop-func
647 totalRequests += r.result.requests.total;
648 totalErrors += r.result.errors;
649 bestRps = Math.max(bestRps, r.result.requests.average);
650 worstRps = Math.min(worstRps, r.result.requests.average);
651 bestLatency = Math.min(bestLatency, r.result.latency.average);
652 worstLatency = Math.max(worstLatency, r.result.latency.average);
653 });
654 }
655
656 console.log("|" + "-".repeat(68) + "|");
657
658 console.log("\n🎯 Key Metrics:");
659 console.log(` Total tests run: ${totalTests}`);
660 console.log(` Total requests: ${totalRequests.toLocaleString()}`);
661 console.log(` Total errors: ${totalErrors}`);
662 console.log(` Overall error rate: ${(totalErrors / totalRequests * 100).toFixed(2)}%`);
663 console.log(` Best RPS: ${bestRps.toFixed(1)}`);
664 console.log(` Worst RPS: ${worstRps.toFixed(1)}`);
665 console.log(` Best latency: ${bestLatency.toFixed(1)}ms`);
666 console.log(` Worst latency: ${worstLatency.toFixed(1)}ms`);
667
668 console.log("\n💡 Performance Insights:");
669 if (bestRps > 1000) {
670 console.log(` ✅ Excellent peak performance (${bestRps.toFixed(0)} RPS)`);
671 } else if (bestRps > 500) {
672 console.log(` ✅ Good peak performance (${bestRps.toFixed(0)} RPS)`);
673 } else {
674 console.log(` ⚠️ Consider optimization (peak: ${bestRps.toFixed(0)} RPS)`);
675 }

Callers 1

mainFunction · 0.85

Calls 1

logMethod · 0.80

Tested by

no test coverage detected