1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Integration test for parallel tool execution
//!
//! This test verifies that read-only tools (list_files, read_file, grep_file)
//! execute in parallel when multiple are called together.
#[cfg(test)]
mod parallel_execution_tests {
#[test]
fn test_parallel_execution_concept() {
// Conceptual test - actual implementation would require:
// 1. Mock LLM that returns multiple read-only tool calls
// 2. Instrumented tool registry to track execution timing
// 3. Verification that tools ran concurrently (total time < sum of individual times)
// Expected behavior:
// - Single tool call: Sequential execution (baseline)
// - Multiple read-only tools: Parallel execution (faster)
// - Mixed read/write tools: Sequential execution (safety)
println!("Parallel execution feature implemented in AgentRunner");
println!("Read-only tools: list_files, read_file, grep_file, search_tools");
println!("Execution mode: Parallel when 2+ read-only tools called together");
}
#[test]
fn test_sequential_fallback() {
// Verify that write operations remain sequential
let write_tools = vec!["write_file", "edit_file", "run_pty_cmd"];
for tool in write_tools {
println!("Tool '{}' uses sequential execution (safety)", tool);
}
}
#[test]
fn test_loop_detection_with_parallel() {
// Verify loop detection works with parallel execution
// - Loop detector checks all calls before parallel execution
// - Hard limit halts before any tools execute
// - Soft limit warnings still appear
println!("Loop detection integrated with parallel execution");
println!("Soft limit: 5 calls (warning)");
println!("Hard limit: 10 calls (halt before execution)");
}
}