#![allow(clippy::disallowed_methods, clippy::float_cmp)]
use std::path::Path;
#[test]
#[ignore = "requires golden trace files"]
fn test_backend_detection_golden_trace() {
let golden_trace = Path::new("golden_traces/backend_detection_summary.txt");
if !golden_trace.exists() {
eprintln!("Golden trace not found, skipping validation");
return;
}
let max_runtime = 0.803;
let max_syscalls = 96;
validate_performance_budget("backend_detection", max_runtime, max_syscalls);
}
#[test]
#[ignore = "requires golden trace files"]
fn test_performance_demo_golden_trace() {
let golden_trace = Path::new("golden_traces/performance_demo_summary.txt");
if !golden_trace.exists() {
eprintln!("Golden trace not found, skipping validation");
return;
}
let max_runtime = 1.658;
let max_syscalls = 152;
validate_performance_budget("performance_demo", max_runtime, max_syscalls);
}
#[test]
#[ignore = "requires golden trace files"]
fn test_matrix_operations_golden_trace() {
let golden_trace = Path::new("golden_traces/matrix_operations_summary.txt");
if !golden_trace.exists() {
eprintln!("Golden trace not found, skipping validation");
return;
}
let max_runtime = 1.716;
let max_syscalls = 185;
validate_performance_budget("matrix_operations", max_runtime, max_syscalls);
}
#[test]
#[ignore = "requires golden trace files"]
fn test_activation_functions_golden_trace() {
let golden_trace = Path::new("golden_traces/activation_functions_summary.txt");
if !golden_trace.exists() {
eprintln!("Golden trace not found, skipping validation");
return;
}
let max_runtime = 1.428;
let max_syscalls = 175;
validate_performance_budget("activation_functions", max_runtime, max_syscalls);
}
#[test]
#[ignore = "requires golden trace files"]
fn test_ml_similarity_golden_trace() {
let golden_trace = Path::new("golden_traces/ml_similarity_summary.txt");
if !golden_trace.exists() {
eprintln!("Golden trace not found, skipping validation");
return;
}
let max_runtime = 0.899;
let max_syscalls = 120;
validate_performance_budget("ml_similarity", max_runtime, max_syscalls);
}
fn validate_performance_budget(_example: &str, _max_runtime_ms: f64, _max_syscalls: usize) {
}
#[test]
fn test_golden_traces_valid_json() {
let traces = [
"golden_traces/backend_detection.json",
"golden_traces/performance_demo.json",
"golden_traces/matrix_operations.json",
"golden_traces/activation_functions.json",
"golden_traces/ml_similarity.json",
];
for trace_path in &traces {
let path = Path::new(trace_path);
if !path.exists() {
eprintln!("Warning: Golden trace not found: {}", trace_path);
continue;
}
let content = std::fs::read_to_string(path)
.unwrap_or_else(|e| panic!("Failed to read {}: {}", trace_path, e));
let trimmed = content.trim();
if trimmed.is_empty() || !trimmed.starts_with('{') && !trimmed.starts_with('[') {
eprintln!("Info: Skipping placeholder golden trace: {}", trace_path);
continue;
}
let parsed: serde_json::Value = serde_json::from_str(&content)
.unwrap_or_else(|e| panic!("Invalid JSON in {}: {}", trace_path, e));
assert!(parsed.get("version").is_some(), "Missing 'version' in {}", trace_path);
assert!(parsed.get("format").is_some(), "Missing 'format' in {}", trace_path);
if let Some(format) = parsed.get("format") {
assert_eq!(
format.as_str(),
Some("renacer-json-v1"),
"Unexpected format in {}",
trace_path
);
}
}
}
#[test]
fn test_golden_trace_summaries_exist() {
let summaries = [
"golden_traces/backend_detection_summary.txt",
"golden_traces/performance_demo_summary.txt",
"golden_traces/matrix_operations_summary.txt",
"golden_traces/activation_functions_summary.txt",
"golden_traces/ml_similarity_summary.txt",
];
for summary_path in &summaries {
let path = Path::new(summary_path);
assert!(path.exists(), "Golden trace summary missing: {}", summary_path);
let content = std::fs::read_to_string(path)
.unwrap_or_else(|e| panic!("Failed to read {}: {}", summary_path, e));
assert!(
content.contains("% time") && content.contains("syscall"),
"Summary {} does not contain syscall statistics",
summary_path
);
}
}
#[test]
fn test_golden_trace_analysis_exists() {
let analysis_path = Path::new("golden_traces/ANALYSIS.md");
assert!(analysis_path.exists(), "Golden trace analysis documentation missing");
let content = std::fs::read_to_string(analysis_path).expect("Failed to read ANALYSIS.md");
assert!(content.contains("## Overview"), "Missing Overview section");
assert!(content.contains("## Baseline Performance Metrics"), "Missing performance metrics");
assert!(content.contains("SIMD"), "Missing SIMD documentation");
}
#[test]
fn test_performance_budgets_documented() {
let analysis_path = Path::new("golden_traces/ANALYSIS.md");
if !analysis_path.exists() {
return;
}
let content = std::fs::read_to_string(analysis_path).unwrap();
assert!(content.contains("backend_detection"), "Missing backend_detection budget");
assert!(content.contains("matrix_operations"), "Missing matrix_operations budget");
assert!(content.contains("activation_functions"), "Missing activation_functions budget");
assert!(content.contains("performance_demo"), "Missing performance_demo budget");
assert!(content.contains("ml_similarity"), "Missing ml_similarity budget");
assert!(
content.contains("Performance Budget Compliance"),
"Missing performance budget compliance section"
);
}