pub struct TestHarness { /* private fields */ }Expand description
Test harness for comprehensive validation
Manages temporary directories, test datasets, and performance metrics. Automatically cleans up resources when dropped.
Implementations§
Source§impl TestHarness
impl TestHarness
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new test harness
Examples found in repository?
examples/test_harness.rs (line 12)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn temp_dir(&self) -> &Path
pub fn temp_dir(&self) -> &Path
Get the temporary directory path
Examples found in repository?
examples/test_harness.rs (line 13)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn record_metric(
&self,
operation: &str,
duration: Duration,
memory_kb: usize,
throughput_mbps: f64,
)
pub fn record_metric( &self, operation: &str, duration: Duration, memory_kb: usize, throughput_mbps: f64, )
Record a performance metric
Examples found in repository?
examples/test_harness.rs (lines 65-70)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn metrics(&self) -> PerformanceMetrics
pub fn metrics(&self) -> PerformanceMetrics
Get a copy of current metrics
Examples found in repository?
examples/test_harness.rs (line 72)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn create_dataset(&self, size_mb: usize) -> PathBuf
pub fn create_dataset(&self, size_mb: usize) -> PathBuf
Create a test dataset of specified size in MB
Creates a directory with various file types and patterns
Examples found in repository?
examples/test_harness.rs (line 23)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn create_file(&self, name: &str, content: &[u8]) -> PathBuf
pub fn create_file(&self, name: &str, content: &[u8]) -> PathBuf
Create a test file with specific content
Examples found in repository?
examples/test_harness.rs (line 17)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn create_directory_structure(&self, name: &str) -> PathBuf
pub fn create_directory_structure(&self, name: &str) -> PathBuf
Create a directory structure with various files
Examples found in repository?
examples/test_harness.rs (line 55)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Sourcepub fn create_large_file(
&self,
name: &str,
size_mb: usize,
pattern: TestDataPattern,
) -> PathBuf
pub fn create_large_file( &self, name: &str, size_mb: usize, pattern: TestDataPattern, ) -> PathBuf
Create a large file with specified pattern
Examples found in repository?
examples/test_harness.rs (lines 40-44)
7fn main() {
8 println!("=== Embeddenator TestKit - Test Harness ===\n");
9
10 // Create test harness (automatically manages temp directory)
11 println!("1. Creating test harness...");
12 let harness = TestHarness::new();
13 println!(" Temp directory: {:?}", harness.temp_dir());
14
15 // Create a simple test file
16 println!("\n2. Creating test file...");
17 let file_path = harness.create_file("test.txt", b"Hello, World!");
18 println!(" Created: {:?}", file_path);
19 println!(" Exists: {}", file_path.exists());
20
21 // Create a test dataset
22 println!("\n3. Creating test dataset (5MB)...");
23 let dataset_path = harness.create_dataset(5);
24 println!(" Dataset directory: {:?}", dataset_path);
25
26 // List files in dataset
27 let files: Vec<_> = std::fs::read_dir(&dataset_path)
28 .unwrap()
29 .filter_map(|e| e.ok())
30 .collect();
31 println!(" Files created: {}", files.len());
32
33 if let Some(first_file) = files.first() {
34 let metadata = first_file.metadata().unwrap();
35 println!(" First file size: {} bytes", metadata.len());
36 }
37
38 // Create large file with specific pattern
39 println!("\n4. Creating large file with pattern...");
40 let large_file = harness.create_large_file(
41 "sequential.bin",
42 10, // 10MB
43 TestDataPattern::Sequential,
44 );
45 let metadata = std::fs::metadata(&large_file).unwrap();
46 println!(" Created: {:?}", large_file);
47 println!(
48 " Size: {} bytes ({} MB)",
49 metadata.len(),
50 metadata.len() / 1024 / 1024
51 );
52
53 // Create directory structure
54 println!("\n5. Creating directory structure...");
55 let dir_structure = harness.create_directory_structure("project");
56 println!(" Base: {:?}", dir_structure);
57 println!(" Contains dir1: {}", dir_structure.join("dir1").exists());
58 println!(
59 " Contains dir2/nested: {}",
60 dir_structure.join("dir2/nested").exists()
61 );
62
63 // Record metrics
64 println!("\n6. Recording performance metrics...");
65 harness.record_metric(
66 "dataset_creation",
67 std::time::Duration::from_secs(1),
68 5120, // 5MB in KB
69 5.0, // 5 MB/s
70 );
71
72 let metrics = harness.metrics();
73 if let Some(avg_time) = metrics.avg_time("dataset_creation") {
74 println!(" Average time: {:?}", avg_time);
75 }
76 if let Some(avg_throughput) = metrics.avg_throughput("dataset_creation") {
77 println!(" Average throughput: {:.2} MB/s", avg_throughput);
78 }
79
80 println!("\n✅ Test harness example complete!");
81 println!(" (Temp directory will be automatically cleaned up)");
82}Trait Implementations§
Auto Trait Implementations§
impl Freeze for TestHarness
impl RefUnwindSafe for TestHarness
impl Send for TestHarness
impl Sync for TestHarness
impl Unpin for TestHarness
impl UnwindSafe for TestHarness
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more