MCPcopy Index your code
hub / github.com/AI45Lab/Code / respects_concurrency_limit

Function respects_concurrency_limit

core/src/ordered_parallel.rs:169–200  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

167
168 #[tokio::test]
169 async fn respects_concurrency_limit() {
170 use std::sync::atomic::{AtomicUsize, Ordering};
171 use std::sync::Arc;
172
173 let active = Arc::new(AtomicUsize::new(0));
174 let max_active = Arc::new(AtomicUsize::new(0));
175 let results = run_ordered_parallel_with_limit(vec![1_u8, 2, 3, 4], 2, {
176 let active = Arc::clone(&active);
177 let max_active = Arc::clone(&max_active);
178 move |_index, value| {
179 let active = Arc::clone(&active);
180 let max_active = Arc::clone(&max_active);
181 async move {
182 let now = active.fetch_add(1, Ordering::SeqCst) + 1;
183 max_active.fetch_max(now, Ordering::SeqCst);
184 tokio::time::sleep(std::time::Duration::from_millis(30)).await;
185 active.fetch_sub(1, Ordering::SeqCst);
186 value
187 }
188 }
189 })
190 .await;
191
192 assert_eq!(max_active.load(Ordering::SeqCst), 2);
193 assert_eq!(
194 results
195 .into_iter()
196 .map(|result| result.output.unwrap())
197 .collect::<Vec<_>>(),
198 vec![1, 2, 3, 4]
199 );
200 }
201}

Callers

nothing calls this directly

Calls 1

Tested by

no test coverage detected