54 lines
1.4 KiB
Rust
54 lines
1.4 KiB
Rust
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ParallelPhase1Config {
|
|
pub max_repo_sync_workers_global: usize,
|
|
pub max_inflight_snapshot_bytes_global: usize,
|
|
pub max_pending_repo_results: usize,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ParallelPhase2Config {
|
|
pub object_workers: usize,
|
|
pub worker_queue_capacity: usize,
|
|
}
|
|
|
|
impl Default for ParallelPhase2Config {
|
|
fn default() -> Self {
|
|
Self {
|
|
object_workers: std::thread::available_parallelism()
|
|
.map(|n| n.get().max(1))
|
|
.unwrap_or(4),
|
|
worker_queue_capacity: 256,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Default for ParallelPhase1Config {
|
|
fn default() -> Self {
|
|
Self {
|
|
max_repo_sync_workers_global: 4,
|
|
max_inflight_snapshot_bytes_global: 512 * 1024 * 1024,
|
|
max_pending_repo_results: 1024,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::{ParallelPhase1Config, ParallelPhase2Config};
|
|
|
|
#[test]
|
|
fn default_parallel_phase1_config_is_bounded() {
|
|
let cfg = ParallelPhase1Config::default();
|
|
assert!(cfg.max_repo_sync_workers_global > 0);
|
|
assert!(cfg.max_inflight_snapshot_bytes_global > 0);
|
|
assert!(cfg.max_pending_repo_results > 0);
|
|
}
|
|
|
|
#[test]
|
|
fn default_parallel_phase2_config_is_bounded() {
|
|
let cfg = ParallelPhase2Config::default();
|
|
assert!(cfg.object_workers > 0);
|
|
assert!(cfg.worker_queue_capacity > 0);
|
|
}
|
|
}
|