55//!
66//! Run with: cargo run --example test_parallel_processing
77
8- use a3s_code_core:: { Agent , RetryPolicyConfig , SessionOptions , SessionQueueConfig } ;
8+ use a3s_code_core:: queue:: RetryPolicyConfig ;
9+ use a3s_code_core:: { Agent , SessionOptions , SessionQueueConfig } ;
910use anyhow:: Result ;
1011use std:: path:: PathBuf ;
12+ use std:: sync:: Arc ;
1113use std:: time:: Instant ;
1214
1315fn find_config ( ) -> Result < PathBuf > {
@@ -108,9 +110,10 @@ async fn main() -> Result<()> {
108110
109111 // Spawn all tasks concurrently
110112 let mut handles = vec ! [ ] ;
113+ let session = Arc :: new ( session) ;
111114 for ( i, task) in tasks. iter ( ) . enumerate ( ) {
112115 println ! ( " Queuing task {}: {}" , i + 1 , task) ;
113- let session_clone = session . clone ( ) ;
116+ let session_clone = Arc :: clone ( & session ) ;
114117 let task_str = task. to_string ( ) ;
115118
116119 let handle = tokio:: spawn ( async move {
@@ -138,16 +141,16 @@ async fn main() -> Result<()> {
138141
139142 // Check queue stats
140143 if session. has_queue ( ) {
141- let stats = session. queue_stats ( ) ? ;
144+ let stats = session. queue_stats ( ) . await ;
142145 println ! ( "\n 📊 Queue Statistics:" ) ;
143- println ! ( " Total processed : {}" , stats. total_processed ) ;
144- println ! ( " Total failed : {}" , stats. total_failed ) ;
145- println ! ( " DLQ size : {}" , stats. dlq_size ) ;
146+ println ! ( " Total pending : {}" , stats. total_pending ) ;
147+ println ! ( " Total active : {}" , stats. total_active ) ;
148+ println ! ( " External pending : {}" , stats. external_pending ) ;
146149 }
147150 }
148151 println ! ( "\n ✅ Test 2 passed: Parallel processing with queue works\n " ) ;
149152
150- // Test 3: Parallel processing with different priorities
153+ // Test 3: Parallel Processing with Priority Lanes
151154 println ! ( "🎯 Test 3: Parallel Processing with Priority Lanes" ) ;
152155 println ! ( "{}" , "-" . repeat( 80 ) ) ;
153156 {
@@ -184,9 +187,10 @@ async fn main() -> Result<()> {
184187 ] ;
185188
186189 let mut handles = vec ! [ ] ;
190+ let session = Arc :: new ( session) ;
187191 for ( i, ( task_type, task) ) in tasks. iter ( ) . enumerate ( ) {
188192 println ! ( " Queuing {} task {}: {}" , task_type, i + 1 , task) ;
189- let session_clone = session . clone ( ) ;
193+ let session_clone = Arc :: clone ( & session ) ;
190194 let task_str = task. to_string ( ) ;
191195
192196 let handle = tokio:: spawn ( async move {
@@ -249,10 +253,11 @@ async fn main() -> Result<()> {
249253
250254 let start = Instant :: now ( ) ;
251255 let mut handles = vec ! [ ] ;
256+ let session = Arc :: new ( session) ;
252257
253258 for ( i, task) in tasks. iter ( ) . enumerate ( ) {
254259 println ! ( " Queuing task {}: {}" , i + 1 , task) ;
255- let session_clone = session . clone ( ) ;
260+ let session_clone = Arc :: clone ( & session ) ;
256261 let task_str = task. to_string ( ) ;
257262
258263 let handle = tokio:: spawn ( async move {
@@ -278,11 +283,11 @@ async fn main() -> Result<()> {
278283 ) ;
279284
280285 if session. has_queue ( ) {
281- let stats = session. queue_stats ( ) ? ;
286+ let stats = session. queue_stats ( ) . await ;
282287 println ! ( "\n 📊 Final Queue Statistics:" ) ;
283- println ! ( " Total processed : {}" , stats. total_processed ) ;
284- println ! ( " Total failed : {}" , stats. total_failed ) ;
285- println ! ( " DLQ size : {}" , stats. dlq_size ) ;
288+ println ! ( " Total pending : {}" , stats. total_pending ) ;
289+ println ! ( " Total active : {}" , stats. total_active ) ;
290+ println ! ( " External pending : {}" , stats. external_pending ) ;
286291 }
287292 }
288293 println ! ( "\n ✅ Test 4 passed: Retry policy works correctly\n " ) ;
0 commit comments