adze_concurrency_caps_core/
lib.rs1#![forbid(unsafe_op_in_unsafe_fn)]
19#![deny(missing_docs)]
20#![cfg_attr(feature = "strict_api", deny(unreachable_pub))]
21#![cfg_attr(not(feature = "strict_api"), warn(unreachable_pub))]
22#![cfg_attr(feature = "strict_docs", deny(missing_docs))]
23#![cfg_attr(not(feature = "strict_docs"), allow(missing_docs))]
24
25pub use adze_concurrency_env_core::{
27 ConcurrencyCaps, DEFAULT_RAYON_NUM_THREADS, DEFAULT_TOKIO_WORKER_THREADS,
28 RAYON_NUM_THREADS_ENV, TOKIO_WORKER_THREADS_ENV, current_caps, parse_positive_usize_or_default,
29};
30pub use adze_concurrency_init_core::{
32 init_concurrency_caps, init_rayon_global_once, is_already_initialized_error,
33};
34pub use adze_concurrency_map_core::{
36 ParallelPartitionPlan, bounded_parallel_map, normalized_concurrency,
37};
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn caps_defaults_via_facade() {
45 let caps = ConcurrencyCaps::from_lookup(|_| None);
46 assert_eq!(caps.rayon_threads, DEFAULT_RAYON_NUM_THREADS);
47 assert_eq!(caps.tokio_worker_threads, DEFAULT_TOKIO_WORKER_THREADS);
48 }
49
50 #[test]
51 fn parse_helper_via_facade() {
52 assert_eq!(parse_positive_usize_or_default(Some("10"), 1), 10);
53 assert_eq!(parse_positive_usize_or_default(Some("0"), 5), 5);
54 assert_eq!(parse_positive_usize_or_default(None, 3), 3);
55 }
56
57 #[test]
58 fn bounded_map_via_facade() {
59 let mut result = bounded_parallel_map(vec![1, 2, 3], 2, |x| x * 10);
60 result.sort();
61 assert_eq!(result, vec![10, 20, 30]);
62 }
63
64 #[test]
65 fn normalized_concurrency_via_facade() {
66 assert_eq!(normalized_concurrency(0), 1);
67 assert_eq!(normalized_concurrency(4), 4);
68 }
69
70 #[test]
71 fn partition_plan_via_facade() {
72 let plan = ParallelPartitionPlan::for_item_count(10, 3);
73 assert!(plan.chunk_size > 0);
74 }
75}